94 const Scalar temperature)
99 for (
int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
100 assert(FluidSystem::isIdealMixture(phaseIdx));
106 fluidState.setTemperature(temperature);
107 fluidState.setPressure(phase0Idx, phasePressure[phase0Idx]);
108 fluidState.setPressure(phase1Idx, phasePressure[phase1Idx]);
111 const Scalar k10 = FluidSystem::fugacityCoefficient(fluidState, phase0Idx, comp0Idx) * fluidState.pressure(phase0Idx)
112 / (FluidSystem::fugacityCoefficient(fluidState, phase1Idx, comp0Idx) * fluidState.pressure(phase1Idx));
113 const Scalar k11 = FluidSystem::fugacityCoefficient(fluidState, phase0Idx, comp1Idx) * fluidState.pressure(phase0Idx)
114 / (FluidSystem::fugacityCoefficient(fluidState, phase1Idx, comp1Idx) * fluidState.pressure(phase1Idx));
117 fluidState.setMoleFraction(phase0Idx, comp0Idx, ((1. - k11) / (k10 - k11)));
118 fluidState.setMoleFraction(phase1Idx, comp0Idx, (fluidState.moleFraction(phase0Idx,comp0Idx) * k10));
119 fluidState.setMoleFraction(phase0Idx, comp1Idx, 1.0 - fluidState.moleFraction(phase0Idx,comp0Idx));
120 fluidState.setMoleFraction(phase1Idx, comp1Idx, 1.0 - fluidState.moleFraction(phase1Idx,comp0Idx));
123 const Scalar K10 = fluidState.massFraction(phase1Idx, comp0Idx) / fluidState.massFraction(phase0Idx, comp0Idx);
124 const Scalar K11 = (1. - fluidState.massFraction(phase1Idx, comp0Idx)) / (1. - fluidState.massFraction(phase0Idx, comp0Idx));
127 const Scalar Nu0 = 1. + ((Z0 * (K10 - 1.)) + ((1. - Z0) * (K11 - 1.))) / ((K11 - 1.) * (K10 - 1.));
130 std::array<Scalar, 2> phaseMassFraction;
133 if (Nu0 > 0. && Nu0 < 1.)
134 phaseMassFraction[phase0Idx] = Nu0;
137 phaseMassFraction[phase0Idx] = 0.0;
138 fluidState.setMassFraction(phase1Idx,comp0Idx, Z0);
142 phaseMassFraction[phase0Idx] = 1.0;
143 fluidState.setMassFraction(phase0Idx, comp0Idx, Z0);
147 phaseMassFraction[phase1Idx] = 1.0 - phaseMassFraction[phase0Idx];
150 fluidState.setDensity(phase0Idx, FluidSystem::density(fluidState, phase0Idx));
151 fluidState.setDensity(phase1Idx, FluidSystem::density(fluidState, phase1Idx));
152 fluidState.setMolarDensity(phase0Idx, FluidSystem::molarDensity(fluidState, phase0Idx));
153 fluidState.setMolarDensity(phase1Idx, FluidSystem::molarDensity(fluidState, phase1Idx));
155 fluidState.setViscosity(phase0Idx, FluidSystem::viscosity(fluidState, phase0Idx));
156 fluidState.setViscosity(phase1Idx, FluidSystem::viscosity(fluidState, phase1Idx));
158 Scalar sw = phaseMassFraction[phase0Idx] / fluidState.density(phase0Idx);
159 sw /= (phaseMassFraction[phase0Idx] / fluidState.density(phase0Idx)
160 + phaseMassFraction[phase1Idx] / fluidState.density(phase1Idx));
161 fluidState.setSaturation(phase0Idx, sw);
162 fluidState.setSaturation(phase1Idx, 1.0-sw);
179 static void concentrationFlash1p2c(FluidState1p2c& fluidState,
const Scalar& Z0,
const Dune::FieldVector<Scalar,numPhases>
180 phasePressure,
const int presentPhaseIdx,
const Scalar& temperature)
184 fluidState.
setPressure(phase0Idx, phasePressure[phase0Idx]);
185 fluidState.
setPressure(phase1Idx, phasePressure[phase1Idx]);
191 fluidState.
setMoleFraction(presentPhaseIdx, comp0Idx, Z0 / FluidSystem::molarMass(comp0Idx)
192 / (Z0 / FluidSystem::molarMass(comp0Idx) + (1. - Z0) / FluidSystem::molarMass(comp1Idx)));
195 fluidState.
massFraction(presentPhaseIdx, comp0Idx) * FluidSystem::molarMass(comp0Idx)
196 + fluidState.
massFraction(presentPhaseIdx, comp1Idx) * FluidSystem::molarMass(comp1Idx));
198 fluidState.
setDensity(presentPhaseIdx, FluidSystem::density(fluidState, presentPhaseIdx));
199 fluidState.
setMolarDensity(presentPhaseIdx, FluidSystem::molarDensity(fluidState, presentPhaseIdx));
201 fluidState.
setViscosity(presentPhaseIdx, FluidSystem::viscosity(fluidState, presentPhaseIdx));
220 const Scalar saturation,
222 const Scalar temperature)
227 for (
int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
228 assert(FluidSystem::isIdealMixture(phaseIdx));
234 fluidState.setTemperature(temperature);
235 fluidState.setPressure(phase0Idx, phasePressure[phase0Idx]);
236 fluidState.setPressure(phase1Idx, phasePressure[phase1Idx]);
239 const Scalar k10 = FluidSystem::fugacityCoefficient(fluidState, phase0Idx, comp0Idx) * fluidState.pressure(phase0Idx)
240 / (FluidSystem::fugacityCoefficient(fluidState, phase1Idx, comp0Idx) * fluidState.pressure(phase1Idx));
241 const Scalar k11 = FluidSystem::fugacityCoefficient(fluidState, phase0Idx, comp1Idx) * fluidState.pressure(phase0Idx)
242 / (FluidSystem::fugacityCoefficient(fluidState, phase1Idx, comp1Idx) * fluidState.pressure(phase1Idx));
245 fluidState.setMoleFraction(phase0Idx,comp0Idx, ((1. - k11) / (k10 - k11)));
246 fluidState.setMoleFraction(phase1Idx,comp0Idx, (fluidState.moleFraction(phase0Idx,comp0Idx) * k10));
247 fluidState.setMoleFraction(phase0Idx, comp1Idx, 1.0 - fluidState.moleFraction(phase0Idx,comp0Idx));
248 fluidState.setMoleFraction(phase1Idx, comp1Idx, 1.0 - fluidState.moleFraction(phase1Idx,comp0Idx));
251 fluidState.setDensity(phase0Idx, FluidSystem::density(fluidState, phase0Idx));
252 fluidState.setDensity(phase1Idx, FluidSystem::density(fluidState, phase1Idx));
253 fluidState.setMolarDensity(phase0Idx, FluidSystem::molarDensity(fluidState, phase0Idx));
254 fluidState.setMolarDensity(phase1Idx, FluidSystem::molarDensity(fluidState, phase1Idx));
256 fluidState.setViscosity(phase0Idx, FluidSystem::viscosity(fluidState, phase0Idx));
257 fluidState.setViscosity(phase1Idx, FluidSystem::viscosity(fluidState, phase1Idx));
260 fluidState.setSaturation(phase0Idx, saturation);
261 fluidState.setSaturation(phase1Idx, 1.0-saturation);