@@ -1058,10 +1058,10 @@ def initialize_initial_values(self, t_zero: float):
1058
1058
1059
1059
Q_in = self .Q_in [0 ]
1060
1060
Q_out = self .Q_out [0 ]
1061
- c_feed = self .states ['inlet' ]['c' ]
1061
+ c_in = self .states ['inlet' ]['c' ]
1062
1062
1063
- n_feed_dot = Q_in * c_feed
1064
- self .state_derivatives ['inlet' ]['n_feed ' ] = n_feed_dot
1063
+ n_in_dot = Q_in * c_in
1064
+ self .state_derivatives ['inlet' ]['n ' ] = n_in_dot
1065
1065
1066
1066
rejection = np .array (
1067
1067
[
@@ -1070,62 +1070,70 @@ def initialize_initial_values(self, t_zero: float):
1070
1070
]
1071
1071
)
1072
1072
1073
- n_cake_dot = rejection * n_feed_dot
1074
- self .state_derivatives ['cake' ]['n_in' ] = n_cake_dot
1075
-
1076
- cake_vol = self .states ['cake' ]['volume' ]
1073
+ n_cake_dot = rejection * n_in_dot
1074
+ self .state_derivatives ['retentate' ]['n' ] = n_cake_dot
1075
+ self .state_derivatives ['cake' ]['n' ] = n_cake_dot
1077
1076
1078
- cake_vol_dot = molecular_weights * n_cake_dot / densities
1077
+ vol_cake_dot = np .sum (molecular_weights * n_cake_dot / densities )
1078
+ self .state_derivatives ['cake' ]['V' ] = vol_cake_dot
1079
+ self .state_derivatives ['retentate' ]['V' ] = vol_cake_dot
1079
1080
1080
- self .state_derivatives ['cake' ]['volume' ] = cake_vol_dot
1081
+ if vol_cake_dot > 1e-16 :
1082
+ self .states ['retentate' ]['c' ] = n_cake_dot / vol_cake_dot
1083
+ else :
1084
+ self .states ['retentate' ]['c' ][:] = 0.0
1081
1085
1082
- for i , cake_vol_dots in enumerate (cake_vol_dot ):
1083
- if cake_vol_dots > 1e-16 :
1084
- self .states ['cake' ]['c_in' ][i ] = n_cake_dot [i ]/ cake_vol_dots
1085
- else :
1086
- self .states ['cake' ]['c_in' ][i ] = 0.0
1086
+ vol_cake = self .states ['cake' ]['V' ]
1087
+ n_cake = self .states ['cake' ]['n' ]
1087
1088
1088
- n_permeate_dot = (1 - rejection ) * n_feed_dot
1089
- self .state_derivatives ['permeate_tank' ]['n_in' ] = n_permeate_dot
1089
+ if vol_cake > 1e-16 :
1090
+ self .states ['cake' ]['c' ] = n_cake
1091
+ else :
1092
+ self .states ['cake' ]['c' ][:] = 0
1090
1093
1094
+ n_P_dot = (1 - rejection ) * n_in_dot
1095
+ self .state_derivatives ['permeate' ]['n' ] = n_P_dot
1096
+ Q_P = np .sum (n_P_dot * molecular_weights / densities )
1091
1097
1092
- permeate_vol_dot = np . sum ( n_permeate_dot * molecular_weights / densities )
1098
+ self . state_derivatives [ 'permeate' ][ 'V' ] = Q_P
1093
1099
1094
- if permeate_vol_dot > 1e-16 :
1095
- self .states ['permeate_tank ' ]['c_in ' ] = n_permeate_dot / permeate_vol_dot
1100
+ if Q_P > 1e-16 :
1101
+ self .states ['permeate ' ]['c ' ] = n_P_dot / Q_P
1096
1102
else :
1097
- self .states ['permeate_tank ' ]['c_in ' ][:] = 0.0
1103
+ self .states ['permeate ' ]['c ' ][:] = 0.0
1098
1104
1099
- cake_resistance = \
1100
- np . sum ( specific_cake_resistance * densities * cake_vol / membrane_area )
1105
+ c_PT = self . states [ 'permeate_tank' ][ 'c' ]
1106
+ V_PT = self . states [ 'permeate_tank' ][ 'V' ]
1101
1107
1108
+ self .states ['permeate_tank' ]['n' ] = c_PT * V_PT
1102
1109
1103
- cake_resistance = \
1104
- np .sum (specific_cake_resistance * densities * cake_vol / membrane_area )
1110
+ V_PT_dot = Q_P - Q_out
1105
1111
1106
- if not np .sum (n_permeate_dot ) < 1e-16 :
1112
+ c_PT_dot = \
1113
+ (n_P_dot - Q_out * c_PT - V_PT_dot * c_PT ) / V_PT
1107
1114
1108
- fractions = n_permeate_dot / sum ( n_permeate_dot )
1115
+ self . state_derivatives [ 'permeate_tank' ][ 'c' ] = c_PT_dot
1109
1116
1110
- viscosity = \
1111
- self .viscosity_model .get_mixture_viscosity (viscosities , fractions )
1117
+ self .state_derivatives ['permeate_tank' ]['V' ] = V_PT_dot
1112
1118
1113
- self .states ['cake' ]['pressure' ] = \
1114
- viscosity * permeate_vol_dot \
1115
- * (membrane_resistance + cake_resistance ) / membrane_area
1116
- else :
1117
- self .residuals ['cake' ]['pressure' ] = 0.0
1119
+ if not np .sum (n_P_dot ) < 1e-16 :
1118
1120
1119
- c_tank = self .states ['permeate_tank' ]['c' ]
1120
- tank_volume = self .states ['permeate_tank' ]['volume' ]
1121
- tank_volume_dot = permeate_vol_dot - Q_out
1121
+ fractions = n_P_dot / sum (n_P_dot )
1122
1122
1123
- c_tank_dot = \
1124
- ( n_permeate_dot - Q_out * c_tank - tank_volume_dot * c_tank ) / tank_volume
1123
+ viscosity = \
1124
+ self . viscosity_model . get_mixture_viscosity ( viscosities , fractions )
1125
1125
1126
- self .state_derivatives ['permeate_tank' ]['c' ] = c_tank_dot
1126
+ n_C = self .states ['cake' ]['n' ]
1127
+ component_volume = n_C * molecular_weights / densities
1128
+ cake_resistance = np .sum (
1129
+ specific_cake_resistance * densities * component_volume / membrane_area
1130
+ )
1127
1131
1128
- self .state_derivatives ['permeate_tank' ]['volume' ] = tank_volume_dot
1132
+ self .states ['cake' ]['pressure' ] = \
1133
+ viscosity * Q_P * (membrane_resistance + cake_resistance )\
1134
+ / membrane_area
1135
+ else :
1136
+ self .states ['cake' ]['pressure' ] = 0
1129
1137
1130
1138
1131
1139
0 commit comments