99 if (params_.gasDissolutionFactorOutput_) {
102 if (params_.oilVaporizationFactorOutput_) {
105 if (params_.oilFormationVolumeFactorOutput_) {
108 if (params_.gasFormationVolumeFactorOutput_) {
111 if (params_.waterFormationVolumeFactorOutput_) {
114 if (params_.oilSaturationPressureOutput_) {
117 if (params_.gasSaturationPressureOutput_) {
120 if (params_.saturatedOilGasDissolutionFactorOutput_) {
123 if (params_.saturatedGasOilVaporizationFactorOutput_) {
126 if (params_.saturationRatiosOutput_) {
130 if (params_.primaryVarsMeaningOutput_) {
143 if (!Parameters::Get<Parameters::EnableVtkOutput>()) {
147 for (
unsigned dofIdx = 0; dofIdx < elemCtx.numPrimaryDof(0); ++dofIdx) {
148 const auto& fs = elemCtx.intensiveQuantities(dofIdx, 0).fluidState();
149 using FluidState =
typename std::remove_const<
typename std::remove_reference<
decltype(fs)>::type>::type;
150 unsigned globalDofIdx = elemCtx.globalSpaceIndex(dofIdx, 0);
152 const auto& primaryVars = elemCtx.primaryVars(dofIdx, 0);
154 unsigned pvtRegionIdx = elemCtx.primaryVars(dofIdx, 0).pvtRegionIndex();
156 if (FluidSystem::phaseIsActive(oilPhaseIdx))
157 SoMax = std::max(getValue(fs.saturation(oilPhaseIdx)),
158 elemCtx.problem().maxOilSaturation(globalDofIdx));
160 if (FluidSystem::phaseIsActive(gasPhaseIdx) && FluidSystem::phaseIsActive(oilPhaseIdx)) {
161 Scalar x_oG = getValue(fs.moleFraction(oilPhaseIdx, gasCompIdx));
162 Scalar x_gO = getValue(fs.moleFraction(gasPhaseIdx, oilCompIdx));
163 Scalar X_oG = getValue(fs.massFraction(oilPhaseIdx, gasCompIdx));
164 Scalar X_gO = getValue(fs.massFraction(gasPhaseIdx, oilCompIdx));
165 Scalar Rs = FluidSystem::convertXoGToRs(X_oG, pvtRegionIdx);
166 Scalar Rv = FluidSystem::convertXgOToRv(X_gO, pvtRegionIdx);
169 FluidSystem::template saturatedDissolutionFactor<FluidState, Scalar>(fs,
173 Scalar X_oG_sat = FluidSystem::convertRsToXoG(RsSat, pvtRegionIdx);
174 Scalar x_oG_sat = FluidSystem::convertXoGToxoG(X_oG_sat, pvtRegionIdx);
177 FluidSystem::template saturatedDissolutionFactor<FluidState, Scalar>(fs,
181 Scalar X_gO_sat = FluidSystem::convertRvToXgO(RvSat, pvtRegionIdx);
182 Scalar x_gO_sat = FluidSystem::convertXgOToxgO(X_gO_sat, pvtRegionIdx);
183 if (params_.gasDissolutionFactorOutput_) {
184 gasDissolutionFactor_[globalDofIdx] = Rs;
186 if (params_.oilVaporizationFactorOutput_) {
187 oilVaporizationFactor_[globalDofIdx] = Rv;
189 if (params_.oilSaturationPressureOutput_) {
190 oilSaturationPressure_[globalDofIdx] =
191 FluidSystem::template saturationPressure<FluidState, Scalar>(fs, oilPhaseIdx, pvtRegionIdx);
193 if (params_.gasSaturationPressureOutput_) {
194 gasSaturationPressure_[globalDofIdx] =
195 FluidSystem::template saturationPressure<FluidState, Scalar>(fs, gasPhaseIdx, pvtRegionIdx);
197 if (params_.saturatedOilGasDissolutionFactorOutput_) {
198 saturatedOilGasDissolutionFactor_[globalDofIdx] = RsSat;
200 if (params_.saturatedGasOilVaporizationFactorOutput_) {
201 saturatedGasOilVaporizationFactor_[globalDofIdx] = RvSat;
203 if (params_.saturationRatiosOutput_) {
204 if (x_oG_sat <= 0.0) {
205 oilSaturationRatio_[globalDofIdx] = 1.0;
208 oilSaturationRatio_[globalDofIdx] = x_oG / x_oG_sat;
211 if (x_gO_sat <= 0.0) {
212 gasSaturationRatio_[globalDofIdx] = 1.0;
215 gasSaturationRatio_[globalDofIdx] = x_gO / x_gO_sat;
219 if (params_.oilFormationVolumeFactorOutput_) {
220 oilFormationVolumeFactor_[globalDofIdx] =
221 1.0 / FluidSystem::template inverseFormationVolumeFactor<FluidState, Scalar>(fs, oilPhaseIdx, pvtRegionIdx);
223 if (params_.gasFormationVolumeFactorOutput_) {
224 gasFormationVolumeFactor_[globalDofIdx] =
225 1.0 / FluidSystem::template inverseFormationVolumeFactor<FluidState, Scalar>(fs, gasPhaseIdx, pvtRegionIdx);
227 if (params_.waterFormationVolumeFactorOutput_) {
228 waterFormationVolumeFactor_[globalDofIdx] =
229 1.0 / FluidSystem::template inverseFormationVolumeFactor<FluidState, Scalar>(fs, waterPhaseIdx, pvtRegionIdx);
232 if (params_.primaryVarsMeaningOutput_) {
233 primaryVarsMeaningWater_[globalDofIdx] =
234 static_cast<int>(primaryVars.primaryVarsMeaningWater());
235 primaryVarsMeaningGas_[globalDofIdx] =
236 static_cast<int>(primaryVars.primaryVarsMeaningGas());
237 primaryVarsMeaningPressure_[globalDofIdx] =
238 static_cast<int>(primaryVars.primaryVarsMeaningPressure());
253 if (params_.gasDissolutionFactorOutput_) {
256 if (params_.oilVaporizationFactorOutput_) {
259 if (params_.oilFormationVolumeFactorOutput_) {
262 if (params_.gasFormationVolumeFactorOutput_) {
265 if (params_.waterFormationVolumeFactorOutput_) {
268 if (params_.oilSaturationPressureOutput_) {
271 if (params_.gasSaturationPressureOutput_) {
274 if (params_.saturatedOilGasDissolutionFactorOutput_) {
277 if (params_.saturatedGasOilVaporizationFactorOutput_) {
280 if (params_.saturationRatiosOutput_) {
285 if (params_.primaryVarsMeaningOutput_) {
286 this->
commitScalarBuffer_(baseWriter,
"primary vars meaning water", primaryVarsMeaningWater_);
288 this->
commitScalarBuffer_(baseWriter,
"primary vars meaning pressure", primaryVarsMeaningPressure_);