1
1
/*
2
- * CPAMixing .java
2
+ * CPAMixingRuleHandler .java
3
3
*
4
4
* Created on 4. juni 2000, 12:38
5
5
*/
8
8
9
9
import org .apache .logging .log4j .LogManager ;
10
10
import org .apache .logging .log4j .Logger ;
11
- import neqsim .thermo .ThermodynamicConstantsInterface ;
12
11
import neqsim .thermo .component .ComponentEosInterface ;
13
12
import neqsim .thermo .component .ComponentSrkCPA ;
14
13
import neqsim .thermo .phase .PhaseCPAInterface ;
23
22
* @author Even Solbraa
24
23
* @version $Id: $Id
25
24
*/
26
- public class CPAMixingRules implements Cloneable , ThermodynamicConstantsInterface {
25
+ public class CPAMixingRuleHandler extends MixingRuleHandler {
27
26
/** Serialization version UID. */
28
27
private static final long serialVersionUID = 1000 ;
29
28
/** Logger object for class. */
30
- static Logger logger = LogManager .getLogger (CPAMixingRules .class );
31
-
32
- /** Name of mixing rule. */
33
- private String mixingRuleName = "CPA_Radoch" ;
29
+ static Logger logger = LogManager .getLogger (CPAMixingRuleHandler .class );
34
30
35
31
int [][] assosSchemeType = null ; // 0- ER - 1 - CR1
36
32
double [][] cpaBetaCross = null ;
@@ -45,14 +41,135 @@ public class CPAMixingRules implements Cloneable, ThermodynamicConstantsInterfac
45
41
* Constructor for CPAMixingRules.
46
42
* </p>
47
43
*/
48
- public CPAMixingRules () {}
44
+ public CPAMixingRuleHandler () {
45
+ this .mixingRuleName = "CPA_Radoch" ;
46
+ }
47
+
48
+ /**
49
+ * <p>
50
+ * getMixingRule.
51
+ * </p>
52
+ *
53
+ * @param mr a int
54
+ * @return a {@link neqsim.thermo.mixingrule.CPAMixingRulesInterface} object
55
+ */
56
+ public CPAMixingRulesInterface getMixingRule (MixingRuleTypeInterface mr ) {
57
+ if (!CPAMixingRuleType .class .isInstance (mr )) {
58
+ throw new RuntimeException (
59
+ new neqsim .util .exception .InvalidInputException (this , "setMixingRule" , "mr" ));
60
+ }
61
+ CPAMixingRuleType cmr = (CPAMixingRuleType ) mr ;
62
+ switch (cmr ) {
63
+ case CPA_RADOCH :
64
+ mixingRuleName = "CPA_Radoch" ;
65
+ return new CPA_Radoch ();
66
+ case PCSAFTA_RADOCH :
67
+ mixingRuleName = "PCSAFTa_Radoch" ;
68
+ return new PCSAFTa_Radoch ();
69
+ default :
70
+ return new CPA_Radoch ();
71
+ }
72
+ }
73
+
74
+ /**
75
+ * <p>
76
+ * getMixingRule.
77
+ * </p>
78
+ *
79
+ * @param mr a int
80
+ * @return a {@link neqsim.thermo.mixingrule.CPAMixingRulesInterface} object
81
+ */
82
+ public CPAMixingRulesInterface getMixingRule (int mr ) {
83
+ if (mr == 1 ) {
84
+ mixingRuleName = "CPA_Radoch" ;
85
+ return new CPA_Radoch ();
86
+ } else if (mr == 3 ) {
87
+ mixingRuleName = "PCSAFTa_Radoch" ;
88
+ return new PCSAFTa_Radoch ();
89
+ }
90
+ throw new RuntimeException (
91
+ new neqsim .util .exception .InvalidInputException (this , "getMixingRule" , "mr" ));
92
+ }
93
+
94
+
95
+ /**
96
+ * <p>
97
+ * getMixingRule.
98
+ * </p>
99
+ *
100
+ * @param mr a int
101
+ * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object
102
+ * @return a {@link neqsim.thermo.mixingrule.CPAMixingRulesInterface} object
103
+ */
104
+ public CPAMixingRulesInterface getMixingRule (int mr , PhaseInterface phase ) {
105
+ assosSchemeType = new int [phase .getNumberOfComponents ()][phase .getNumberOfComponents ()];
106
+ cpaBetaCross = new double [phase .getNumberOfComponents ()][phase .getNumberOfComponents ()];
107
+ cpaEpsCross = new double [phase .getNumberOfComponents ()][phase .getNumberOfComponents ()];
108
+
109
+ for (int k = 0 ; k < phase .getNumberOfComponents (); k ++) {
110
+ String component_name = phase .getComponent (k ).getComponentName ();
111
+ java .sql .ResultSet dataSet = null ;
112
+
113
+ for (int l = k ; l < phase .getNumberOfComponents (); l ++) {
114
+ if (k == l || phase .getComponent (l ).getNumberOfAssociationSites () == 0
115
+ || phase .getComponent (k ).getNumberOfAssociationSites () == 0 ) {
116
+ } else {
117
+ try (neqsim .util .database .NeqSimDataBase database =
118
+ new neqsim .util .database .NeqSimDataBase ()) {
119
+ // database = new util.database.NeqSimDataBase();
120
+ if (NeqSimDataBase .createTemporaryTables ()) {
121
+ dataSet = database .getResultSet ("SELECT * FROM intertemp WHERE (comp1='"
122
+ + component_name + "' AND comp2='" + phase .getComponent (l ).getComponentName ()
123
+ + "') OR (comp1='" + phase .getComponent (l ).getComponentName () + "' AND comp2='"
124
+ + component_name + "')" );
125
+ } else {
126
+ dataSet = database .getResultSet ("SELECT * FROM inter WHERE (comp1='" + component_name
127
+ + "' AND comp2='" + phase .getComponent (l ).getComponentName () + "') OR (comp1='"
128
+ + phase .getComponent (l ).getComponentName () + "' AND comp2='" + component_name
129
+ + "')" );
130
+ }
131
+ if (dataSet .next ()) {
132
+ assosSchemeType [k ][l ] =
133
+ Integer .parseInt (dataSet .getString ("cpaAssosiationType" ).trim ());
134
+ assosSchemeType [l ][k ] = assosSchemeType [k ][l ];
135
+
136
+ cpaBetaCross [k ][l ] = Double .parseDouble (dataSet .getString ("cpaBetaCross" ).trim ());
137
+ cpaBetaCross [l ][k ] = cpaBetaCross [k ][l ];
138
+
139
+ cpaEpsCross [k ][l ] = Double .parseDouble (dataSet .getString ("cpaEpsCross" ).trim ());
140
+ cpaEpsCross [l ][k ] = cpaEpsCross [k ][l ];
141
+ }
142
+ // System.out.println("ass scheme " + assosSchemeType[l][k]);
143
+ // System.out.println("cpaEpsCross[k][l] " + cpaEpsCross[k][l]);
144
+ } catch (Exception ex ) {
145
+ logger .error (ex .getMessage (), ex );
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ return getMixingRule (mr );
152
+ }
153
+
154
+ /**
155
+ * <p>
156
+ * resetMixingRule.
157
+ * </p>
158
+ *
159
+ * @param i a int
160
+ * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object
161
+ * @return a {@link neqsim.thermo.mixingrule.CPAMixingRulesInterface} object
162
+ */
163
+ public MixingRulesInterface resetMixingRule (int i , PhaseInterface phase ) {
164
+ return getMixingRule (i );
165
+ }
49
166
50
167
/** {@inheritDoc} */
51
168
@ Override
52
- public CPAMixingRules clone () {
53
- CPAMixingRules clonedSystem = null ;
169
+ public CPAMixingRuleHandler clone () {
170
+ CPAMixingRuleHandler clonedSystem = null ;
54
171
try {
55
- clonedSystem = (CPAMixingRules ) super .clone ();
172
+ clonedSystem = (CPAMixingRuleHandler ) super .clone ();
56
173
} catch (Exception ex ) {
57
174
logger .error ("Cloning failed." , ex );
58
175
}
@@ -598,131 +715,12 @@ public double calcDelta(int siteNumber1, int siteNumber2, int compnumb1, int com
598
715
phase , temperature , pressure , numbcomp ) / (R * phase .getTemperature ())) - 1.0 )
599
716
* Math .pow ((phase .getComponent (compnumb1 ).getSigmaSAFTi ()
600
717
+ phase .getComponent (compnumb2 ).getSigmaSAFTi ()) / 2.0 , 3.0 )
601
- * 1.0e5 * ThermodynamicConstantsInterface .avagadroNumber
602
- * getCrossAssociationVolume (siteNumber1 , siteNumber2 , compnumb1 , compnumb2 , phase ,
603
- temperature , pressure , numbcomp )
718
+ * 1.0e5 * avagadroNumber * getCrossAssociationVolume (siteNumber1 , siteNumber2 , compnumb1 ,
719
+ compnumb2 , phase , temperature , pressure , numbcomp )
604
720
* ((PhaseCPAInterface ) phase ).getGcpa ();
605
721
}
606
722
}
607
723
608
- /**
609
- * <p>
610
- * getMixingRule.
611
- * </p>
612
- *
613
- * @param mr a int
614
- * @return a {@link neqsim.thermo.mixingrule.CPAMixingRulesInterface} object
615
- */
616
- public CPAMixingRulesInterface getMixingRule (int mr ) {
617
- if (mr == 1 ) {
618
- mixingRuleName = "CPA_Radoch" ;
619
- return new CPA_Radoch ();
620
- } else if (mr == 3 ) {
621
- mixingRuleName = "PCSAFTa_Radoch" ;
622
- return new PCSAFTa_Radoch ();
623
- }
624
- throw new RuntimeException (
625
- new neqsim .util .exception .InvalidInputException (this , "getMixingRule" , "mr" ));
626
- }
627
-
628
- /**
629
- * <p>
630
- * getMixingRule.
631
- * </p>
632
- *
633
- * @param mr a int
634
- * @return a {@link neqsim.thermo.mixingrule.CPAMixingRulesInterface} object
635
- */
636
- public CPAMixingRulesInterface getMixingRule (MixingRuleTypeInterface mr ) {
637
- if (!CPAMixingRuleType .class .isInstance (mr )) {
638
- throw new RuntimeException (
639
- new neqsim .util .exception .InvalidInputException (this , "setMixingRule" , "mr" ));
640
- }
641
- CPAMixingRuleType cmr = (CPAMixingRuleType ) mr ;
642
- switch (cmr ) {
643
- case CPA_RADOCH :
644
- mixingRuleName = "CPA_Radoch" ;
645
- return new CPA_Radoch ();
646
- case PCSAFTA_RADOCH :
647
- mixingRuleName = "PCSAFTa_Radoch" ;
648
- return new PCSAFTa_Radoch ();
649
- default :
650
- return new CPA_Radoch ();
651
- }
652
- }
653
-
654
- /**
655
- * <p>
656
- * getMixingRule.
657
- * </p>
658
- *
659
- * @param mr a int
660
- * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object
661
- * @return a {@link neqsim.thermo.mixingrule.CPAMixingRulesInterface} object
662
- */
663
- public CPAMixingRulesInterface getMixingRule (int mr , PhaseInterface phase ) {
664
- assosSchemeType = new int [phase .getNumberOfComponents ()][phase .getNumberOfComponents ()];
665
- cpaBetaCross = new double [phase .getNumberOfComponents ()][phase .getNumberOfComponents ()];
666
- cpaEpsCross = new double [phase .getNumberOfComponents ()][phase .getNumberOfComponents ()];
667
-
668
- for (int k = 0 ; k < phase .getNumberOfComponents (); k ++) {
669
- String component_name = phase .getComponent (k ).getComponentName ();
670
- java .sql .ResultSet dataSet = null ;
671
-
672
- for (int l = k ; l < phase .getNumberOfComponents (); l ++) {
673
- if (k == l || phase .getComponent (l ).getNumberOfAssociationSites () == 0
674
- || phase .getComponent (k ).getNumberOfAssociationSites () == 0 ) {
675
- } else {
676
- try (neqsim .util .database .NeqSimDataBase database =
677
- new neqsim .util .database .NeqSimDataBase ()) {
678
- // database = new util.database.NeqSimDataBase();
679
- if (NeqSimDataBase .createTemporaryTables ()) {
680
- dataSet = database .getResultSet ("SELECT * FROM intertemp WHERE (comp1='"
681
- + component_name + "' AND comp2='" + phase .getComponent (l ).getComponentName ()
682
- + "') OR (comp1='" + phase .getComponent (l ).getComponentName () + "' AND comp2='"
683
- + component_name + "')" );
684
- } else {
685
- dataSet = database .getResultSet ("SELECT * FROM inter WHERE (comp1='" + component_name
686
- + "' AND comp2='" + phase .getComponent (l ).getComponentName () + "') OR (comp1='"
687
- + phase .getComponent (l ).getComponentName () + "' AND comp2='" + component_name
688
- + "')" );
689
- }
690
- if (dataSet .next ()) {
691
- assosSchemeType [k ][l ] =
692
- Integer .parseInt (dataSet .getString ("cpaAssosiationType" ).trim ());
693
- assosSchemeType [l ][k ] = assosSchemeType [k ][l ];
694
-
695
- cpaBetaCross [k ][l ] = Double .parseDouble (dataSet .getString ("cpaBetaCross" ).trim ());
696
- cpaBetaCross [l ][k ] = cpaBetaCross [k ][l ];
697
-
698
- cpaEpsCross [k ][l ] = Double .parseDouble (dataSet .getString ("cpaEpsCross" ).trim ());
699
- cpaEpsCross [l ][k ] = cpaEpsCross [k ][l ];
700
- }
701
- // System.out.println("ass scheme " + assosSchemeType[l][k]);
702
- // System.out.println("cpaEpsCross[k][l] " + cpaEpsCross[k][l]);
703
- } catch (Exception ex ) {
704
- logger .error (ex .getMessage (), ex );
705
- }
706
- }
707
- }
708
- }
709
-
710
- return getMixingRule (mr );
711
- }
712
-
713
- /**
714
- * <p>
715
- * resetMixingRule.
716
- * </p>
717
- *
718
- * @param i a int
719
- * @param phase a {@link neqsim.thermo.phase.PhaseInterface} object
720
- * @return a {@link neqsim.thermo.mixingrule.CPAMixingRulesInterface} object
721
- */
722
- public CPAMixingRulesInterface resetMixingRule (int i , PhaseInterface phase ) {
723
- return getMixingRule (i );
724
- }
725
-
726
724
/**
727
725
* <p>
728
726
* setAssociationScheme.
0 commit comments