From eb53f9bdf0d9fb4b971b02254e2d269a2c51b7e3 Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Fri, 12 Jun 2015 09:52:17 +0100 Subject: [PATCH] reactingTwoPhaseEulerFoam: New twoPhaseEulerFoam supporting mass-transfer and reactions Multi-species, mass-transfer and reaction support and multi-phase structure provided by William Bainbridge. Integration of the latest p-U and face-p_U algorithms with William's multi-phase structure is not quite complete due to design incompatibilities which needs further development. However the integration of the functionality is complete. The results of the tutorials are not exactly the same for the twoPhaseEulerFoam and reactingTwoPhaseEulerFoam solvers but are very similar. Further analysis in needed to ensure these differences are physical or to resolve them; in the meantime the twoPhaseEulerFoam solver will be maintained. --- .../reactingTwoPhaseEulerFoam/Allwclean | 11 + .../reactingTwoPhaseEulerFoam/Allwmake | 13 + .../reactingTwoPhaseEulerFoam/CourantNo.H | 51 + .../reactingTwoPhaseEulerFoam/CourantNos.H | 12 + .../reactingTwoPhaseEulerFoam/EEqns.H | 47 + .../reactingTwoPhaseEulerFoam/Make/files | 3 + .../reactingTwoPhaseEulerFoam/Make/options | 24 + .../reactingTwoPhaseEulerFoam/YEqns.H | 50 + .../correctContErrs.H | 7 + .../reactingTwoPhaseEulerFoam/createFields.H | 73 + .../reactingTwoPhaseEulerFoam/createMRF.H | 3 + .../generatePairsAndSubModels | 0 .../interfacialCompositionModels/Make/files | 20 + .../interfacialCompositionModels/Make/options | 27 + .../interfaceCompositionModels/Henry/Henry.C | 144 + .../interfaceCompositionModels/Henry/Henry.H | 129 + .../InterfaceCompositionModel.C | 248 + .../InterfaceCompositionModel.H | 216 + .../InterfaceCompositionModels.C | 155 + .../NonRandomTwoLiquid/NonRandomTwoLiquid.C | 274 + .../NonRandomTwoLiquid/NonRandomTwoLiquid.H | 167 + .../Raoult/Raoult.C | 162 + .../Raoult/Raoult.H | 130 + .../Saturated/Saturated.C | 156 + .../Saturated/Saturated.H | 137 + .../interfaceCompositionModel.C | 80 + .../interfaceCompositionModel.H | 182 + .../newInterfaceCompositionModel.C | 69 + .../massTransferModels/Frossling/Frossling.C | 72 + .../massTransferModels/Frossling/Frossling.H | 103 + .../massTransferModel/massTransferModel.C | 58 + .../massTransferModel/massTransferModel.H | 128 + .../massTransferModel/newMassTransferModel.C | 59 + .../sphericalMassTransfer.C | 75 + .../sphericalMassTransfer.H | 103 + .../Antoine/Antoine.C | 92 + .../Antoine/Antoine.H | 113 + .../AntoineExtended/AntoineExtended.C | 105 + .../AntoineExtended/AntoineExtended.H | 115 + .../ArdenBuck/ArdenBuck.C | 112 + .../ArdenBuck/ArdenBuck.H | 100 + .../newSaturationPressureModel.C | 57 + .../saturationPressureModel.C | 49 + .../saturationPressureModel.H | 127 + .../constantSurfaceTensionCoefficient.C | 96 + .../constantSurfaceTensionCoefficient.H | 98 + .../newSurfaceTensionModel.C | 60 + .../surfaceTensionModel/surfaceTensionModel.C | 79 + .../surfaceTensionModel/surfaceTensionModel.H | 134 + .../interfacialModels/Make/files | 64 + .../interfacialModels/Make/options | 16 + .../TomiyamaAspectRatio/TomiyamaAspectRatio.C | 81 + .../TomiyamaAspectRatio/TomiyamaAspectRatio.H | 101 + .../VakhrushevEfremov/VakhrushevEfremov.C | 80 + .../VakhrushevEfremov/VakhrushevEfremov.H | 100 + .../aspectRatioModels/Wellek/Wellek.C | 74 + .../aspectRatioModels/Wellek/Wellek.H | 106 + .../aspectRatioModel/aspectRatioModel.C | 56 + .../aspectRatioModel/aspectRatioModel.H | 121 + .../aspectRatioModel/newAspectRatioModel.C | 60 + .../constantAspectRatio/constantAspectRatio.C | 91 + .../constantAspectRatio/constantAspectRatio.H | 97 + .../dragModels/Ergun/Ergun.C | 80 + .../dragModels/Ergun/Ergun.H | 98 + .../dragModels/Gibilaro/Gibilaro.C | 78 + .../dragModels/Gibilaro/Gibilaro.H | 98 + .../GidaspowErgunWenYu/GidaspowErgunWenYu.C | 92 + .../GidaspowErgunWenYu/GidaspowErgunWenYu.H | 114 + .../GidaspowSchillerNaumann.C | 87 + .../GidaspowSchillerNaumann.H | 115 + .../dragModels/IshiiZuber/IshiiZuber.C | 101 + .../dragModels/IshiiZuber/IshiiZuber.H | 105 + .../interfacialModels/dragModels/Lain/Lain.C | 75 + .../interfacialModels/dragModels/Lain/Lain.H | 111 + .../SchillerNaumann/SchillerNaumann.C | 74 + .../SchillerNaumann/SchillerNaumann.H | 101 + .../dragModels/SyamlalOBrien/SyamlalOBrien.C | 93 + .../dragModels/SyamlalOBrien/SyamlalOBrien.H | 97 + .../TomiyamaAnalytic/TomiyamaAnalytic.C | 89 + .../TomiyamaAnalytic/TomiyamaAnalytic.H | 116 + .../TomiyamaCorrelated/TomiyamaCorrelated.C | 85 + .../TomiyamaCorrelated/TomiyamaCorrelated.H | 110 + .../dragModels/WenYu/WenYu.C | 85 + .../dragModels/WenYu/WenYu.H | 109 + .../dragModels/dragModel/dragModel.C | 140 + .../dragModels/dragModel/dragModel.H | 162 + .../dragModels/dragModel/newDragModel.C | 59 + .../dragModels/segregated/segregated.C | 157 + .../dragModels/segregated/segregated.H | 117 + .../RanzMarshall/RanzMarshall.C | 76 + .../RanzMarshall/RanzMarshall.H | 95 + .../heatTransferModel/heatTransferModel.C | 68 + .../heatTransferModel/heatTransferModel.H | 132 + .../heatTransferModel/newHeatTransferModel.C | 59 + .../sphericalHeatTransfer.C | 78 + .../sphericalHeatTransfer.H | 95 + .../LegendreMagnaudet/LegendreMagnaudet.C | 98 + .../LegendreMagnaudet/LegendreMagnaudet.H | 116 + .../liftModels/Moraga/Moraga.C | 101 + .../liftModels/Moraga/Moraga.H | 109 + .../liftModels/TomiyamaLift/TomiyamaLift.C | 78 + .../liftModels/TomiyamaLift/TomiyamaLift.H | 106 + .../constantLiftCoefficient.C | 86 + .../constantLiftCoefficient.H | 100 + .../liftModels/liftModel/liftModel.C | 89 + .../liftModels/liftModel/liftModel.H | 137 + .../liftModels/liftModel/newLiftModel.C | 59 + .../liftModels/noLift/noLift.C | 134 + .../liftModels/noLift/noLift.H | 99 + .../TomiyamaSwarm/TomiyamaSwarm.C | 86 + .../TomiyamaSwarm/TomiyamaSwarm.H | 109 + .../swarmCorrections/noSwarm/noSwarm.C | 84 + .../swarmCorrections/noSwarm/noSwarm.H | 93 + .../swarmCorrection/newSwarmCorrection.C | 60 + .../swarmCorrection/swarmCorrection.C | 56 + .../swarmCorrection/swarmCorrection.H | 121 + .../turbulentDispersionModels/Burns/Burns.C | 108 + .../turbulentDispersionModels/Burns/Burns.H | 121 + .../turbulentDispersionModels/Gosman/Gosman.C | 98 + .../turbulentDispersionModels/Gosman/Gosman.H | 110 + .../LopezDeBertodano/LopezDeBertodano.C | 79 + .../LopezDeBertodano/LopezDeBertodano.H | 116 + .../constantTurbulentDispersionCoefficient.C | 83 + .../constantTurbulentDispersionCoefficient.H | 101 + .../noTurbulentDispersion.C | 116 + .../noTurbulentDispersion.H | 97 + .../newTurbulentDispersionModel.C | 60 + .../turbulentDispersionModel.C | 69 + .../turbulentDispersionModel.H | 134 + .../virtualMassModels/Lamb/Lamb.C | 79 + .../virtualMassModels/Lamb/Lamb.H | 102 + .../constantVirtualMassCoefficient.C | 96 + .../constantVirtualMassCoefficient.H | 101 + .../noVirtualMass/noVirtualMass.C | 93 + .../noVirtualMass/noVirtualMass.H | 97 + .../virtualMassModel/newVirtualMassModel.C | 59 + .../virtualMassModel/virtualMassModel.C | 99 + .../virtualMassModel/virtualMassModel.H | 151 + .../wallDependentModel/wallDependentModel.C | 57 + .../wallDependentModel/wallDependentModel.H | 97 + .../wallLubricationModels/Antal/Antal.C | 87 + .../wallLubricationModels/Antal/Antal.H | 112 + .../wallLubricationModels/Frank/Frank.C | 97 + .../wallLubricationModels/Frank/Frank.H | 122 + .../TomiyamaWallLubrication.C | 96 + .../TomiyamaWallLubrication.H | 115 + .../noWallLubrication/noWallLubrication.C | 117 + .../noWallLubrication/noWallLubrication.H | 96 + .../newWallLubricationModel.C | 59 + .../wallLubricationModel.C | 78 + .../wallLubricationModel.H | 137 + .../reactingTwoPhaseEulerFoam/pU/UEqns.H | 63 + .../reactingTwoPhaseEulerFoam/pU/pEqn.H | 398 ++ .../reactingTwoPhaseEulerFoam/pUf/DDtU.H | 9 + .../reactingTwoPhaseEulerFoam/pUf/UEqns.H | 51 + .../pUf/createDDtU.H | 9 + .../reactingTwoPhaseEulerFoam/pUf/pEqn.H | 348 + .../Make/files | 38 + .../Make/options | 11 + .../kOmegaSSTSato/kOmegaSSTSato.C | 172 + .../kOmegaSSTSato/kOmegaSSTSato.H | 217 + .../Gidaspow/GidaspowConductivity.C | 93 + .../Gidaspow/GidaspowConductivity.H | 97 + .../HrenyaSinclairConductivity.C | 114 + .../HrenyaSinclairConductivity.H | 104 + .../Syamlal/SyamlalConductivity.C | 93 + .../Syamlal/SyamlalConductivity.H | 97 + .../conductivityModel/conductivityModel.C | 58 + .../conductivityModel/conductivityModel.H | 133 + .../conductivityModel/newConductivityModel.C | 59 + ...sonJacksonParticleSlipFvPatchVectorField.C | 254 + ...sonJacksonParticleSlipFvPatchVectorField.H | 177 + ...onJacksonParticleThetaFvPatchScalarField.C | 316 + ...onJacksonParticleThetaFvPatchScalarField.H | 179 + .../JohnsonJacksonFrictionalStress.C | 144 + .../JohnsonJacksonFrictionalStress.H | 130 + .../Schaeffer/SchaefferFrictionalStress.C | 170 + .../Schaeffer/SchaefferFrictionalStress.H | 118 + .../frictionalStressModel.C | 58 + .../frictionalStressModel.H | 143 + .../newFrictionalStressModel.C | 60 + .../granularPressureModel/Lun/LunPressure.C | 98 + .../granularPressureModel/Lun/LunPressure.H | 104 + .../SyamlalRogersOBrienPressure.C | 101 + .../SyamlalRogersOBrienPressure.H | 104 + .../granularPressureModel.C | 58 + .../granularPressureModel.H | 142 + .../newGranularPressureModel.C | 60 + .../kineticTheoryModel/kineticTheoryModel.C | 540 ++ .../kineticTheoryModel/kineticTheoryModel.H | 230 + .../CarnahanStarling/CarnahanStarlingRadial.C | 100 + .../CarnahanStarling/CarnahanStarlingRadial.H | 102 + .../radialModel/LunSavage/LunSavageRadial.C | 94 + .../radialModel/LunSavage/LunSavageRadial.H | 101 + .../SinclairJackson/SinclairJacksonRadial.C | 98 + .../SinclairJackson/SinclairJacksonRadial.H | 101 + .../radialModel/radialModel/newRadialModel.C | 60 + .../radialModel/radialModel/radialModel.C | 58 + .../radialModel/radialModel/radialModel.H | 139 + .../Gidaspow/GidaspowViscosity.C | 87 + .../Gidaspow/GidaspowViscosity.H | 96 + .../HrenyaSinclair/HrenyaSinclairViscosity.C | 111 + .../HrenyaSinclair/HrenyaSinclairViscosity.H | 106 + .../viscosityModel/Syamlal/SyamlalViscosity.C | 86 + .../viscosityModel/Syamlal/SyamlalViscosity.H | 97 + .../viscosityModel/none/noneViscosity.C | 75 + .../viscosityModel/none/noneViscosity.H | 94 + .../viscosityModel/newViscosityModel.C | 59 + .../viscosityModel/viscosityModel.C | 57 + .../viscosityModel/viscosityModel.H | 135 + .../phaseCompressibleTurbulenceModels.C | 94 + .../phasePressureModel/phasePressureModel.C | 254 + .../phasePressureModel/phasePressureModel.H | 191 + .../BlendedInterfacialModel.C | 485 ++ .../BlendedInterfacialModel.H | 168 + .../blendingMethod/blendingMethod.C | 52 + .../blendingMethod/blendingMethod.H | 120 + .../blendingMethod/newBlendingMethod.C | 58 + .../blendingMethods/hyperbolic/hyperbolic.C | 124 + .../blendingMethods/hyperbolic/hyperbolic.H | 110 + .../blendingMethods/linear/linear.C | 170 + .../blendingMethods/linear/linear.H | 112 + .../blendingMethods/noBlending/noBlending.C | 129 + .../blendingMethods/noBlending/noBlending.H | 107 + .../phaseSystems/Make/files | 32 + .../phaseSystems/Make/options | 18 + .../HeatAndMassTransferPhaseSystem.C | 571 ++ .../HeatAndMassTransferPhaseSystem.H | 180 + .../HeatTransferPhaseSystem.C | 177 + .../HeatTransferPhaseSystem.H | 125 + .../MomentumTransferPhaseSystem.C | 533 ++ .../MomentumTransferPhaseSystem.H | 198 + .../phaseSystems/diameterModels/IATE/IATE.C | 205 + .../phaseSystems/diameterModels/IATE/IATE.H | 155 + .../IATE/IATEsources/IATEsource/IATEsource.C | 148 + .../IATE/IATEsources/IATEsource/IATEsource.H | 193 + .../IATE/IATEsources/dummy/dummy.C | 66 + .../IATE/IATEsources/dummy/dummy.H | 96 + .../randomCoalescence/randomCoalescence.C | 109 + .../randomCoalescence/randomCoalescence.H | 106 + .../turbulentBreakUp/turbulentBreakUp.C | 104 + .../turbulentBreakUp/turbulentBreakUp.H | 104 + .../wakeEntrainmentCoalescence.C | 72 + .../wakeEntrainmentCoalescence.H | 103 + .../constantDiameter/constantDiameter.C | 97 + .../constantDiameter/constantDiameter.H | 100 + .../diameterModel/diameterModel.C | 70 + .../diameterModel/diameterModel.H | 139 + .../diameterModel/newDiameterModel.C | 63 + .../isothermalDiameter/isothermalDiameter.C | 91 + .../isothermalDiameter/isothermalDiameter.H | 103 + .../AnisothermalPhaseModel.C | 123 + .../AnisothermalPhaseModel.H | 99 + .../InertPhaseModel/InertPhaseModel.C | 87 + .../InertPhaseModel/InertPhaseModel.H | 95 + .../IsothermalPhaseModel.C | 64 + .../IsothermalPhaseModel.H | 91 + .../MovingPhaseModel/MovingPhaseModel.C | 361 + .../MovingPhaseModel/MovingPhaseModel.H | 189 + .../MultiComponentPhaseModel.C | 190 + .../MultiComponentPhaseModel.H | 117 + .../PurePhaseModel/PurePhaseModel.C | 86 + .../PurePhaseModel/PurePhaseModel.H | 104 + .../ReactingPhaseModel/ReactingPhaseModel.C | 108 + .../ReactingPhaseModel/ReactingPhaseModel.H | 108 + .../ThermoPhaseModel/ThermoPhaseModel.C | 158 + .../ThermoPhaseModel/ThermoPhaseModel.H | 138 + .../phaseModel/phaseModel/newPhaseModel.C | 58 + .../phaseModel/phaseModel/phaseModel.C | 137 + .../phaseModel/phaseModel/phaseModel.H | 258 + .../phaseModel/phaseModel/phaseModels.C | 145 + .../orderedPhasePair/orderedPhasePair.C | 88 + .../orderedPhasePair/orderedPhasePair.H | 106 + .../phasePair/phasePair/phasePair.C | 202 + .../phasePair/phasePair/phasePair.H | 176 + .../phasePair/phasePair/phasePairI.H | 46 + .../phasePair/phasePairKey/phasePairKey.C | 172 + .../phasePair/phasePairKey/phasePairKey.H | 130 + .../phaseSystems/phaseSystem/phaseSystem.C | 370 + .../phaseSystems/phaseSystem/phaseSystem.H | 407 ++ .../phaseSystems/phaseSystem/phaseSystemI.H | 70 + .../phaseSystem/phaseSystemTemplates.H | 210 + .../twoPhaseSystem/newTwoPhaseSystem.C | 70 + .../twoPhaseSystem/twoPhaseSystem.C | 378 ++ .../twoPhaseSystem/twoPhaseSystem.H | 194 + .../twoPhaseSystem/twoPhaseSystemI.H | 74 + .../twoPhaseSystem/twoPhaseSystems.C | 69 + .../reactingTwoPhaseEulerFoam.C | 136 + .../reactingTwoPhaseEulerFoam/write.H | 17 + .../LES/bubbleColumn/0/T.air | 45 + .../LES/bubbleColumn/0/T.water | 45 + .../LES/bubbleColumn/0/Theta | 47 + .../LES/bubbleColumn/0/U.air | 41 + .../LES/bubbleColumn/0/U.water | 41 + .../LES/bubbleColumn/0/alpha.air | 1926 ++++++ .../LES/bubbleColumn/0/alpha.air.org | 42 + .../LES/bubbleColumn/0/epsilon.air | 49 + .../LES/bubbleColumn/0/epsilon.water | 49 + .../LES/bubbleColumn/0/k.air | 49 + .../LES/bubbleColumn/0/k.water | 49 + .../LES/bubbleColumn/0/nut.air | 47 + .../LES/bubbleColumn/0/nut.water | 47 + .../LES/bubbleColumn/0/p | 40 + .../LES/bubbleColumn/0/p_rgh | 40 + .../LES/bubbleColumn/constant/g | 22 + .../LES/bubbleColumn/constant/phaseProperties | 163 + .../bubbleColumn/constant/polyMesh/boundary | 48 + .../constant/thermophysicalProperties.air | 49 + .../constant/thermophysicalProperties.water | 54 + .../constant/turbulenceProperties.air | 34 + .../constant/turbulenceProperties.water | 34 + .../LES/bubbleColumn/system/blockMeshDict | 61 + .../LES/bubbleColumn/system/controlDict | 95 + .../LES/bubbleColumn/system/fvSchemes | 68 + .../LES/bubbleColumn/system/fvSolution | 91 + .../LES/bubbleColumn/system/setFieldsDict | 36 + .../RAS/bubbleColumn/0/T.air | 45 + .../RAS/bubbleColumn/0/T.water | 45 + .../RAS/bubbleColumn/0/Theta | 47 + .../RAS/bubbleColumn/0/U.air | 41 + .../RAS/bubbleColumn/0/U.water | 41 + .../RAS/bubbleColumn/0/alpha.air | 1926 ++++++ .../RAS/bubbleColumn/0/alpha.air.org | 42 + .../RAS/bubbleColumn/0/epsilon.air | 49 + .../RAS/bubbleColumn/0/epsilon.water | 49 + .../RAS/bubbleColumn/0/epsilonm | 49 + .../RAS/bubbleColumn/0/k.air | 49 + .../RAS/bubbleColumn/0/k.water | 49 + .../RAS/bubbleColumn/0/km | 49 + .../RAS/bubbleColumn/0/nut.air | 47 + .../RAS/bubbleColumn/0/nut.water | 47 + .../RAS/bubbleColumn/0/p | 40 + .../RAS/bubbleColumn/0/p_rgh | 40 + .../RAS/bubbleColumn/constant/g | 22 + .../RAS/bubbleColumn/constant/phaseProperties | 163 + .../bubbleColumn/constant/polyMesh/boundary | 48 + .../constant/thermophysicalProperties.air | 49 + .../constant/thermophysicalProperties.water | 54 + .../constant/turbulenceProperties.air | 34 + .../constant/turbulenceProperties.water | 28 + .../RAS/bubbleColumn/system/blockMeshDict | 61 + .../RAS/bubbleColumn/system/controlDict | 95 + .../RAS/bubbleColumn/system/fvSchemes | 70 + .../RAS/bubbleColumn/system/fvSolution | 91 + .../RAS/bubbleColumn/system/setFieldsDict | 36 + .../bubbleColumnEvaporatingReacting/0/AIR.gas | 42 + .../0/AIR.liquid | 42 + .../bubbleColumnEvaporatingReacting/0/CO.gas | 42 + .../bubbleColumnEvaporatingReacting/0/H2O.gas | 42 + .../0/H2O.liquid | 42 + .../bubbleColumnEvaporatingReacting/0/T.gas | 42 + .../0/T.liquid | 41 + .../bubbleColumnEvaporatingReacting/0/U.gas | 42 + .../0/U.liquid | 42 + .../0/Ydefault | 42 + .../0/alpha.gas | 1926 ++++++ .../0/alpha.gas.org | 42 + .../0/alpha.liquid | 1926 ++++++ .../0/alpha.liquid.org | 42 + .../0/epsilon.gas | 43 + .../bubbleColumnEvaporatingReacting/0/k.gas | 43 + .../bubbleColumnEvaporatingReacting/0/nut.gas | 41 + .../RAS/bubbleColumnEvaporatingReacting/0/p | 40 + .../bubbleColumnEvaporatingReacting/0/p_rgh | 40 + .../constant/chemistryProperties.gas | 41 + .../constant/combustionProperties.gas | 37 + .../constant/g | 22 + .../constant/phaseProperties | 219 + .../constant/polyMesh/boundary | 48 + .../constant/reactions.gas | 22 + .../constant/thermo.gas | 109 + .../constant/thermophysicalProperties.gas | 38 + .../constant/thermophysicalProperties.liquid | 86 + .../constant/turbulenceProperties.gas | 28 + .../constant/turbulenceProperties.liquid | 20 + .../system/blockMeshDict | 61 + .../system/controlDict | 55 + .../system/decomposeParDict | 29 + .../system/fvSchemes | 76 + .../system/fvSolution | 101 + .../system/setFieldsDict | 38 + .../RAS/fluidisedBed/0/T.air | 48 + .../RAS/fluidisedBed/0/T.particles | 44 + .../RAS/fluidisedBed/0/Theta.particles | 47 + .../RAS/fluidisedBed/0/U.air | 50 + .../RAS/fluidisedBed/0/U.particles | 47 + .../RAS/fluidisedBed/0/alpha.air | 6047 +++++++++++++++++ .../RAS/fluidisedBed/0/alpha.air.org | 44 + .../RAS/fluidisedBed/0/alpha.particles | 6047 +++++++++++++++++ .../RAS/fluidisedBed/0/alpha.particles.org | 44 + .../RAS/fluidisedBed/0/epsilon.air | 49 + .../RAS/fluidisedBed/0/k.air | 49 + .../RAS/fluidisedBed/0/nut.air | 47 + .../RAS/fluidisedBed/0/nut.particles | 47 + .../RAS/fluidisedBed/0/p | 47 + .../RAS/fluidisedBed/0/p_rgh | 47 + .../RAS/fluidisedBed/constant/g | 22 + .../RAS/fluidisedBed/constant/phaseProperties | 114 + .../fluidisedBed/constant/polyMesh/boundary | 48 + .../constant/thermophysicalProperties.air | 49 + .../thermophysicalProperties.particles | 53 + .../constant/turbulenceProperties.air | 44 + .../constant/turbulenceProperties.particles | 62 + .../RAS/fluidisedBed/system/blockMeshDict | 66 + .../RAS/fluidisedBed/system/controlDict | 95 + .../RAS/fluidisedBed/system/fvSchemes | 81 + .../RAS/fluidisedBed/system/fvSolution | 108 + .../RAS/fluidisedBed/system/setFieldsDict | 38 + .../laminar/bubbleColumn/0/T.air | 45 + .../laminar/bubbleColumn/0/T.water | 45 + .../laminar/bubbleColumn/0/Theta | 47 + .../laminar/bubbleColumn/0/U.air | 41 + .../laminar/bubbleColumn/0/U.water | 41 + .../laminar/bubbleColumn/0/alpha.air | 1926 ++++++ .../laminar/bubbleColumn/0/alpha.air.org | 42 + .../laminar/bubbleColumn/0/p | 40 + .../laminar/bubbleColumn/0/p_rgh | 40 + .../laminar/bubbleColumn/constant/g | 22 + .../bubbleColumn/constant/phaseProperties | 166 + .../bubbleColumn/constant/polyMesh/boundary | 48 + .../constant/thermophysicalProperties.air | 49 + .../constant/thermophysicalProperties.water | 54 + .../constant/turbulenceProperties.air | 20 + .../constant/turbulenceProperties.water | 20 + .../laminar/bubbleColumn/system/blockMeshDict | 61 + .../laminar/bubbleColumn/system/controlDict | 95 + .../laminar/bubbleColumn/system/fvSchemes | 67 + .../laminar/bubbleColumn/system/fvSolution | 82 + .../laminar/bubbleColumn/system/setFieldsDict | 36 + .../laminar/bubbleColumnEvaporating/0/CO.gas | 42 + .../laminar/bubbleColumnEvaporating/0/H2O.gas | 42 + .../bubbleColumnEvaporating/0/H2O.liquid | 42 + .../laminar/bubbleColumnEvaporating/0/T.gas | 42 + .../bubbleColumnEvaporating/0/T.liquid | 41 + .../laminar/bubbleColumnEvaporating/0/U.gas | 42 + .../bubbleColumnEvaporating/0/U.liquid | 42 + .../bubbleColumnEvaporating/0/Ydefault | 42 + .../laminar/bubbleColumnEvaporating/0/air.gas | 42 + .../bubbleColumnEvaporating/0/air.liquid | 42 + .../bubbleColumnEvaporating/0/alpha.gas | 1926 ++++++ .../bubbleColumnEvaporating/0/alpha.gas.org | 42 + .../bubbleColumnEvaporating/0/alpha.liquid | 1926 ++++++ .../0/alpha.liquid.org | 42 + .../laminar/bubbleColumnEvaporating/0/p | 40 + .../laminar/bubbleColumnEvaporating/0/p_rgh | 40 + .../bubbleColumnEvaporating/constant/g | 22 + .../constant/phaseProperties | 230 + .../constant/polyMesh/boundary | 48 + .../constant/thermophysicalProperties.gas | 82 + .../constant/thermophysicalProperties.liquid | 86 + .../constant/turbulenceProperties.gas | 20 + .../constant/turbulenceProperties.liquid | 20 + .../system/blockMeshDict | 61 + .../system/continuityFunctions | 89 + .../system/controlDict | 59 + .../system/decomposeParDict | 29 + .../bubbleColumnEvaporating/system/fvSchemes | 68 + .../bubbleColumnEvaporating/system/fvSolution | 92 + .../system/setFieldsDict | 38 + .../bubbleColumnEvaporatingDissolving/0/T.gas | 41 + .../0/T.liquid | 40 + .../bubbleColumnEvaporatingDissolving/0/U.gas | 41 + .../0/U.liquid | 41 + .../0/air.gas | 42 + .../0/air.liquid | 42 + .../0/alpha.gas | 1926 ++++++ .../0/alpha.liquid | 1926 ++++++ .../bubbleColumnEvaporatingDissolving/0/p | 40 + .../bubbleColumnEvaporatingDissolving/0/p_rgh | 40 + .../0/water.gas | 42 + .../0/water.liquid | 42 + .../constant/g | 22 + .../constant/phaseProperties | 238 + .../constant/polyMesh/boundary | 48 + .../constant/thermophysicalProperties.gas | 76 + .../constant/thermophysicalProperties.liquid | 86 + .../constant/turbulenceProperties.gas | 20 + .../constant/turbulenceProperties.liquid | 20 + .../system/blockMeshDict | 61 + .../system/controlDict | 55 + .../system/fvSchemes | 68 + .../system/fvSolution | 92 + .../system/setFieldsDict | 38 + .../laminar/bubbleColumnIATE/0/T.air | 45 + .../laminar/bubbleColumnIATE/0/T.water | 45 + .../laminar/bubbleColumnIATE/0/Theta | 47 + .../laminar/bubbleColumnIATE/0/U.air | 41 + .../laminar/bubbleColumnIATE/0/U.water | 41 + .../laminar/bubbleColumnIATE/0/alpha.air | 1926 ++++++ .../laminar/bubbleColumnIATE/0/alpha.air.org | 42 + .../laminar/bubbleColumnIATE/0/kappai.air | 45 + .../laminar/bubbleColumnIATE/0/p | 40 + .../laminar/bubbleColumnIATE/0/p_rgh | 40 + .../laminar/bubbleColumnIATE/constant/g | 22 + .../bubbleColumnIATE/constant/phaseProperties | 186 + .../constant/polyMesh/boundary | 48 + .../constant/thermophysicalProperties.air | 49 + .../constant/thermophysicalProperties.water | 54 + .../constant/turbulenceProperties.air | 20 + .../constant/turbulenceProperties.water | 20 + .../bubbleColumnIATE/system/blockMeshDict | 61 + .../bubbleColumnIATE/system/controlDict | 95 + .../laminar/bubbleColumnIATE/system/fvSchemes | 69 + .../bubbleColumnIATE/system/fvSolution | 82 + .../bubbleColumnIATE/system/setFieldsDict | 36 + .../laminar/fluidisedBed/0/T.air | 48 + .../laminar/fluidisedBed/0/T.particles | 47 + .../laminar/fluidisedBed/0/Theta.particles | 47 + .../laminar/fluidisedBed/0/U.air | 50 + .../laminar/fluidisedBed/0/U.particles | 47 + .../laminar/fluidisedBed/0/alpha.particles | 6047 +++++++++++++++++ .../fluidisedBed/0/alpha.particles.org | 44 + .../laminar/fluidisedBed/0/epsilon.air | 49 + .../laminar/fluidisedBed/0/k.air | 49 + .../laminar/fluidisedBed/0/nut.air | 47 + .../laminar/fluidisedBed/0/nut.particles | 47 + .../laminar/fluidisedBed/0/p | 47 + .../laminar/fluidisedBed/0/p_rgh | 47 + .../laminar/fluidisedBed/constant/g | 22 + .../fluidisedBed/constant/phaseProperties | 116 + .../fluidisedBed/constant/polyMesh/boundary | 48 + .../constant/thermophysicalProperties.air | 49 + .../thermophysicalProperties.particles | 53 + .../constant/turbulenceProperties.air | 20 + .../constant/turbulenceProperties.particles | 61 + .../laminar/fluidisedBed/system/blockMeshDict | 66 + .../laminar/fluidisedBed/system/controlDict | 95 + .../laminar/fluidisedBed/system/fvSchemes | 70 + .../laminar/fluidisedBed/system/fvSolution | 109 + .../laminar/fluidisedBed/system/setFieldsDict | 38 + .../laminar/injection/0/T.air | 36 + .../laminar/injection/0/T.water | 36 + .../laminar/injection/0/U.air | 36 + .../laminar/injection/0/U.water | 36 + .../laminar/injection/0/alpha.air | 1926 ++++++ .../laminar/injection/0/alpha.air.org | 37 + .../laminar/injection/0/p | 35 + .../laminar/injection/0/p_rgh | 37 + .../laminar/injection/constant/fvOptions | 81 + .../laminar/injection/constant/g | 22 + .../injection/constant/phaseProperties | 164 + .../injection/constant/polyMesh/boundary | 42 + .../constant/thermophysicalProperties.air | 49 + .../constant/thermophysicalProperties.water | 54 + .../constant/turbulenceProperties.air | 20 + .../constant/turbulenceProperties.water | 20 + .../laminar/injection/system/blockMeshDict | 58 + .../laminar/injection/system/controlDict | 55 + .../laminar/injection/system/fvSchemes | 67 + .../laminar/injection/system/fvSolution | 82 + .../laminar/injection/system/setFieldsDict | 36 + .../laminar/mixerVessel2D/0/T.air | 44 + .../laminar/mixerVessel2D/0/T.water | 44 + .../laminar/mixerVessel2D/0/Theta | 44 + .../laminar/mixerVessel2D/0/U.air | 46 + .../laminar/mixerVessel2D/0/U.water | 46 + .../laminar/mixerVessel2D/0/alpha.air | 44 + .../laminar/mixerVessel2D/0/p | 46 + .../laminar/mixerVessel2D/0/p_rgh | 46 + .../laminar/mixerVessel2D/Allrun | 12 + .../mixerVessel2D/constant/MRFProperties | 31 + .../laminar/mixerVessel2D/constant/g | 22 + .../mixerVessel2D/constant/phaseProperties | 163 + .../mixerVessel2D/constant/polyMesh/boundary | 50 + .../constant/thermophysicalProperties.air | 49 + .../constant/thermophysicalProperties.water | 54 + .../constant/turbulenceProperties.air | 20 + .../constant/turbulenceProperties.water | 20 + .../laminar/mixerVessel2D/makeMesh | 6 + .../mixerVessel2D/system/blockMeshDict | 818 +++ .../mixerVessel2D/system/blockMeshDict.m4 | 818 +++ .../laminar/mixerVessel2D/system/controlDict | 55 + .../laminar/mixerVessel2D/system/fvSchemes | 67 + .../laminar/mixerVessel2D/system/fvSolution | 89 + .../laminar/mixerVessel2D/system/topoSetDict | 32 + 575 files changed, 88511 insertions(+) create mode 100755 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean create mode 100755 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/generatePairsAndSubModels create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C create mode 100644 applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh create mode 100755 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water create mode 100755 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution create mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean new file mode 100755 index 00000000000..ac1a48d1a8e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean @@ -0,0 +1,11 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +set -x + +wclean libso phaseSystems +wclean libso interfacialModels +wclean libso interfacialCompositionModels +wclean libso phaseCompressibleTurbulenceModels +wclean + +# ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake new file mode 100755 index 00000000000..2566b5a1eb0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake @@ -0,0 +1,13 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +set -x + +wmakeLnInclude interfacialModels +wmakeLnInclude interfacialCompositionModels +wmake libso phaseSystems +wmake libso interfacialModels +wmake libso interfacialCompositionModels +wmake libso phaseCompressibleTurbulenceModels +wmake + +# ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H new file mode 100644 index 00000000000..b8a238ec9da --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H @@ -0,0 +1,51 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Global + CourantNo + +Description + Calculates and outputs the mean and maximum Courant Numbers. + +\*---------------------------------------------------------------------------*/ + +scalar CoNum = 0.0; +scalar meanCoNum = 0.0; + +if (mesh.nInternalFaces()) +{ + scalarField sumPhi + ( + fvc::surfaceSum(mag(phi))().internalField() + ); + + CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue(); + + meanCoNum = + 0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue(); +} + +Info<< "Courant Number mean: " << meanCoNum + << " max: " << CoNum << endl; + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H new file mode 100644 index 00000000000..248f4c0602f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H @@ -0,0 +1,12 @@ + #include "CourantNo.H" + +{ + scalar UrCoNum = 0.5*gMax + ( + fvc::surfaceSum(mag(phi1 - phi2))().internalField()/mesh.V().field() + )*runTime.deltaTValue(); + + Info<< "Max Ur Courant Number = " << UrCoNum << endl; + + CoNum = max(CoNum, UrCoNum); +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H new file mode 100644 index 00000000000..f8c6edce9d4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H @@ -0,0 +1,47 @@ +{ + autoPtr<phaseSystem::heatTransferTable> + heatTransferPtr(fluid.heatTransfer()); + + phaseSystem::heatTransferTable& + heatTransfer = heatTransferPtr(); + + { + tmp<fvScalarMatrix> he1Eqn(phase1.heEqn()); + + if (he1Eqn.valid()) + { + he1Eqn = + ( + he1Eqn + == + *heatTransfer[phase1.name()] + + fvOptions(alpha1, rho1, phase1.thermo().he()) + ); + + he1Eqn->relax(); + fvOptions.constrain(he1Eqn()); + he1Eqn->solve(); + } + } + + { + tmp<fvScalarMatrix> he2Eqn(phase2.heEqn()); + + if (he2Eqn.valid()) + { + he2Eqn = + ( + he2Eqn + == + *heatTransfer[phase2.name()] + + fvOptions(alpha2, rho2, phase2.thermo().he()) + ); + + he2Eqn->relax(); + fvOptions.constrain(he2Eqn()); + he2Eqn->solve(); + } + } +} + +fluid.correctThermo(); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files new file mode 100644 index 00000000000..66b068b0c38 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files @@ -0,0 +1,3 @@ +reactingTwoPhaseEulerFoam.C + +EXE = $(FOAM_APPBIN)/reactingTwoPhaseEulerFoam diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options new file mode 100644 index 00000000000..f1f3b8dc8e3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options @@ -0,0 +1,24 @@ +EXE_INC = \ + -IphaseSystems/lnInclude \ + -IinterfacialModels/lnInclude \ + -IinterfacialCompositionModels/lnInclude \ + -IphaseCompressibleTurbulenceModels/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fvOptions/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude + +EXE_LIBS = \ + -lreactingTwoPhaseSystem \ + -lreactingEulerianInterfacialModels \ + -lreactingEulerianInterfacialCompositionModels \ + -lphaseReactingTurbulenceModels \ + -lfiniteVolume \ + -lfvOptions \ + -lmeshTools \ + -lsampling diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H new file mode 100644 index 00000000000..176f491f372 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H @@ -0,0 +1,50 @@ +{ + autoPtr<phaseSystem::massTransferTable> + massTransferPtr(fluid.massTransfer()); + + phaseSystem::massTransferTable& + massTransfer(massTransferPtr()); + + PtrList<volScalarField>& Y1 = phase1.Y(); + PtrList<volScalarField>& Y2 = phase2.Y(); + + forAll(Y1, i) + { + tmp<fvScalarMatrix> Y1iEqn(phase1.YiEqn(Y1[i])); + + if (Y1iEqn.valid()) + { + Y1iEqn = + ( + Y1iEqn + == + *massTransfer[Y1[i].name()] + + fvOptions(alpha1, rho1, Y1[i]) + ); + + Y1iEqn->relax(); + Y1iEqn->solve(mesh.solver("Yi")); + } + } + + forAll(Y2, i) + { + tmp<fvScalarMatrix> Y2iEqn(phase2.YiEqn(Y2[i])); + + if (Y2iEqn.valid()) + { + Y2iEqn = + ( + Y2iEqn + == + *massTransfer[Y2[i].name()] + + fvOptions(alpha2, rho2, Y2[i]) + ); + + Y2iEqn->relax(); + Y2iEqn->solve(mesh.solver("Yi")); + } + } + + fluid.massTransfer(); // updates interfacial mass flow rates +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H new file mode 100644 index 00000000000..6aeb5d024bf --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H @@ -0,0 +1,7 @@ +phase1.continuityError() = + fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1) + - (fvOptions(alpha1, rho1)&rho1); + +phase2.continuityError() = + fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2) + - (fvOptions(alpha2, rho2)&rho2); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H new file mode 100644 index 00000000000..41eb6e0e746 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H @@ -0,0 +1,73 @@ + #include "readGravitationalAcceleration.H" + #include "readhRef.H" + + Info<< "Creating phaseSystem\n" << endl; + + autoPtr<twoPhaseSystem> fluidPtr + ( + twoPhaseSystem::New(mesh) + ); + twoPhaseSystem& fluid = fluidPtr(); + + phaseModel& phase1 = fluid.phase1(); + phaseModel& phase2 = fluid.phase2(); + + volScalarField& alpha1 = phase1; + volScalarField& alpha2 = phase2; + + volVectorField& U1 = phase1.U(); + surfaceScalarField& phi1 = phase1.phi(); + surfaceScalarField& alphaPhi1 = phase1.alphaPhi(); + surfaceScalarField& alphaRhoPhi1 = phase1.alphaRhoPhi(); + + volVectorField& U2 = phase2.U(); + surfaceScalarField& phi2 = phase2.phi(); + surfaceScalarField& alphaPhi2 = phase2.alphaPhi(); + surfaceScalarField& alphaRhoPhi2 = phase2.alphaRhoPhi(); + + surfaceScalarField& phi = fluid.phi(); + + dimensionedScalar pMin + ( + "pMin", + dimPressure, + fluid.lookup("pMin") + ); + + #include "gh.H" + + rhoThermo& thermo1 = phase1.thermo(); + rhoThermo& thermo2 = phase2.thermo(); + + volScalarField& p = thermo1.p(); + + volScalarField& rho1 = thermo1.rho(); + const volScalarField& psi1 = thermo1.psi(); + + volScalarField& rho2 = thermo2.rho(); + const volScalarField& psi2 = thermo2.psi(); + + Info<< "Reading field p_rgh\n" << endl; + volScalarField p_rgh + ( + IOobject + ( + "p_rgh", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh + ); + + label pRefCell = 0; + scalar pRefValue = 0.0; + setRefCell + ( + p, + p_rgh, + pimple.dict(), + pRefCell, + pRefValue + ); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H new file mode 100644 index 00000000000..16c7667be5e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H @@ -0,0 +1,3 @@ + IOMRFZoneList MRF(mesh); + MRF.correctBoundaryVelocity(U1); + MRF.correctBoundaryVelocity(U2); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/generatePairsAndSubModels b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/generatePairsAndSubModels new file mode 100644 index 00000000000..e69de29bb2d diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files new file mode 100644 index 00000000000..41ac32274ee --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files @@ -0,0 +1,20 @@ +massTransferModels/massTransferModel/massTransferModel.C +massTransferModels/massTransferModel/newMassTransferModel.C +massTransferModels/Frossling/Frossling.C +massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C + +surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C +surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C +surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C + +interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C +interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C +interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C + +saturationPressureModels/saturationPressureModel/saturationPressureModel.C +saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C +saturationPressureModels/Antoine/Antoine.C +saturationPressureModels/AntoineExtended/AntoineExtended.C +saturationPressureModels/ArdenBuck/ArdenBuck.C + +LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialCompositionModels diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options new file mode 100644 index 00000000000..088d504706b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options @@ -0,0 +1,27 @@ +EXE_INC = \ + -I../phaseSystems/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \ + -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +LIB_LIBS = \ + -lreactingTwoPhaseSystem \ + -lfluidThermophysicalModels \ + -lreactionThermophysicalModels \ + -lspecie diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C new file mode 100644 index 00000000000..06754e2f86b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C @@ -0,0 +1,144 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Henry.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::Henry +( + const dictionary& dict, + const phasePair& pair +) +: + InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair), + k_(dict.lookup("k")), + YSolvent_ + ( + IOobject + ( + IOobject::groupName("YSolvent", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("one", dimless, 1) + ) +{ + if (k_.size() != this->speciesNames_.size()) + { + FatalErrorIn + ( + "template<class Thermo, class OtherThermo> " + "Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>:: " + "Henry " + "( " + "const dictionary& dict, " + "const phasePair& pair " + ")" + ) << "Differing number of species and solubilities" + << exit(FatalError); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::~Henry() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +void Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::update +( + const volScalarField& Tf +) +{ + YSolvent_ = scalar(1); + + forAllConstIter(hashedWordList, this->speciesNames_, iter) + { + YSolvent_ -= Yf(*iter, Tf); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::Yf +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (this->speciesNames_.contains(speciesName)) + { + const label index = this->speciesNames_[speciesName]; + + return + k_[index] + *this->otherThermo_.composition().Y(speciesName) + *this->otherThermo_.rhoThermo::rho() + /this->thermo_.rhoThermo::rho(); + } + else + { + return + YSolvent_ + *this->thermo_.composition().Y(speciesName); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::YfPrime +( + const word& speciesName, + const volScalarField& Tf +) const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName("YfPrime", this->pair_.name()), + this->pair_.phase1().mesh().time().timeName(), + this->pair_.phase1().mesh() + ), + this->pair_.phase1().mesh(), + dimensionedScalar("zero", dimless/dimTemperature, 0) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H new file mode 100644 index 00000000000..8d9c6a73faf --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H @@ -0,0 +1,129 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::Henry + +Description + Henry's law for gas solubiliy in liquid. The concentration of the dissolved + species in the liquid is proportional to its partial pressure in the gas. + The dimensionless constant of proportionality between concentrations on + each side of the interface is \f$k\f$, and is given for each species. + Mixing in the gas is assumed to be ideal. + +SourceFiles + Henry.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Henry_H +#define Henry_H + +#include "InterfaceCompositionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace interfaceCompositionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Henry Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class Henry +: + public InterfaceCompositionModel<Thermo, OtherThermo> +{ +private: + + // Private data + + //- Solubility coefficients + const scalarList k_; + + //- The remaining solvent species fraction + volScalarField YSolvent_; + + +public: + + //- Runtime type information + TypeName("Henry"); + + // Constructors + + //- Construct from components + Henry + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Henry(); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf); + + //- The interface species fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- The interface species fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace interfaceCompositionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "Henry.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C new file mode 100644 index 00000000000..1bfcd4de0c0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C @@ -0,0 +1,248 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "InterfaceCompositionModel.H" +#include "phaseModel.H" +#include "phasePair.H" +#include "pureMixture.H" +#include "multiComponentMixture.H" +#include "rhoThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +template<class ThermoType> +const typename Foam::multiComponentMixture<ThermoType>::thermoType& +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::getLocalThermo +( + const word& speciesName, + const multiComponentMixture<ThermoType>& globalThermo +) const +{ + return + globalThermo.getLocalThermo + ( + globalThermo.species() + [ + speciesName + ] + ); +} + + +template<class Thermo, class OtherThermo> +template<class ThermoType> +const typename Foam::pureMixture<ThermoType>::thermoType& +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::getLocalThermo +( + const word& speciesName, + const pureMixture<ThermoType>& globalThermo +) const +{ + return globalThermo.cellMixture(0); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::InterfaceCompositionModel +( + const dictionary& dict, + const phasePair& pair +) +: + interfaceCompositionModel(dict, pair), + thermo_ + ( + pair.phase1().mesh().lookupObject<Thermo> + ( + IOobject::groupName(basicThermo::dictName, pair.phase1().name()) + ) + ), + otherThermo_ + ( + pair.phase2().mesh().lookupObject<OtherThermo> + ( + IOobject::groupName(basicThermo::dictName, pair.phase2().name()) + ) + ), + Le_("Le", dimless, dict.lookup("Le")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>:: +~InterfaceCompositionModel() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::dY +( + const word& speciesName, + const volScalarField& Tf +) const +{ + return + Yf(speciesName, Tf) + - thermo_.composition().Y() + [ + thermo_.composition().species()[speciesName] + ]; +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::D +( + const word& speciesName +) const +{ + const typename Thermo::thermoType& localThermo = + getLocalThermo + ( + speciesName, + thermo_ + ); + + const volScalarField& p(thermo_.p()); + + const volScalarField& T(thermo_.T()); + + tmp<volScalarField> tmpD + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName("D", pair_.name()), + p.time().timeName(), + p.mesh() + ), + p.mesh(), + dimensionedScalar("zero", dimArea/dimTime, 0) + ) + ); + + volScalarField& D(tmpD()); + + forAll(p, cellI) + { + D[cellI] = + localThermo.alphah(p[cellI], T[cellI]) + /localThermo.rho(p[cellI], T[cellI]); + } + + D /= Le_; + + return tmpD; +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::L +( + const word& speciesName, + const volScalarField& Tf +) const +{ + const typename Thermo::thermoType& localThermo = + getLocalThermo + ( + speciesName, + thermo_ + ); + const typename OtherThermo::thermoType& otherLocalThermo = + getLocalThermo + ( + speciesName, + otherThermo_ + ); + + const volScalarField& p(thermo_.p()); + const volScalarField& otherP(otherThermo_.p()); + + tmp<volScalarField> tmpL + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName("L", pair_.name()), + p.time().timeName(), + p.mesh() + ), + p.mesh(), + dimensionedScalar("zero", dimEnergy/dimMass, 0) + ) + ); + + volScalarField& L(tmpL()); + + forAll(p, cellI) + { + L[cellI] = + localThermo.Ha(p[cellI], Tf[cellI]) + - otherLocalThermo.Ha(otherP[cellI], Tf[cellI]); + } + + return tmpL; +} + + +template<class Thermo, class OtherThermo> +void Foam::InterfaceCompositionModel<Thermo, OtherThermo>::addMDotL +( + const volScalarField& K, + const volScalarField& Tf, + volScalarField& mDotL, + volScalarField& mDotLPrime +) const +{ + forAllConstIter(hashedWordList, this->speciesNames_, iter) + { + volScalarField rhoKDL + ( + thermo_.rhoThermo::rho() + *K + *D(*iter) + *L(*iter, Tf) + ); + + mDotL += rhoKDL*dY(*iter, Tf); + mDotLPrime += rhoKDL*YfPrime(*iter, Tf); + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H new file mode 100644 index 00000000000..4c2c4ad3de9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H @@ -0,0 +1,216 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::InterfaceCompositionModel + +Description + Base class for interface composition models, templated on the two + thermodynamic models either side of the interface. + +SourceFiles + InterfaceCompositionModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef InterfaceCompositionModel_H +#define InterfaceCompositionModel_H + +#include "interfaceCompositionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phaseModel; +class phasePair; +template <class ThermoType> class pureMixture; +template <class ThermoType> class multiComponentMixture; + +/*---------------------------------------------------------------------------*\ + Class InterfaceCompositionModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class InterfaceCompositionModel +: + public interfaceCompositionModel +{ +protected: + + // Private data + + //- Thermo + const Thermo& thermo_; + + //- Other Thermo + const OtherThermo& otherThermo_; + + //- Lewis number + const dimensionedScalar Le_; + + + // Private member functions + + //- Get a reference to the local thermo for a pure mixture + template<class ThermoType> + const typename pureMixture<ThermoType>::thermoType& + getLocalThermo + ( + const word& speciesName, + const pureMixture<ThermoType>& globalThermo + ) const; + + //- Get a reference to the local thermo for a multi component mixture + template<class ThermoType> + const typename multiComponentMixture<ThermoType>::thermoType& + getLocalThermo + ( + const word& speciesName, + const multiComponentMixture<ThermoType>& globalThermo + ) const; + + +public: + + // Constructors + + //- Construct from components + InterfaceCompositionModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + ~InterfaceCompositionModel(); + + + // Member Functions + + //- Mass fraction difference between the interface and the field + virtual tmp<volScalarField> dY + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- Mass diffusivity + virtual tmp<volScalarField> D + ( + const word& speciesName + ) const; + + //- Latent heat + virtual tmp<volScalarField> L + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- Add latent heat flow rate to total + virtual void addMDotL + ( + const volScalarField& K, + const volScalarField& Tf, + volScalarField& mDotL, + volScalarField& mDotLPrime + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Instantiation for multi-component-multi-component pairs +#define makeInterfaceCompositionType(Type, Thermo, Comp, Mix, Phys, OtherThermo, OtherComp, OtherMix, OtherPhys)\ + \ + typedef Thermo<Comp, SpecieMixture<Mix<Phys> > > \ + Type##Thermo##Comp##Mix##Phys; \ + \ + typedef OtherThermo<OtherComp, OtherMix<OtherPhys> > \ + Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys; \ + \ + addInterfaceCompositionToRunTimeSelectionTable \ + ( \ + Type, \ + Type##Thermo##Comp##Mix##Phys, \ + Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys \ + ) + +// Instantiation for multi-component-single-component pairs +#define makeSpecieInterfaceCompositionType(Type, Thermo, Comp, Mix, Phys, OtherThermo, OtherComp, OtherMix, OtherPhys)\ + \ + typedef Thermo<Comp, SpecieMixture<Mix<Phys> > > \ + Type##Thermo##Comp##Mix##Phys; \ + \ + typedef OtherThermo<OtherComp, SpecieMixture<OtherMix<OtherPhys> > > \ + Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys; \ + \ + addInterfaceCompositionToRunTimeSelectionTable \ + ( \ + Type, \ + Type##Thermo##Comp##Mix##Phys, \ + Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys \ + ) + +// Addition to the run-time selection table +#define addInterfaceCompositionToRunTimeSelectionTable(Type, Thermo, OtherThermo)\ + \ + typedef Type<Thermo, OtherThermo> \ + Type##Thermo##OtherThermo; \ + \ + defineTemplateTypeNameAndDebugWithName \ + ( \ + Type##Thermo##OtherThermo, \ + ( \ + word(Type##Thermo##OtherThermo::typeName_()) + "<" \ + + word(Thermo::typeName) + "," \ + + word(OtherThermo::typeName) + ">" \ + ).c_str(), \ + 0 \ + ); \ + \ + addToRunTimeSelectionTable \ + ( \ + interfaceCompositionModel, \ + Type##Thermo##OtherThermo, \ + dictionary \ + ) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "InterfaceCompositionModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C new file mode 100644 index 00000000000..c413e0c524a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "interfaceCompositionModel.H" +#include "InterfaceCompositionModel.H" +#include "Henry.H" +#include "NonRandomTwoLiquid.H" +#include "Raoult.H" +#include "Saturated.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "makeReactionThermo.H" + +#include "thermoPhysicsTypes.H" + +#include "rhoConst.H" +#include "perfectFluid.H" + +#include "pureMixture.H" +#include "multiComponentMixture.H" +#include "reactingMixture.H" +#include "SpecieMixture.H" + +#include "rhoThermo.H" +#include "rhoReactionThermo.H" +#include "heRhoThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef + constTransport + < + species::thermo + < + hConstThermo + < + perfectFluid<specie> + >, + sensibleInternalEnergy + > + > constFluidEThermoPhysics; +}; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + // multi-component liquid + makeReactionThermo + ( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + multiComponentMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + perfectFluid, + specie + ); +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + using namespace interfaceCompositionModels; + + // multi-component gas in the presence of a pure liquid + makeInterfaceCompositionType + ( + Saturated, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + gasEThermoPhysics, + heRhoThermo, + rhoThermo, + pureMixture, + constFluidEThermoPhysics + ); + + // reacting gas in the presence of a pure liquid + makeInterfaceCompositionType + ( + Saturated, + heRhoThermo, + rhoReactionThermo, + reactingMixture, + gasEThermoPhysics, + heRhoThermo, + rhoThermo, + pureMixture, + constFluidEThermoPhysics + ); + + // multi-component gas in the presence of a multi-component liquid + makeSpecieInterfaceCompositionType + ( + Saturated, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + constGasEThermoPhysics, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + constFluidEThermoPhysics + ); + + // multi-component liquid in the presence of a multi-component gas + makeSpecieInterfaceCompositionType + ( + Henry, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + constFluidEThermoPhysics, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + constGasEThermoPhysics + ); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C new file mode 100644 index 00000000000..99783706f31 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C @@ -0,0 +1,274 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "NonRandomTwoLiquid.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>:: +NonRandomTwoLiquid +( + const dictionary& dict, + const phasePair& pair +) +: + InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair), + gamma1_ + ( + IOobject + ( + IOobject::groupName("gamma1", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("one", dimless, 1) + ), + gamma2_ + ( + IOobject + ( + IOobject::groupName("gamma2", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("one", dimless, 1) + ), + beta12_("", dimless/dimTemperature, 0), + beta21_("", dimless/dimTemperature, 0) +{ + if (this->speciesNames_.size() != 2) + { + FatalErrorIn + ( + "template<class Thermo, class OtherThermo>" + "Foam::interfaceCompositionModels::" + "NonRandomTwoLiquid<Thermo, OtherThermo>::" + "NonRandomTwoLiquid" + "( " + "const dictionary& dict, " + "const phasePair& pair " + ")" + ) << "NonRandomTwoLiquid model is suitable for two species only." + << exit(FatalError); + } + + species1Name_ = this->speciesNames_[0]; + species2Name_ = this->speciesNames_[1]; + + species1Index_ = this->thermo_.composition().species()[species1Name_]; + species2Index_ = this->thermo_.composition().species()[species2Name_]; + + alpha12_ = dimensionedScalar + ( + "alpha12", + dimless, + dict.subDict(species1Name_).lookup("alpha") + ); + alpha21_ = dimensionedScalar + ( + "alpha21", + dimless, + dict.subDict(species2Name_).lookup("alpha") + ); + + beta12_ = dimensionedScalar + ( + "beta12", + dimless/dimTemperature, + dict.subDict(species1Name_).lookup("beta") + ); + beta21_ = dimensionedScalar + ( + "beta21", + dimless/dimTemperature, + dict.subDict(species2Name_).lookup("beta") + ); + + saturationPressureModel12_.reset + ( + saturationPressureModel::New + ( + dict.subDict(species1Name_).subDict("interaction") + ).ptr() + ); + saturationPressureModel21_.reset + ( + saturationPressureModel::New + ( + dict.subDict(species2Name_).subDict("interaction") + ).ptr() + ); + + speciesModel1_.reset + ( + interfaceCompositionModel::New + ( + dict.subDict(species1Name_), + pair + ).ptr() + ); + + speciesModel2_.reset + ( + interfaceCompositionModel::New + ( + dict.subDict(species2Name_), + pair + ).ptr() + ); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>:: +~NonRandomTwoLiquid() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +void +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>:: +update +( + const volScalarField& Tf +) +{ + volScalarField W(this->thermo_.composition().W()); + + volScalarField X1 + ( + this->thermo_.composition().Y(species1Index_) + *W + /this->thermo_.composition().W(species1Index_) + ); + + volScalarField X2 + ( + this->thermo_.composition().Y(species2Index_) + *W + /this->thermo_.composition().W(species2Index_) + ); + + volScalarField alpha12(alpha12_ + Tf*beta12_); + volScalarField alpha21(alpha21_ + Tf*beta21_); + + volScalarField tau12(saturationPressureModel12_->lnPSat(Tf)); + volScalarField tau21(saturationPressureModel21_->lnPSat(Tf)); + + volScalarField G12(exp(- alpha12*tau12)); + volScalarField G21(exp(- alpha21*tau21)); + + gamma1_ = + exp + ( + sqr(X2) + *( + tau21*sqr(G21)/max(sqr(X1 + X2*G21), SMALL) + + tau12*G12/max(sqr(X2 + X1*G12), SMALL) + ) + ); + gamma2_ = + exp + ( + sqr(X1) + *( + tau12*sqr(G12)/max(sqr(X2 + X1*G12), SMALL) + + tau21*G21/max(sqr(X1 + X2*G21), SMALL) + ) + ); +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>::Yf +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (speciesName == species1Name_) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModel1_->Yf(speciesName, Tf) + *gamma1_; + } + else if(speciesName == species2Name_) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModel2_->Yf(speciesName, Tf) + *gamma2_; + } + else + { + return + this->thermo_.composition().Y(speciesName) + *(scalar(1) - Yf(species1Name_, Tf) - Yf(species2Name_, Tf)); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>:: +YfPrime +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (speciesName == species1Name_) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModel1_->YfPrime(speciesName, Tf) + *gamma1_; + } + else if(speciesName == species2Name_) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModel2_->YfPrime(speciesName, Tf) + *gamma2_; + } + else + { + return + - this->thermo_.composition().Y(speciesName) + *(YfPrime(species1Name_, Tf) + YfPrime(species2Name_, Tf)); + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H new file mode 100644 index 00000000000..d35829c77d1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H @@ -0,0 +1,167 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::NonRandomTwoLiquid + +Description + Non ideal law for the mixing of two species. A separate composition model + is given for each species. The composition of a species is equal to the + value given by the model, scaled by the species fraction in the bulk of the + other phase, and multiplied by the activity coefficient for that species. + The gas behaviour is assumed ideal; i.e. the fugacity coefficient is taken + as equal to 1. + +SourceFiles + NonRandomTwoLiquid.C + +\*---------------------------------------------------------------------------*/ + +#ifndef NonRandomTwoLiquid_H +#define NonRandomTwoLiquid_H + +#include "InterfaceCompositionModel.H" +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace interfaceCompositionModels +{ + +/*---------------------------------------------------------------------------*\ + Class NonRandomTwoLiquid Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class NonRandomTwoLiquid +: + public InterfaceCompositionModel<Thermo, OtherThermo> +{ +private: + + // Private data + + //- Activity coefficient for species 1 + volScalarField gamma1_; + + //- Activity coefficient for species 2 + volScalarField gamma2_; + + //- Name of species 1 + word species1Name_; + + //- Name of species 2 + word species2Name_; + + //- Indiex of species 1 within this thermo + label species1Index_; + + //- Indiex of species 2 within this thermo + label species2Index_; + + //- Non-randomness constant parameter for species 1 + dimensionedScalar alpha12_; + + //- Non-randomness constant parameter for species 2 + dimensionedScalar alpha21_; + + //- Non-randomness linear paramater for species 1 + dimensionedScalar beta12_; + + //- Non-randomness linear paramater for species 2 + dimensionedScalar beta21_; + + //- Interaction parameter model for species 1 + autoPtr<saturationPressureModel> saturationPressureModel12_; + + //- Interaction parameter model for species 2 + autoPtr<saturationPressureModel> saturationPressureModel21_; + + //- Composition model for species 1 + autoPtr<interfaceCompositionModel> speciesModel1_; + + //- Composition model for species 2 + autoPtr<interfaceCompositionModel> speciesModel2_; + + +public: + + //- Runtime type information + TypeName("NonRandomTwoLiquid"); + + // Constructors + + //- Construct from components + NonRandomTwoLiquid + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~NonRandomTwoLiquid(); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf); + + //- The interface species fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- The interface species fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace interfaceCompositionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "NonRandomTwoLiquid.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C new file mode 100644 index 00000000000..e8f16ee9aef --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C @@ -0,0 +1,162 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Raoult.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::Raoult +( + const dictionary& dict, + const phasePair& pair +) +: + InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair), + YNonVapour_ + ( + IOobject + ( + IOobject::groupName("YNonVapour", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("one", dimless, 1) + ), + YNonVapourPrime_ + ( + IOobject + ( + IOobject::groupName("YNonVapourPrime", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("zero", dimless/dimTemperature, 0) + ) +{ + forAllConstIter(hashedWordList, this->speciesNames_, iter) + { + speciesModels_.insert + ( + *iter, + autoPtr<interfaceCompositionModel> + ( + interfaceCompositionModel::New + ( + dict.subDict(*iter), + pair + ) + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::~Raoult() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +void Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::update +( + const volScalarField& Tf +) +{ + YNonVapour_ = scalar(1); + + forAllIter + ( + HashTable<autoPtr<interfaceCompositionModel> >, + speciesModels_, + iter + ) + { + iter()->update(Tf); + + YNonVapour_ -= + this->otherThermo_.composition().Y(iter.key()) + *iter()->Yf(iter.key(), Tf); + + YNonVapourPrime_ -= + this->otherThermo_.composition().Y(iter.key()) + *iter()->YfPrime(iter.key(), Tf); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::Yf +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (this->speciesNames_.contains(speciesName)) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModels_[speciesName]->Yf(speciesName, Tf); + } + else + { + return + this->thermo_.composition().Y(speciesName) + *YNonVapour_; + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::YfPrime +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (this->speciesNames_.contains(speciesName)) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModels_[speciesName]->YfPrime(speciesName, Tf); + } + else + { + return + this->otherThermo_.composition().Y(speciesName) + *YNonVapourPrime_; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H new file mode 100644 index 00000000000..103c8d048c3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::Raoult + +Description + Raoult's law of ideal mixing. A separate composition model is given for + each species. The composition of a species is equal to the value given by + the model scaled by the species fraction in the bulk of the other phase. + +SourceFiles + Raoult.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Raoult_H +#define Raoult_H + +#include "InterfaceCompositionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace interfaceCompositionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Raoult Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class Raoult +: + public InterfaceCompositionModel<Thermo, OtherThermo> +{ +private: + + // Private data + + //- Non-vapour species fraction + volScalarField YNonVapour_; + + //- Non-vapour species fraction derivative w.r.t. temperature + volScalarField YNonVapourPrime_; + + //- Species' individual composition models + HashTable<autoPtr<interfaceCompositionModel> > speciesModels_; + + +public: + + //- Runtime type information + TypeName("Raoult"); + + // Constructors + + //- Construct from components + Raoult + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Raoult(); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf); + + //- The interface species fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- The interface species fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace interfaceCompositionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "Raoult.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C new file mode 100644 index 00000000000..f0f1b5d622d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C @@ -0,0 +1,156 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Saturated.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>:: +wRatioByP() const +{ + return + this->thermo_.composition().W(saturatedIndex_) + /this->thermo_.composition().W() + /this->thermo_.p(); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::Saturated +( + const dictionary& dict, + const phasePair& pair +) +: + InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair), + saturatedName_(this->speciesNames_[0]), + saturatedIndex_ + ( + this->thermo_.composition().species()[saturatedName_] + ), + saturationPressureModel_ + ( + saturationPressureModel::New + ( + dict.subDict("saturationPressure") + ) + ) +{ + if (this->speciesNames_.size() != 1) + { + FatalErrorIn + ( + "template<class Thermo, class OtherThermo>" + "Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::" + "Saturated" + "( " + "const dictionary& dict, " + "const phasePair& pair " + ")" + ) << "Saturated model is suitable for one species only." + << exit(FatalError); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::~Saturated() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +void +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::update +( + const volScalarField& Tf +) +{ + // do nothing +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::Yf +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (saturatedName_ == speciesName) + { + return wRatioByP()*saturationPressureModel_->pSat(Tf); + } + else + { + const label speciesIndex + ( + this->thermo_.composition().species()[speciesName] + ); + + return + this->thermo_.Y()[speciesIndex] + *(scalar(1) - wRatioByP()*saturationPressureModel_->pSat(Tf)) + /max(scalar(1) - this->thermo_.Y()[saturatedIndex_], SMALL); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::YfPrime +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (saturatedName_ == speciesName) + { + return wRatioByP()*saturationPressureModel_->pSatPrime(Tf); + } + else + { + const label speciesIndex + ( + this->thermo_.composition().species()[speciesName] + ); + + return + - this->thermo_.Y()[speciesIndex] + *wRatioByP()*saturationPressureModel_->pSatPrime(Tf) + /max(scalar(1) - this->thermo_.Y()[saturatedIndex_], SMALL); + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H new file mode 100644 index 00000000000..3ffdda86c2b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::Saturated + +Description + Model which uses a saturation pressure model for a single species to + calculate the interface composition. + +SourceFiles + Saturated.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Saturated_H +#define Saturated_H + +#include "InterfaceCompositionModel.H" +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace interfaceCompositionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Saturated Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class Saturated +: + public InterfaceCompositionModel<Thermo, OtherThermo> +{ +protected: + + // Private data + + //- Saturated species name + word saturatedName_; + + //- Saturated species index + label saturatedIndex_; + + //- Saturation pressure model + autoPtr<saturationPressureModel> saturationPressureModel_; + + + // Private Member Functions + + //- Constant of propotionality between partial pressure and mass + // fraction + tmp<volScalarField> wRatioByP() const; + + +public: + + //- Runtime type information + TypeName("Saturated"); + + // Constructors + + //- Construct from components + Saturated + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Saturated(); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf); + + //- The interface species fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- The interface species fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace interfaceCompositionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "Saturated.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C new file mode 100644 index 00000000000..383171ab5e2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "interfaceCompositionModel.H" +#include "phaseModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(interfaceCompositionModel, 0); + defineRunTimeSelectionTable(interfaceCompositionModel, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::interfaceCompositionModel::interfaceCompositionModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair), + speciesNames_(dict.lookup("species")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::interfaceCompositionModel::~interfaceCompositionModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +const Foam::hashedWordList& Foam::interfaceCompositionModel::species() const +{ + return speciesNames_; +} + + +bool Foam::interfaceCompositionModel::transports +( + word& speciesName +) const +{ + if (this->speciesNames_.contains(speciesName)) + { + return true; + } + + return false; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H new file mode 100644 index 00000000000..bfbdee52b69 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H @@ -0,0 +1,182 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::interfaceCompositionModel + +Description + Generic base class for interface composition models. These models describe + the composition in phase 1 of the supplied pair at the interface with phase + 2. + +SourceFiles + interfaceCompositionModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef interfaceCompositionModel_H +#define interfaceCompositionModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "hashedWordList.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phaseModel; +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class interfaceCompositionModel Declaration +\*---------------------------------------------------------------------------*/ + +class interfaceCompositionModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + //- Names of the transferring species + const hashedWordList speciesNames_; + + +public: + + //- Runtime type information + TypeName("interfaceCompositionModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + interfaceCompositionModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Constructors + + //- Construct from a dictionary and a phase pair + interfaceCompositionModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~interfaceCompositionModel(); + + + // Selectors + + static autoPtr<interfaceCompositionModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf) = 0; + + //- Return the transferring species names + const hashedWordList& species() const; + + //- Returns whether the species is transported by the model and + // provides the name of the diffused species + bool transports + ( + word& speciesName + ) const; + + //- Interface mass fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const = 0; + + //- The interface mass fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const = 0; + + //- Mass fraction difference between the interface and the field + virtual tmp<volScalarField> dY + ( + const word& speciesName, + const volScalarField& Tf + ) const = 0; + + //- Mass diffusivity + virtual tmp<volScalarField> D + ( + const word& speciesName + ) const = 0; + + //- Latent heat + virtual tmp<volScalarField> L + ( + const word& speciesName, + const volScalarField& Tf + ) const = 0; + + //- Add latent heat flow rate to total + virtual void addMDotL + ( + const volScalarField& K, + const volScalarField& Tf, + volScalarField& mDotL, + volScalarField& mDotLPrime + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C new file mode 100644 index 00000000000..8b04d8f5f1e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "interfaceCompositionModel.H" +#include "phasePair.H" +#include "rhoThermo.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::interfaceCompositionModel> +Foam::interfaceCompositionModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word interfaceCompositionModelType + ( + word(dict.lookup("type")) + + "<" + + pair.phase1().thermo().type() + + "," + + pair.phase2().thermo().type() + + ">" + ); + + Info<< "Selecting interfaceCompositionModel for " + << pair << ": " << interfaceCompositionModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(interfaceCompositionModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("interfaceCompositionModel::New") + << "Unknown interfaceCompositionModelType type " + << interfaceCompositionModelType << endl << endl + << "Valid interfaceCompositionModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C new file mode 100644 index 00000000000..6398caa0e3d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C @@ -0,0 +1,72 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Frossling.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace massTransferModels +{ + defineTypeNameAndDebug(Frossling, 0); + addToRunTimeSelectionTable(massTransferModel, Frossling, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::massTransferModels::Frossling::Frossling +( + const dictionary& dict, + const phasePair& pair +) +: + massTransferModel(dict, pair), + Le_("Le", dimless, dict.lookup("Le")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::massTransferModels::Frossling::~Frossling() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::massTransferModels::Frossling::K() const +{ + volScalarField Sh(scalar(2) + 0.552*sqrt(pair_.Re())*cbrt(Le_*pair_.Pr())); + + return 6.0*pair_.dispersed()*Sh/sqr(pair_.dispersed().d()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H new file mode 100644 index 00000000000..d5190a67653 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::massTransferModels::Frossling + +Description + Frossling correlation for turbulent mass transfer from the surface of a + sphere to the surrounding fluid. + +SourceFiles + Frossling.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Frossling_H +#define Frossling_H + +#include "massTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace massTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class Frossling Declaration +\*---------------------------------------------------------------------------*/ + +class Frossling +: + public massTransferModel +{ +private: + + // Private data + + //- Lewis number + const dimensionedScalar Le_; + + +public: + + //- Runtime type information + TypeName("Frossling"); + + + // Constructors + + //- Construct from components + Frossling + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Frossling(); + + + // Member Functions + + //- The implicit mass transfer coefficient + virtual tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace massTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C new file mode 100644 index 00000000000..da38c966c96 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "massTransferModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(massTransferModel, 0); + defineRunTimeSelectionTable(massTransferModel, dictionary); +} + +const Foam::dimensionSet Foam::massTransferModel::dimK(0, -2, 0, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::massTransferModel::massTransferModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::massTransferModel::~massTransferModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H new file mode 100644 index 00000000000..53d12a54932 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H @@ -0,0 +1,128 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::massTransferModel + +Description + +SourceFiles + massTransferModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef massTransferModel_H +#define massTransferModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class massTransferModel Declaration +\*---------------------------------------------------------------------------*/ + +class massTransferModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("massTransferModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + massTransferModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimK; + + + // Constructors + + //- Construct from a dictionary and a phase pair + massTransferModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~massTransferModel(); + + + // Selectors + + static autoPtr<massTransferModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- The implicit mass transfer coefficient + // Note: this has had the species mass diffusivity factored out + virtual tmp<volScalarField> K() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C new file mode 100644 index 00000000000..d8ee288ef08 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "massTransferModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::massTransferModel> Foam::massTransferModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word massTransferModelType(dict.lookup("type")); + + Info<< "Selecting massTransferModel for " + << pair << ": " << massTransferModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(massTransferModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("massTransferModel::New") + << "Unknown massTransferModelType type " + << massTransferModelType << endl << endl + << "Valid massTransferModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C new file mode 100644 index 00000000000..e9ba5ccb2d0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "sphericalMassTransfer.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace massTransferModels +{ + defineTypeNameAndDebug(sphericalMassTransfer, 0); + addToRunTimeSelectionTable + ( + massTransferModel, + sphericalMassTransfer, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::massTransferModels::sphericalMassTransfer::sphericalMassTransfer +( + const dictionary& dict, + const phasePair& pair +) +: + massTransferModel(dict, pair), + Le_("Le", dimless, dict.lookup("Le")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::massTransferModels::sphericalMassTransfer::~sphericalMassTransfer() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::massTransferModels::sphericalMassTransfer::K() const +{ + return 60.0*pair_.dispersed()/sqr(pair_.dispersed().d()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H new file mode 100644 index 00000000000..f688b3cf14e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::massTransferModels::sphericalMassTransfer + +Description + Model which applies an analytical solution for mass transfer from the + surface of a sphere to the fluid within the sphere. + +SourceFiles + sphericalMassTransfer.C + +\*---------------------------------------------------------------------------*/ + +#ifndef sphericalMassTransfer_H +#define sphericalMassTransfer_H + +#include "massTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace massTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class sphericalMassTransfer Declaration +\*---------------------------------------------------------------------------*/ + +class sphericalMassTransfer +: + public massTransferModel +{ +private: + + // Private data + + //- Lewis number + const dimensionedScalar Le_; + + +public: + + //- Runtime type information + TypeName("spherical"); + + + // Constructors + + //- Construct from components + sphericalMassTransfer + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~sphericalMassTransfer(); + + + // Member Functions + + //- The implicit mass transfer coefficient + virtual tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace massTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C new file mode 100644 index 00000000000..f77216b79af --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Antoine.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + defineTypeNameAndDebug(Antoine, 0); + addToRunTimeSelectionTable(saturationPressureModel, Antoine, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::Antoine::Antoine(const dictionary& dict) +: + saturationPressureModel(), + A_("A", dimless, dict.lookup("A")), + B_("B", dimTemperature, dict.lookup("B")), + C_("C", dimTemperature, dict.lookup("C")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::Antoine::~Antoine() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::Antoine::pSat +( + const volScalarField& T +) const +{ + return + dimensionedScalar("one", dimPressure, 1) + *exp(A_ + B_/(C_ + T)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::Antoine::pSatPrime +( + const volScalarField& T +) const +{ + return - pSat(T)*B_/sqr(C_ + T); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::Antoine::lnPSat +( + const volScalarField& T +) const +{ + return A_ + B_/(C_ + T); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H new file mode 100644 index 00000000000..4c48c36d837 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H @@ -0,0 +1,113 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::saturationPressureModels::Antoine + +Description + Antoine equation for the vapour pressure. + + \f[ + \log p = A + \frac{B}{C + T} + \f] + + Coefficients \f$A\f$, \f$B\f$ and \f$C\f$ are to be supplied and should be + suitable for natural logarithms and temperatures in Kelvin. + +SourceFiles + Antoine.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Antoine_H +#define Antoine_H + +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class Antoine Declaration +\*---------------------------------------------------------------------------*/ + +class Antoine +: + public saturationPressureModel +{ +protected: + + // Private data + + //- Constant A + dimensionedScalar A_; + + //- Constant B + dimensionedScalar B_; + + //- Constant C + dimensionedScalar C_; + + +public: + + //- Runtime type information + TypeName("Antoine"); + + // Constructors + + //- Construct from a dictionary + Antoine(const dictionary& dict); + + + //- Destructor + virtual ~Antoine(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat(const volScalarField& T) const; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat(const volScalarField& T) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace saturationPressureModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C new file mode 100644 index 00000000000..ea6065140bc --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C @@ -0,0 +1,105 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "AntoineExtended.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + defineTypeNameAndDebug(AntoineExtended, 0); + addToRunTimeSelectionTable + ( + saturationPressureModel, + AntoineExtended, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::AntoineExtended::AntoineExtended +( + const dictionary& dict +) +: + Antoine(dict), + D_("D", dimless, dict.lookup("D")), + F_("F", dimless, dict.lookup("F")), + E_("E", dimless/pow(dimTemperature, F_), dict.lookup("E")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::AntoineExtended::~AntoineExtended() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::AntoineExtended::pSat +( + const volScalarField& T +) const +{ + return + dimensionedScalar("one", dimPressure/pow(dimTemperature, D_), 1) + *exp(A_ + B_/(C_ + T) + E_*pow(T, F_)) + *pow(T, D_); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::AntoineExtended::pSatPrime +( + const volScalarField& T +) const +{ + return pSat(T)*((D_ + E_*F_*pow(T, F_))/T - B_/sqr(C_ + T)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::AntoineExtended::lnPSat +( + const volScalarField& T +) const +{ + return + A_ + + B_/(C_ + T) + + D_*log(T*dimensionedScalar("one", dimless/dimTemperature, 1)) + + E_*pow(T, F_); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H new file mode 100644 index 00000000000..8221c4c8564 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::saturationPressureModels::AntoineExtended + +Description + Extended Antoine equation for the vapour pressure. + + \f[ + \log (p) = A + \frac{B}{C + T} + D \log (T) + E T^F + \f] + + Coefficients \f$A\f$, \f$B\f$, \f$C\f$, \f$D\f$, \f$E\f$ and \f$F\f$ are + to be supplied and should be suitable for natural logarithms and + temperatures in Kelvin. + +SourceFiles + AntoineExtended.C + +\*---------------------------------------------------------------------------*/ + +#ifndef AntoineExtended_H +#define AntoineExtended_H + +#include "Antoine.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class AntoineExtended Declaration +\*---------------------------------------------------------------------------*/ + +class AntoineExtended +: + public Antoine +{ +private: + + // Private data + + //- Constant D + dimensionedScalar D_; + + //- Constant F + dimensionedScalar F_; + + //- Constant E + // (after F so F's dimensions can be used in the construction) + dimensionedScalar E_; + + +public: + + //- Runtime type information + TypeName("AntoineExtended"); + + // Constructors + + //- Construct from a dictionary + AntoineExtended(const dictionary& dict); + + + //- Destructor + virtual ~AntoineExtended(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat(const volScalarField& T) const; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat(const volScalarField& T) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace saturationPressureModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C new file mode 100644 index 00000000000..6b54b6a9b30 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "ArdenBuck.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + defineTypeNameAndDebug(ArdenBuck, 0); + addToRunTimeSelectionTable(saturationPressureModel, ArdenBuck, dictionary); +} +} + +static const Foam::dimensionedScalar zeroC("", Foam::dimTemperature, 273.15); +static const Foam::dimensionedScalar A("", Foam::dimPressure, 611.21); +static const Foam::dimensionedScalar B("", Foam::dimless, 18.678); +static const Foam::dimensionedScalar C("", Foam::dimTemperature, 234.5); +static const Foam::dimensionedScalar D("", Foam::dimTemperature, 257.14); + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::ArdenBuck::xByTC +( + const volScalarField& TC +) const +{ + return (B - TC/C)/(D + TC); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::ArdenBuck::ArdenBuck(const dictionary& dict) +: + saturationPressureModel() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::ArdenBuck::~ArdenBuck() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::ArdenBuck::pSat +( + const volScalarField& T +) const +{ + volScalarField TC(T - zeroC); + + return A*exp(TC*xByTC(TC)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::ArdenBuck::pSatPrime +( + const volScalarField& T +) const +{ + volScalarField TC(T - zeroC); + + volScalarField x(xByTC(TC)); + + return A*exp(TC*x)*(D*x - TC/C)/(D + TC); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::ArdenBuck::lnPSat +( + const volScalarField& T +) const +{ + volScalarField TC(T - zeroC); + + return log(A.value()) + TC*xByTC(TC); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H new file mode 100644 index 00000000000..c0bb59d721a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::saturationPressureModels::ArdenBuck + +Description + ArdenBuck equation for the vapour pressure of steam. + +SourceFiles + ArdenBuck.C + +\*---------------------------------------------------------------------------*/ + +#ifndef ArdenBuck_H +#define ArdenBuck_H + +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class ArdenBuck Declaration +\*---------------------------------------------------------------------------*/ + +class ArdenBuck +: + public saturationPressureModel +{ +private: + + // Private Member Functions + + //- Exponent divided by the temperature + tmp<volScalarField> xByTC(const volScalarField& TC) const; + + +public: + + //- Runtime type information + TypeName("ArdenBuck"); + + // Constructors + + //- Construct from a dictionary + ArdenBuck(const dictionary& dict); + + + //- Destructor + virtual ~ArdenBuck(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat(const volScalarField& T) const; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat(const volScalarField& T) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace saturationPressureModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C new file mode 100644 index 00000000000..713d0a6d8a1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::saturationPressureModel> Foam::saturationPressureModel::New +( + const dictionary& dict +) +{ + word saturationPressureModelType(dict.lookup("type")); + + Info<< "Selecting saturationPressureModel: " + << saturationPressureModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(saturationPressureModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("saturationPressureModel::New") + << "Unknown saturationPressureModelType type " + << saturationPressureModelType << endl << endl + << "Valid saturationPressureModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C new file mode 100644 index 00000000000..08cf3239560 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(saturationPressureModel, 0); + defineRunTimeSelectionTable(saturationPressureModel, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationPressureModel::saturationPressureModel() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationPressureModel::~saturationPressureModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H new file mode 100644 index 00000000000..2b7d4cccc17 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H @@ -0,0 +1,127 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::saturationPressureModel + +Description + +SourceFiles + saturationPressureModel.C + newSaturationPressureModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef saturationPressureModel_H +#define saturationPressureModel_H + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class saturationPressureModel Declaration +\*---------------------------------------------------------------------------*/ + +class saturationPressureModel +{ + // Private Member Functions + + //- Disallow default bitwise copy construct + saturationPressureModel(const saturationPressureModel&); + + //- Disallow default bitwise assignment + void operator=(const saturationPressureModel&); + + +public: + + //- Runtime type information + TypeName("saturationPressureModel"); + + + //- Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + saturationPressureModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct null + saturationPressureModel(); + + + // Selectors + + //- Select null constructed + static autoPtr<saturationPressureModel> New(const dictionary& dict); + + + //- Destructor + virtual ~saturationPressureModel(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat + ( + const volScalarField& T + ) const = 0; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime + ( + const volScalarField& T + ) const = 0; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat + ( + const volScalarField& T + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C new file mode 100644 index 00000000000..99044f4cef5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantSurfaceTensionCoefficient.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceTensionModels +{ + defineTypeNameAndDebug(constantSurfaceTensionCoefficient, 0); + addToRunTimeSelectionTable + ( + surfaceTensionModel, + constantSurfaceTensionCoefficient, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::constantSurfaceTensionCoefficient:: +constantSurfaceTensionCoefficient +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + surfaceTensionModel(dict, pair, registerObject), + sigma_("sigma", dimSigma, dict.lookup("sigma")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::constantSurfaceTensionCoefficient:: +~constantSurfaceTensionCoefficient() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::surfaceTensionModels::constantSurfaceTensionCoefficient::sigma() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "sigma", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + sigma_ + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H new file mode 100644 index 00000000000..636dc572932 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::constantSurfaceTensionCoefficient + +Description + Constant value surface tension model. + +SourceFiles + constantSurfaceTensionCoefficient.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantSurfaceTensionCoefficient_H +#define constantSurfaceTensionCoefficient_H + +#include "surfaceTensionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceTensionModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantSurfaceTensionCoefficient Declaration +\*---------------------------------------------------------------------------*/ + +class constantSurfaceTensionCoefficient +: + public surfaceTensionModel +{ + // Private data + + //- Constant surface tension value + const dimensionedScalar sigma_; + + +public: + + //- Runtime type information + TypeName("constant"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + constantSurfaceTensionCoefficient + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~constantSurfaceTensionCoefficient(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> sigma() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceTensionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C new file mode 100644 index 00000000000..0b016658639 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "surfaceTensionModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::surfaceTensionModel > +Foam::surfaceTensionModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word surfaceTensionModelType(dict.lookup("type")); + + Info<< "Selecting surfaceTensionModel for " + << pair << ": " << surfaceTensionModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(surfaceTensionModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("surfaceTensionModel::New") + << "Unknown surfaceTensionModelType type " + << surfaceTensionModelType << endl << endl + << "Valid surfaceTensionModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair, true); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C new file mode 100644 index 00000000000..8d7a487495a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "surfaceTensionModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(surfaceTensionModel, 0); + defineRunTimeSelectionTable(surfaceTensionModel, dictionary); +} + +const Foam::dimensionSet Foam::surfaceTensionModel::dimSigma(1, 0, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceTensionModel::surfaceTensionModel +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + regIOobject + ( + IOobject + ( + IOobject::groupName(typeName, pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + registerObject + ) + ), + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceTensionModel::~surfaceTensionModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::surfaceTensionModel::writeData(Ostream& os) const +{ + return os.good(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H new file mode 100644 index 00000000000..8fb8877d5ca --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H @@ -0,0 +1,134 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::surfaceTensionModel + +Description + +SourceFiles + surfaceTensionModel.C + newAspectRatioModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef surfaceTensionModel_H +#define surfaceTensionModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class surfaceTensionModel Declaration +\*---------------------------------------------------------------------------*/ + +class surfaceTensionModel +: + public regIOobject +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("surfaceTensionModel"); + + + // Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + surfaceTensionModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ), + (dict, pair, registerObject) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimSigma; + + + // Constructors + + //- Construct from a dictionary and a phase pair + surfaceTensionModel + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~surfaceTensionModel(); + + + // Selectors + + static autoPtr<surfaceTensionModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> sigma() const = 0; + + //- Dummy write for regIOobject + bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files new file mode 100644 index 00000000000..9a526d3625e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files @@ -0,0 +1,64 @@ +dragModels/dragModel/dragModel.C +dragModels/dragModel/newDragModel.C +dragModels/segregated/segregated.C +dragModels/Ergun/Ergun.C +dragModels/Gibilaro/Gibilaro.C +dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C +dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C +dragModels/Lain/Lain.C +dragModels/SchillerNaumann/SchillerNaumann.C +dragModels/SyamlalOBrien/SyamlalOBrien.C +dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C +dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C +dragModels/WenYu/WenYu.C +dragModels/IshiiZuber/IshiiZuber.C + +swarmCorrections/swarmCorrection/swarmCorrection.C +swarmCorrections/swarmCorrection/newSwarmCorrection.C +swarmCorrections/noSwarm/noSwarm.C +swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C + +liftModels/liftModel/liftModel.C +liftModels/liftModel/newLiftModel.C +liftModels/noLift/noLift.C +liftModels/constantLiftCoefficient/constantLiftCoefficient.C +liftModels/Moraga/Moraga.C +liftModels/LegendreMagnaudet/LegendreMagnaudet.C +liftModels/TomiyamaLift/TomiyamaLift.C + +heatTransferModels/heatTransferModel/heatTransferModel.C +heatTransferModels/heatTransferModel/newHeatTransferModel.C +heatTransferModels/RanzMarshall/RanzMarshall.C +heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C + +virtualMassModels/virtualMassModel/virtualMassModel.C +virtualMassModels/virtualMassModel/newVirtualMassModel.C +virtualMassModels/noVirtualMass/noVirtualMass.C +virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C +virtualMassModels/Lamb/Lamb.C + +wallLubricationModels/wallLubricationModel/wallLubricationModel.C +wallLubricationModels/wallLubricationModel/newWallLubricationModel.C +wallLubricationModels/noWallLubrication/noWallLubrication.C +wallLubricationModels/Antal/Antal.C +wallLubricationModels/Frank/Frank.C +wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C + +turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C +turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C +turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C +turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C +turbulentDispersionModels/Burns/Burns.C +turbulentDispersionModels/Gosman/Gosman.C +turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C + +aspectRatioModels/aspectRatioModel/aspectRatioModel.C +aspectRatioModels/aspectRatioModel/newAspectRatioModel.C +aspectRatioModels/constantAspectRatio/constantAspectRatio.C +aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C +aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C +aspectRatioModels/Wellek/Wellek.C + +wallDependentModel/wallDependentModel.C + +LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialModels diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options new file mode 100644 index 00000000000..ba5bb85f993 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options @@ -0,0 +1,16 @@ +EXE_INC = \ + -I../phaseSystems/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/transportModels/incompressible/transportModel \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +LIB_LIBS = \ + -lreactingTwoPhaseSystem \ + -lcompressibleTransportModels \ + -lfluidThermophysicalModels \ + -lspecie diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C new file mode 100644 index 00000000000..f390ed90151 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C @@ -0,0 +1,81 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaAspectRatio.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + defineTypeNameAndDebug(TomiyamaAspectRatio, 0); + addToRunTimeSelectionTable + ( + aspectRatioModel, + TomiyamaAspectRatio, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::TomiyamaAspectRatio::TomiyamaAspectRatio +( + const dictionary& dict, + const phasePair& pair +) +: + VakhrushevEfremov(dict, pair), + wallDependentModel(pair.phase1().mesh()) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::TomiyamaAspectRatio::~TomiyamaAspectRatio() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::aspectRatioModels::TomiyamaAspectRatio::E() const +{ + return + VakhrushevEfremov::E() + *max + ( + scalar(1) - 0.35*yWall()/pair_.dispersed().d(), + scalar(0.65) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H new file mode 100644 index 00000000000..7adf90e552f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::aspectRatioModels::TomiyamaAspectRatio + +Description + Aspect ratio model of Tomiyama. + + Reference: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis, April 2013 + \endverbatim + +SourceFiles + TomiyamaAspectRatio.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaAspectRatio_H +#define TomiyamaAspectRatio_H + +#include "VakhrushevEfremov.H" +#include "wallDependentModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaAspectRatio Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaAspectRatio +: + public VakhrushevEfremov, + public wallDependentModel +{ +public: + + //- Runtime type information + TypeName("Tomiyama"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + TomiyamaAspectRatio + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~TomiyamaAspectRatio(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace aspectRatioModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C new file mode 100644 index 00000000000..270419c5b42 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "VakhrushevEfremov.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + defineTypeNameAndDebug(VakhrushevEfremov, 0); + addToRunTimeSelectionTable + ( + aspectRatioModel, + VakhrushevEfremov, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::VakhrushevEfremov::VakhrushevEfremov +( + const dictionary& dict, + const phasePair& pair +) +: + aspectRatioModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::VakhrushevEfremov::~VakhrushevEfremov() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::aspectRatioModels::VakhrushevEfremov::E() const +{ + volScalarField Ta(pair_.Ta()); + + return + neg(Ta - scalar(1))*scalar(1) + + pos(Ta - scalar(1))*neg(Ta - scalar(39.8)) + *pow3(0.81 + 0.206*tanh(1.6 - 2*log10(max(Ta, scalar(1))))) + + pos(Ta - scalar(39.8))*0.24; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H new file mode 100644 index 00000000000..e0e1215c614 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::VakhrushevEfremov + +Description + Aspect ratio model of Vakhrushev and Efremov. + + Reference: + \verbatim + "Interpolation formula for computing the velocities of single gas + bubbles in liquids" + Vakhrushev, I.A. and Efremov, G.I., + Chemistry and Technology of Fuels and Oils + Volume 6, Issue 5, May 1970, pp. 376-379, + \endverbatim + +SourceFiles + VakhrushevEfremov.C + +\*---------------------------------------------------------------------------*/ + +#ifndef VakhrushevEfremov_H +#define VakhrushevEfremov_H + +#include "aspectRatioModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + +/*---------------------------------------------------------------------------*\ + Class VakhrushevEfremov Declaration +\*---------------------------------------------------------------------------*/ + +class VakhrushevEfremov +: + public aspectRatioModel +{ +public: + + //- Runtime type information + TypeName("VakhrushevEfremov"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + VakhrushevEfremov + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~VakhrushevEfremov(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace aspectRatioModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C new file mode 100644 index 00000000000..1bc610ae9c4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Wellek.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + defineTypeNameAndDebug(Wellek, 0); + addToRunTimeSelectionTable + ( + aspectRatioModel, + Wellek, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::Wellek::Wellek +( + const dictionary& dict, + const phasePair& pair +) +: + aspectRatioModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::Wellek::~Wellek() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::aspectRatioModels::Wellek::E() const +{ + return scalar(1)/(scalar(1) + 0.163*pow(pair_.Eo(), 0.757)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H new file mode 100644 index 00000000000..9ab8f0ddc6b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::aspectRatioModels::Wellek + +Description + Aspect ratio model of Wellek et al. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis, April 2013 + \endverbatim + + \verbatim + "Shape of liquid drops moving in liquid media" + Wellek, R.M., Agrawal, A.K., Skelland, A.H.P., + International Journal of Multiphase Flow + Volume 12, Issue 5, September 1966, pp. 854-862 + \endverbatim + +SourceFiles + Wellek.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Wellek_H +#define Wellek_H + +#include "aspectRatioModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + +/*---------------------------------------------------------------------------*\ + Class Wellek Declaration +\*---------------------------------------------------------------------------*/ + +class Wellek +: + public aspectRatioModel +{ +public: + + //- Runtime type information + TypeName("Wellek"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + Wellek + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Wellek(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace aspectRatioModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C new file mode 100644 index 00000000000..956159fccef --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C @@ -0,0 +1,56 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "aspectRatioModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(aspectRatioModel, 0); + defineRunTimeSelectionTable(aspectRatioModel, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModel::aspectRatioModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModel::~aspectRatioModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H new file mode 100644 index 00000000000..04732aa81b9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H @@ -0,0 +1,121 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::aspectRatioModel + +Description + +SourceFiles + aspectRatioModel.C + newAspectRatioModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef aspectRatioModel_H +#define aspectRatioModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class aspectRatioModel Declaration +\*---------------------------------------------------------------------------*/ + +class aspectRatioModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("aspectRatioModel"); + + + // Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + aspectRatioModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + aspectRatioModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~aspectRatioModel(); + + + // Selectors + + static autoPtr<aspectRatioModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C new file mode 100644 index 00000000000..ff4cb63441f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "aspectRatioModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::aspectRatioModel> +Foam::aspectRatioModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word aspectRatioModelType(dict.lookup("type")); + + Info<< "Selecting aspectRatioModel for " + << pair << ": " << aspectRatioModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(aspectRatioModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("aspectRatioModel::New") + << "Unknown aspectRatioModelType type " + << aspectRatioModelType << endl << endl + << "Valid aspectRatioModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C new file mode 100644 index 00000000000..e8964638223 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C @@ -0,0 +1,91 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantAspectRatio.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + defineTypeNameAndDebug(constantAspectRatio, 0); + addToRunTimeSelectionTable + ( + aspectRatioModel, + constantAspectRatio, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::constantAspectRatio::constantAspectRatio +( + const dictionary& dict, + const phasePair& pair +) +: + aspectRatioModel(dict, pair), + E0_("E0", dimless, dict.lookup("E0")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::constantAspectRatio::~constantAspectRatio() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::aspectRatioModels::constantAspectRatio::E() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh + ), + mesh, + E0_ + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H new file mode 100644 index 00000000000..4ca36a0a965 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::constantAspectRatio + +Description + Constant value aspect ratio model. + +SourceFiles + constantAspectRatio.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantAspectRatio_H +#define constantAspectRatio_H + +#include "aspectRatioModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantAspectRatio Declaration +\*---------------------------------------------------------------------------*/ + +class constantAspectRatio +: + public aspectRatioModel +{ + // Private data + + //- Constant aspect ratio value + const dimensionedScalar E0_; + + +public: + + //- Runtime type information + TypeName("constant"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + constantAspectRatio + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~constantAspectRatio(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace aspectRatioModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C new file mode 100644 index 00000000000..2bc5d377de9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Ergun.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(Ergun, 0); + addToRunTimeSelectionTable(dragModel, Ergun, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::Ergun::Ergun +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::Ergun::~Ergun() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::Ergun::CdRe() const +{ + return + (4/3) + *( + 150 + *max + ( + scalar(1) - pair_.continuous(), + pair_.continuous().residualAlpha() + )/max(pair_.continuous(), pair_.continuous().residualAlpha()) + + 1.75 + *pair_.Re() + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H new file mode 100644 index 00000000000..63e77c2f2a1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::Ergun + +Description + H, Enwald, E. Peirano, A-E Almstedt + 'Eulerian Two-Phase Flow Theory Applied to Fluidization' + Int. J. Multiphase Flow, Vol. 22, Suppl, pp. 21-66 (1996) + Eq. 104, p. 42 + +SourceFiles + Ergun.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Ergun_H +#define Ergun_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class Ergun Declaration +\*---------------------------------------------------------------------------*/ + +class Ergun +: + public dragModel +{ +public: + + //- Runtime type information + TypeName("Ergun"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Ergun + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~Ergun(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C new file mode 100644 index 00000000000..ca378985ea5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Gibilaro.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(Gibilaro, 0); + addToRunTimeSelectionTable(dragModel, Gibilaro, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::Gibilaro::Gibilaro +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::Gibilaro::~Gibilaro() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::Gibilaro::CdRe() const +{ + volScalarField alpha2 + ( + max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha()) + ); + + return + (4/3) + *(17.3/alpha2 + 0.336*pair_.Re()) + *max(pair_.continuous(), pair_.continuous().residualAlpha()) + *pow(alpha2, -2.8); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H new file mode 100644 index 00000000000..f1a976e61d9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::Gibilaro + +Description + H, Enwald, E. Peirano, A-E Almstedt + 'Eulerian Two-Phase Flow Theory Applied to Fluidization' + Int. J. Multiphase Flow, Vol. 22, Suppl, pp. 21-66 (1996) + Eq. 106, p. 43 + +SourceFiles + Gibilaro.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Gibilaro_H +#define Gibilaro_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class Gibilaro Declaration +\*---------------------------------------------------------------------------*/ + +class Gibilaro +: + public dragModel +{ +public: + + //- Runtime type information + TypeName("Gibilaro"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Gibilaro + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~Gibilaro(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C new file mode 100644 index 00000000000..7649f217c87 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GidaspowErgunWenYu.H" +#include "phasePair.H" +#include "Ergun.H" +#include "WenYu.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(GidaspowErgunWenYu, 0); + addToRunTimeSelectionTable(dragModel, GidaspowErgunWenYu, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::GidaspowErgunWenYu::GidaspowErgunWenYu +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + Ergun_ + ( + new Ergun + ( + dict, + pair, + false + ) + ), + WenYu_ + ( + new WenYu + ( + dict, + pair, + false + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::GidaspowErgunWenYu::~GidaspowErgunWenYu() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::GidaspowErgunWenYu::CdRe() const +{ + return + pos(pair_.continuous() - 0.8)*WenYu_->CdRe() + + neg(pair_.continuous() - 0.8)*Ergun_->CdRe(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H new file mode 100644 index 00000000000..4f6f9c45581 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H @@ -0,0 +1,114 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::GidaspowErgunWenYu + +Description + Gidaspow, Ergun, Wen and Yu drag model + + Reference: + \verbatim + "Multiphase flow and fluidization", + Gidaspow, D., + Academic Press, New York, 1994. + \endverbatim + +SourceFiles + GidaspowErgunWenYu.C + +\*---------------------------------------------------------------------------*/ + +#ifndef GidaspowErgunWenYu_H +#define GidaspowErgunWenYu_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +class Ergun; +class WenYu; + +/*---------------------------------------------------------------------------*\ + Class GidaspowErgunWenYu Declaration +\*---------------------------------------------------------------------------*/ + +class GidaspowErgunWenYu +: + public dragModel +{ + // Private data + + //- Ergun drag model + autoPtr<Ergun> Ergun_; + + //- Wen Yu drag model + autoPtr<WenYu> WenYu_; + + +public: + + //- Runtime type information + TypeName("GidaspowErgunWenYu"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + GidaspowErgunWenYu + ( + const dictionary& interfaceDict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~GidaspowErgunWenYu(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C new file mode 100644 index 00000000000..c637c3bb354 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GidaspowSchillerNaumann.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(GidaspowSchillerNaumann, 0); + addToRunTimeSelectionTable(dragModel, GidaspowSchillerNaumann, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::GidaspowSchillerNaumann::GidaspowSchillerNaumann +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + residualRe_("residualRe", dimless, dict.lookup("residualRe")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::GidaspowSchillerNaumann::~GidaspowSchillerNaumann() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::GidaspowSchillerNaumann::CdRe() const +{ + volScalarField alpha2 + ( + max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha()) + ); + + volScalarField Re(alpha2*pair_.Re()); + + volScalarField CdsRe + ( + neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687))/alpha2 + + pos(Re - 1000)*0.44*max(Re, residualRe_) + ); + + return + CdsRe + *pow(alpha2, -2.65) + *max(pair_.continuous(), pair_.continuous().residualAlpha()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H new file mode 100644 index 00000000000..c25f910c1b4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::GidaspowSchillerNaumann + +Description + Gidaspow, Schiller and Naumann drag model + + References: + \verbatim + "Eulerian Two-Phase Flow Theory Applied to Fluidization" + Enwald, H., Peirano, E., Almstedt, A-E., + Int. J. Multiphase Flow, Vol. 22, Suppl, 1996, pp. 21-66 + Eq. 86-87, p. 40 + + This is identical to the Wen and Yu, Rowe model Table 3.6 p.56 in + "Derivation, Implementation and Validation of Computer Simulation Models + for Gas-Solid Fluidized Beds", + Berend van Wachem + Ph.D. thesis. + \endverbatim + +SourceFiles + GidaspowSchillerNaumann.C + +\*---------------------------------------------------------------------------*/ + +#ifndef GidaspowSchillerNaumann_H +#define GidaspowSchillerNaumann_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class GidaspowSchillerNaumann Declaration +\*---------------------------------------------------------------------------*/ + +class GidaspowSchillerNaumann +: + public dragModel +{ + // Private data + + //- Residual Reynolds Number + const dimensionedScalar residualRe_; + + +public: + + //- Runtime type information + TypeName("GidaspowSchillerNaumann"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + GidaspowSchillerNaumann + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~GidaspowSchillerNaumann(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C new file mode 100644 index 00000000000..8f6b115bbc6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "IshiiZuber.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(IshiiZuber, 0); + addToRunTimeSelectionTable(dragModel, IshiiZuber, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::IshiiZuber::IshiiZuber +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::IshiiZuber::~IshiiZuber() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::IshiiZuber::CdRe() const +{ + volScalarField Re(pair_.Re()); + volScalarField Eo(pair_.Eo()); + + volScalarField mud(pair_.dispersed().mu()); + volScalarField muc(pair_.continuous().mu()); + + volScalarField muStar((mud + 0.4*muc)/(mud + muc)); + + volScalarField muMix + ( + muc + *pow(max(1 - pair_.dispersed(), scalar(1e-3)), -2.5*muStar) + ); + + volScalarField ReM(Re*muc/muMix); + volScalarField CdRe + ( + pos(1000 - ReM)*24.0*(scalar(1) + 0.15*pow(ReM, 0.687)) + + neg(1000 - ReM)*0.44*ReM + ); + + volScalarField F((muc/muMix)*sqrt(1 - pair_.dispersed())); + F.max(1e-3); + + volScalarField Ealpha((1 + 17.67*pow(F, 0.8571428))/(18.67*F)); + + volScalarField CdReEllipse(Ealpha*0.6666*sqrt(Eo)*Re); + + return + pos(CdReEllipse - CdRe) + *min(CdReEllipse, Re*sqr(1 - pair_.dispersed())*2.66667) + + neg(CdReEllipse - CdRe)*CdRe; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H new file mode 100644 index 00000000000..0212b08f053 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H @@ -0,0 +1,105 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- + +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::IshiiZuber + +Description + Ishii and Zuber (1979) drag model for dense dispersed bubbly flows. + + Reference: + \verbatim + "Drag Coefficient and relative velocity in bubbly, droplet and + particulate flows", + Ishii, M., Zuber, N., + AIChE Journal 5, Vol. 25, 1979, pp. 843-855. + \endverbatim + +SourceFiles + IshiiZuber.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IshiiZuber_H +#define IshiiZuber_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class IshiiZuber Declaration +\*---------------------------------------------------------------------------*/ + +class IshiiZuber +: + public dragModel +{ + +public: + + //- Runtime type information + TypeName("IshiiZuber"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + IshiiZuber + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~IshiiZuber(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C new file mode 100644 index 00000000000..2093120190a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Lain.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(Lain, 0); + addToRunTimeSelectionTable(dragModel, Lain, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::Lain::Lain +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::Lain::~Lain() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::Lain::CdRe() const +{ + volScalarField Re(pair_.Re()); + + return + neg(Re - 1.5)*16.0 + + pos(Re - 1.5)*neg(Re - 80.0)*14.9*pow(Re, 0.22) + + pos(Re - 80.0)*neg(Re - 1500.0)*48*(1.0 - 2.21/sqrt(max(Re, SMALL))) + + pos(Re - 1500.0)*2.61*Re; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H new file mode 100644 index 00000000000..95c4c49cc8a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::Lain + +Description + Drag model of Lain et al. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis, April 2013 + \endverbatim + + \verbatim + "Modelling hydrodynamics and turbulence in a bubble column using the + Euler-Lagrange procedure" + Lain, S., Brodera, D., Sommerfelda, M., Goza, M.F., + International Journal of Multiphase Flow + Volume 28, Issue 8, August 2002, pp. 1381-1407 + \endverbatim + +SourceFiles + Lain.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Lain_H +#define Lain_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class Lain Declaration +\*---------------------------------------------------------------------------*/ + +class Lain +: + public dragModel +{ +public: + + //- Runtime type information + TypeName("Lain"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Lain + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~Lain(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C new file mode 100644 index 00000000000..ee1471ac55e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SchillerNaumann.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(SchillerNaumann, 0); + addToRunTimeSelectionTable(dragModel, SchillerNaumann, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::SchillerNaumann::SchillerNaumann +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + residualRe_("residualRe", dimless, dict.lookup("residualRe")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::SchillerNaumann::~SchillerNaumann() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::SchillerNaumann::CdRe() const +{ + volScalarField Re(pair_.Re()); + + return + neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687)) + + pos(Re - 1000)*0.44*max(Re, residualRe_); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H new file mode 100644 index 00000000000..e74cd28d110 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::SchillerNaumann + +Description + Schiller and Naumann drag model for dispersed bubbly flows. + +SourceFiles + SchillerNaumann.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SchillerNaumann_H +#define SchillerNaumann_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class SchillerNaumann Declaration +\*---------------------------------------------------------------------------*/ + +class SchillerNaumann +: + public dragModel +{ + // Private data + + //- Residual Reynolds Number + const dimensionedScalar residualRe_; + + +public: + + //- Runtime type information + TypeName("SchillerNaumann"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + SchillerNaumann + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~SchillerNaumann(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C new file mode 100644 index 00000000000..b722736b601 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SyamlalOBrien.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(SyamlalOBrien, 0); + addToRunTimeSelectionTable(dragModel, SyamlalOBrien, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::SyamlalOBrien::SyamlalOBrien +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::SyamlalOBrien::~SyamlalOBrien() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::SyamlalOBrien::CdRe() const +{ + volScalarField alpha2 + ( + max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha()) + ); + + volScalarField A(pow(alpha2, 4.14)); + volScalarField B + ( + neg(alpha2 - 0.85)*(0.8*pow(alpha2, 1.28)) + + pos(alpha2 - 0.85)*(pow(alpha2, 2.65)) + ); + volScalarField Re(pair_.Re()); + volScalarField Vr + ( + 0.5 + *( + A - 0.06*Re + sqrt(sqr(0.06*Re) + 0.12*Re*(2.0*B - A) + sqr(A)) + ) + ); + volScalarField CdsRe(sqr(0.63*sqrt(Re) + 4.8*sqrt(Vr))); + + return + CdsRe + *max(pair_.continuous(), pair_.continuous().residualAlpha()) + /sqr(Vr); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H new file mode 100644 index 00000000000..ac781183783 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::SyamlalOBrien + +Description + Syamlal, M., Rogers, W. and O'Brien, T. J. (1993) MFIX documentation, + Theory Guide. Technical Note DOE/METC-94/1004. Morgantown, West Virginia, + USA. + +SourceFiles + SyamlalOBrien.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SyamlalOBrien_H +#define SyamlalOBrien_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class SyamlalOBrien Declaration +\*---------------------------------------------------------------------------*/ + +class SyamlalOBrien +: + public dragModel +{ +public: + + //- Runtime type information + TypeName("SyamlalOBrien"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + SyamlalOBrien + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~SyamlalOBrien(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C new file mode 100644 index 00000000000..343cd9a897f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaAnalytic.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(TomiyamaAnalytic, 0); + addToRunTimeSelectionTable(dragModel, TomiyamaAnalytic, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::TomiyamaAnalytic::TomiyamaAnalytic +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + residualRe_("residualRe", dimless, dict.lookup("residualRe")), + residualEo_("residualEo", dimless, dict.lookup("residualEo")), + residualE_("residualE", dimless, dict.lookup("residualE")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::TomiyamaAnalytic::~TomiyamaAnalytic() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::TomiyamaAnalytic::CdRe() const +{ + volScalarField Eo(max(pair_.Eo(), residualEo_)); + volScalarField E(max(pair_.E(), residualE_)); + + volScalarField OmEsq(max(scalar(1) - sqr(E), sqr(residualE_))); + volScalarField rtOmEsq(sqrt(OmEsq)); + + volScalarField F(max(asin(rtOmEsq) - E*rtOmEsq, residualE_)/OmEsq); + + return + (8.0/3.0) + *Eo + /( + Eo*pow(E, 2.0/3.0)/OmEsq + + 16*pow(E, 4.0/3.0) + ) + /sqr(F) + *max(pair_.Re(), residualRe_); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H new file mode 100644 index 00000000000..2babedd2168 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::TomiyamaAnalytic + +Description + Analytical drag model of Tomiyama et al. + + Reference: + \verbatim + "Drag Coefficients of Bubbles. 1st Report. Drag Coefficients of a + Single Bubble in a Stagnant Liquid." + Tomiyama, A., Kataoka, I., and Sakaguchi, T., + Nippon Kikai Gakkai Ronbunshu + Volume 61, Issue 587, 1995, pp. 2357-2364 + \endverbatim + +SourceFiles + TomiyamaAnalytic.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaAnalytic_H +#define TomiyamaAnalytic_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaAnalytic Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaAnalytic +: + public dragModel +{ + // Private data + + //- Residual Reynolds Number + const dimensionedScalar residualRe_; + + //- Residual Eotvos number + const dimensionedScalar residualEo_; + + //- Residual aspect ratio + const dimensionedScalar residualE_; + + +public: + + //- Runtime type information + TypeName("TomiyamaAnalytic"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + TomiyamaAnalytic + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~TomiyamaAnalytic(); + + + // Member Functions + + // Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C new file mode 100644 index 00000000000..af34864f0c2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C @@ -0,0 +1,85 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaCorrelated.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(TomiyamaCorrelated, 0); + addToRunTimeSelectionTable(dragModel, TomiyamaCorrelated, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::TomiyamaCorrelated::TomiyamaCorrelated +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + A_("A", dimless, dict.lookup("A")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::TomiyamaCorrelated::~TomiyamaCorrelated() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::TomiyamaCorrelated::CdRe() const +{ + volScalarField Re(pair_.Re()); + volScalarField Eo(pair_.Eo()); + + return + max + ( + A_ + *min + ( + (1 + 0.15*pow(Re, 0.687)), + scalar(3) + ), + 8*Eo*Re/(3*Eo + 12) + ); + +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H new file mode 100644 index 00000000000..80ffe0646ad --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H @@ -0,0 +1,110 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::TomiyamaCorrelated + +Description + Correlation of Tomiyama et al. + + Reference: + \verbatim + "Terminal velocity of single bubbles in surface tension force dominant + regime" + Tomiyama, T., Celata, G.P., Hosokawa, S., Yoshida, S., + International Journal of Multiphase Flow + Volume 28, Issue 9, September 2002, pp. 1497-1519 + \endverbatim + +SourceFiles + TomiyamaCorrelated.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaCorrelated_H +#define TomiyamaCorrelated_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaCorrelated Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaCorrelated +: + public dragModel +{ + // Private data + + //- Coefficient + const dimensionedScalar A_; + + +public: + + //- Runtime type information + TypeName("TomiyamaCorrelated"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + TomiyamaCorrelated + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~TomiyamaCorrelated(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C new file mode 100644 index 00000000000..bf1e1da4a77 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C @@ -0,0 +1,85 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "WenYu.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(WenYu, 0); + addToRunTimeSelectionTable(dragModel, WenYu, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::WenYu::WenYu +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + residualRe_("residualRe", dimless, dict.lookup("residualRe")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::WenYu::~WenYu() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::WenYu::CdRe() const +{ + volScalarField alpha2 + ( + max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha()) + ); + + volScalarField Re(pair_.Re()); + volScalarField CdsRe + ( + neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687)) + + pos(Re - 1000)*0.44*max(Re, residualRe_) + ); + + return + CdsRe + *pow(alpha2, -2.65) + *max(pair_.continuous(), pair_.continuous().residualAlpha()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H new file mode 100644 index 00000000000..4787bfec18e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::WenYu + +Description + Wen and Yu drag model + + Reference: + \verbatim + "Eulerian Two-Phase Flow Theory Applied to Fluidization" + Enwald, H., Peirano, E., Almstedt, A-E., + Int. J. Multiphase Flow, Vol. 22, Suppl, 1996, pp. 21-66 + Eq. 86-87, p. 40 + \endverbatim + +SourceFiles + WenYu.C + +\*---------------------------------------------------------------------------*/ + +#ifndef WenYu_H +#define WenYu_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class WenYu Declaration +\*---------------------------------------------------------------------------*/ + +class WenYu +: + public dragModel +{ + // Private data + + //- Residual Reynolds Number + const dimensionedScalar residualRe_; + + +public: + + //- Runtime type information + TypeName("WenYu"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + WenYu + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~WenYu(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C new file mode 100644 index 00000000000..29a7bdf8841 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C @@ -0,0 +1,140 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "dragModel.H" +#include "phasePair.H" +#include "swarmCorrection.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(dragModel, 0); + defineRunTimeSelectionTable(dragModel, dictionary); +} + +const Foam::dimensionSet Foam::dragModel::dimK(1, -3, -1, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModel::dragModel +( + const phasePair& pair, + const bool registerObject +) +: + regIOobject + ( + IOobject + ( + IOobject::groupName(typeName, pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + registerObject + ) + ), + pair_(pair) +{} + + +Foam::dragModel::dragModel +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + regIOobject + ( + IOobject + ( + IOobject::groupName(typeName, pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + registerObject + ) + ), + pair_(pair), + swarmCorrection_ + ( + swarmCorrection::New + ( + dict.subDict("swarmCorrection"), + pair + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModel::~dragModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModel::Ki() const +{ + return + 0.75 + *CdRe() + *swarmCorrection_->Cs() + *pair_.continuous().rho() + *pair_.continuous().nu() + /sqr(pair_.dispersed().d()); +} + + +Foam::tmp<Foam::volScalarField> Foam::dragModel::K() const +{ + return max(pair_.dispersed(), pair_.dispersed().residualAlpha())*Ki(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::dragModel::Kf() const +{ + return + max + ( + fvc::interpolate(pair_.dispersed()), + pair_.dispersed().residualAlpha() + )*fvc::interpolate(Ki()); +} + + +bool Foam::dragModel::writeData(Ostream& os) const +{ + return os.good(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H new file mode 100644 index 00000000000..733393cca51 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H @@ -0,0 +1,162 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModel + +Description + +SourceFiles + dragModel.C + newDragModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef dragModel_H +#define dragModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; +class swarmCorrection; + +/*---------------------------------------------------------------------------*\ + Class dragModel Declaration +\*---------------------------------------------------------------------------*/ + +class dragModel +: + public regIOobject +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + //- Swarm correction + autoPtr<swarmCorrection> swarmCorrection_; + + +public: + + //- Runtime type information + TypeName("dragModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + dragModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ), + (dict, pair, registerObject) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimK; + + + // Constructors + + // Construct without residual constants + dragModel + ( + const phasePair& pair, + const bool registerObject + ); + + // Construct with residual constants + dragModel + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~dragModel(); + + + // Selectors + + static autoPtr<dragModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const = 0; + + //- Return the phase-intensive drag coefficient Ki + // used in the momentum equations + // ddt(alpha1*rho1*U1) + ... = ... alphad*K*(U1-U2) + // ddt(alpha2*rho2*U2) + ... = ... alphad*K*(U2-U1) + virtual tmp<volScalarField> Ki() const; + + //- Return the drag coefficient K + // used in the momentum equations + // ddt(alpha1*rho1*U1) + ... = ... K*(U1-U2) + // ddt(alpha2*rho2*U2) + ... = ... K*(U2-U1) + virtual tmp<volScalarField> K() const; + + //- Return the drag coefficient Kf + // used in the face-momentum equations + virtual tmp<surfaceScalarField> Kf() const; + + //- Dummy write for regIOobject + bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C new file mode 100644 index 00000000000..041468a15b3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "dragModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::dragModel> Foam::dragModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word dragModelType(dict.lookup("type")); + + Info<< "Selecting dragModel for " + << pair << ": " << dragModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(dragModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("dragModel::New") + << "Unknown dragModelType type " + << dragModelType << endl << endl + << "Valid dragModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair, true); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C new file mode 100644 index 00000000000..b50a711c77f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C @@ -0,0 +1,157 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "segregated.H" +#include "phasePair.H" +#include "fvcGrad.H" +#include "surfaceInterpolate.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(segregated, 0); + addToRunTimeSelectionTable(dragModel, segregated, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::segregated::segregated +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + m_("m", dimless, dict.lookup("m")), + n_("n", dimless, dict.lookup("n")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::segregated::~segregated() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::CdRe() const +{ + FatalErrorIn("Foam::dragModels::segregated::CdRe() const") + << "Not implemented." + << "Drag coefficient not defined for the segregated model." + << exit(FatalError); + + return pair_.phase1(); +} + + +Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::K() const +{ + const fvMesh& mesh(pair_.phase1().mesh()); + + const volScalarField& alpha1(pair_.phase1()); + const volScalarField& alpha2(pair_.phase2()); + + const volScalarField& rho1(pair_.phase1().rho()); + const volScalarField& rho2(pair_.phase2().rho()); + + tmp<volScalarField> tnu1(pair_.phase1().nu()); + tmp<volScalarField> tnu2(pair_.phase2().nu()); + + const volScalarField& nu1(tnu1()); + const volScalarField& nu2(tnu2()); + + volScalarField L + ( + IOobject + ( + "L", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("L", dimLength, 0), + zeroGradientFvPatchField<scalar>::typeName + ); + L.internalField() = cbrt(mesh.V()); + L.correctBoundaryConditions(); + + volScalarField I + ( + alpha1 + /max + ( + alpha1 + alpha2, + pair_.phase1().residualAlpha() + pair_.phase2().residualAlpha() + ) + ); + volScalarField magGradI + ( + max + ( + mag(fvc::grad(I)), + (pair_.phase1().residualAlpha() + pair_.phase2().residualAlpha())/L + ) + ); + + volScalarField muI + ( + rho1*nu1*rho2*nu2 + /(rho1*nu1 + rho2*nu2) + ); + volScalarField muAlphaI + ( + alpha1*rho1*nu1*alpha2*rho2*nu2 + /(alpha1*rho1*nu1 + alpha2*rho2*nu2) + ); + + volScalarField ReI + ( + pair_.rho() + *pair_.magUr() + /(magGradI*muI) + ); + + volScalarField lambda(m_*ReI + n_*muAlphaI/muI); + + return lambda*sqr(magGradI)*muI; +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::dragModels::segregated::Kf() const +{ + return fvc::interpolate(K()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H new file mode 100644 index 00000000000..3379c02103f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::segregated + +Description + Segregated drag model for use in regions with no obvious dispersed phase. + + Reference: + \verbatim + "Towards the Numerical Simulation of Multi-scale Two-phase Flows", + Marschall, H., + PhD Thesis, TU München, 2011 + \endverbatim + +SourceFiles + segregated.C + +\*---------------------------------------------------------------------------*/ + +#ifndef segregated_H +#define segregated_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class segregated Declaration +\*---------------------------------------------------------------------------*/ + +class segregated +: + public dragModel +{ + // Private data + + //- M coefficient + const dimensionedScalar m_; + + //- N coefficient + const dimensionedScalar n_; + + +public: + + //- Runtime type information + TypeName("segregated"); + + + // Constructors + + //- Construct from components + segregated + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~segregated(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; + + //- The drag function used in the momentum equation + virtual tmp<volScalarField> K() const; + + //- The drag function Kf used in the face-momentum equations + virtual tmp<surfaceScalarField> Kf() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C new file mode 100644 index 00000000000..7e1693dfed2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "RanzMarshall.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace heatTransferModels +{ + defineTypeNameAndDebug(RanzMarshall, 0); + addToRunTimeSelectionTable(heatTransferModel, RanzMarshall, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::heatTransferModels::RanzMarshall::RanzMarshall +( + const dictionary& dict, + const phasePair& pair +) +: + heatTransferModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::heatTransferModels::RanzMarshall::~RanzMarshall() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::heatTransferModels::RanzMarshall::K() const +{ + volScalarField Nu(scalar(2) + 0.6*sqrt(pair_.Re())*cbrt(pair_.Pr())); + + return + 6.0 + *max(pair_.dispersed(), residualAlpha_) + *pair_.continuous().kappa() + *Nu + /sqr(pair_.dispersed().d()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H new file mode 100644 index 00000000000..c02126528a0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::heatTransferModels::RanzMarshall + +Description + Ranz-Marshall correlation for turbulent heat transfer from the surface of a + sphere to the surrounding fluid. + +SourceFiles + RanzMarshall.C + +\*---------------------------------------------------------------------------*/ + +#ifndef RanzMarshall_H +#define RanzMarshall_H + +#include "heatTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace heatTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class RanzMarshall Declaration +\*---------------------------------------------------------------------------*/ + +class RanzMarshall +: + public heatTransferModel +{ +public: + + //- Runtime type information + TypeName("RanzMarshall"); + + + // Constructors + + //- Construct from components + RanzMarshall + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~RanzMarshall(); + + + // Member Functions + + //- The heat transfer function K used in the enthalpy equation + tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace heatTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C new file mode 100644 index 00000000000..1621b6be19d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C @@ -0,0 +1,68 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "heatTransferModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(heatTransferModel, 0); + defineRunTimeSelectionTable(heatTransferModel, dictionary); +} + +const Foam::dimensionSet Foam::heatTransferModel::dimK(1, -1, -3, -1, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::heatTransferModel::heatTransferModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair), + residualAlpha_ + ( + "residualAlpha", + dimless, + dict.lookupOrDefault<scalar> + ( + "residualAlpha", + pair_.dispersed().residualAlpha().value() + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::heatTransferModel::~heatTransferModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H new file mode 100644 index 00000000000..6276e8aee14 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H @@ -0,0 +1,132 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::heatTransferModel + +Description + +SourceFiles + heatTransferModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef heatTransferModel_H +#define heatTransferModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class heatTransferModel Declaration +\*---------------------------------------------------------------------------*/ + +class heatTransferModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + //- Residual phase fraction + const dimensionedScalar residualAlpha_; + + +public: + + //- Runtime type information + TypeName("heatTransferModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + heatTransferModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimK; + + + // Constructors + + //- Construct froma dictionary and a phase pair + heatTransferModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~heatTransferModel(); + + + // Selectors + + static autoPtr<heatTransferModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- The heat transfer function K used in the enthalpy equation + // ddt(alpha1*rho1*ha) + ... = ... K*(Ta - Tb) + // ddt(alpha2*rho2*hb) + ... = ... K*(Tb - Ta) + virtual tmp<volScalarField> K() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C new file mode 100644 index 00000000000..24f02b69b48 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "heatTransferModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::heatTransferModel> Foam::heatTransferModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word heatTransferModelType(dict.lookup("type")); + + Info<< "Selecting heatTransferModel for " + << pair << ": " << heatTransferModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(heatTransferModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("heatTransferModel::New") + << "Unknown heatTransferModelType type " + << heatTransferModelType << endl << endl + << "Valid heatTransferModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C new file mode 100644 index 00000000000..4eec6de0283 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "sphericalHeatTransfer.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace heatTransferModels +{ + defineTypeNameAndDebug(sphericalHeatTransfer, 0); + addToRunTimeSelectionTable + ( + heatTransferModel, + sphericalHeatTransfer, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::heatTransferModels::sphericalHeatTransfer::sphericalHeatTransfer +( + const dictionary& dict, + const phasePair& pair +) +: + heatTransferModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::heatTransferModels::sphericalHeatTransfer::~sphericalHeatTransfer() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::heatTransferModels::sphericalHeatTransfer::K() const +{ + return + 60.0 + *max(pair_.dispersed(), residualAlpha_) + *pair_.continuous().kappa() + /sqr(pair_.dispersed().d()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H new file mode 100644 index 00000000000..88d098668fa --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::heatTransferModels::sphericalHeatTransfer + +Description + Model which applies an analytical solution for heat transfer from the + surface of a sphere to the fluid within the sphere. + +SourceFiles + sphericalHeatTransfer.C + +\*---------------------------------------------------------------------------*/ + +#ifndef sphericalHeatTransfer_H +#define sphericalHeatTransfer_H + +#include "heatTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace heatTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class sphericalHeatTransfer Declaration +\*---------------------------------------------------------------------------*/ + +class sphericalHeatTransfer +: + public heatTransferModel +{ +public: + + //- Runtime type information + TypeName("spherical"); + + + // Constructors + + //- Construct from components + sphericalHeatTransfer + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~sphericalHeatTransfer(); + + + // Member Functions + + //- The heat transfer function K used in the enthalpy equation + tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace heatTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C new file mode 100644 index 00000000000..244853634bd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LegendreMagnaudet.H" +#include "phasePair.H" +#include "fvcGrad.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(LegendreMagnaudet, 0); + addToRunTimeSelectionTable(liftModel, LegendreMagnaudet, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::LegendreMagnaudet::LegendreMagnaudet +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair), + residualRe_("residualRe", dimless, dict.lookup("residualRe")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::LegendreMagnaudet::~LegendreMagnaudet() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::liftModels::LegendreMagnaudet::Cl() const +{ + volScalarField Re(max(pair_.Re(), residualRe_)); + + volScalarField Sr + ( + sqr(pair_.dispersed().d()) + /( + Re + *pair_.continuous().nu() + ) + *mag(fvc::grad(pair_.continuous().U())) + ); + + volScalarField ClLowSqr + ( + sqr(6.0*2.255) + *sqr(Sr) + /( + pow4(constant::mathematical::pi) + *Re + *pow3(Sr + 0.2*Re) + ) + ); + + volScalarField ClHighSqr + ( + sqr(0.5*(Re + 16.0)/(Re + 29.0)) + ); + + return sqrt(ClLowSqr + ClHighSqr); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H new file mode 100644 index 00000000000..10de30e6262 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::LegendreMagnaudet + +Description + Lift model of Legendre and Magnaudet. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M. + PhD Thesis + April 2013 + \endverbatim + + \verbatim + "The lift force on a spherical bubble in a viscous linear shear flow" + Legendre, D., Magnaudet, J., + Journal of Fluid Mechanics + Volume 368, August 1998, pp. 81-126 + \endverbatim + +SourceFiles + LegendreMagnaudet.C + +\*---------------------------------------------------------------------------*/ + +#ifndef LegendreMagnaudet_H +#define LegendreMagnaudet_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class LegendreMagnaudet Declaration +\*---------------------------------------------------------------------------*/ + +class LegendreMagnaudet +: + public liftModel +{ + // Private data + + //- Residual Reynold's number + const dimensionedScalar residualRe_; + + +public: + + //- Runtime type information + TypeName("LegendreMagnaudet"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + LegendreMagnaudet + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~LegendreMagnaudet(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C new file mode 100644 index 00000000000..5548dfd70af --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Moraga.H" +#include "phasePair.H" +#include "fvcGrad.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(Moraga, 0); + addToRunTimeSelectionTable(liftModel, Moraga, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::Moraga::Moraga +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::Moraga::~Moraga() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::liftModels::Moraga::Cl() const +{ + volScalarField Re(pair_.Re()); + + volScalarField sqrSr + ( + sqr(pair_.dispersed().d()) + /pair_.continuous().nu() + *mag(fvc::grad(pair_.continuous().U())) + ); + + if + ( + min(Re).value() < 1200.0 + || max(Re).value() > 18800.0 + || min(sqrSr).value() < 0.0016 + || max(sqrSr).value() > 0.04 + ) + { + WarningIn + ( + "Foam::tmp<Foam::volScalarField> " + "Foam::liftModels::Moraga::Cl() const" + ) << "Re and/or Sr are out of the range of applicability of the " + << "Moraga model. Clamping to range bounds" + << endl; + } + + Re.min(1200.0); + Re.max(18800.0); + + sqrSr.min(0.0016); + sqrSr.max(0.04); + + return 0.2*exp(- Re*sqrSr/3.6e5 - 0.12)*exp(Re*sqrSr/3.0e7); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H new file mode 100644 index 00000000000..d1adbd8ea02 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::Moraga + +Description + Lift model of Moraga et al. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis, April 2013 + \endverbatim + + \verbatim + "Lateral forces on spheres in turbulent uniform shear flow" + Moraga, F.J., Bonetto, F.J., Lahey, R.T., + International Journal of Multiphase Flow + Volume 25, Issues 6-7, September 1999, pp. 1321-1372 + \endverbatim + +SourceFiles + Moraga.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Moraga_H +#define Moraga_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class Moraga Declaration +\*---------------------------------------------------------------------------*/ + +class Moraga +: + public liftModel +{ +public: + + //- Runtime type information + TypeName("Moraga"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Moraga + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Moraga(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C new file mode 100644 index 00000000000..d4a4dfd17e5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaLift.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(TomiyamaLift, 0); + addToRunTimeSelectionTable(liftModel, TomiyamaLift, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::TomiyamaLift::TomiyamaLift +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::TomiyamaLift::~TomiyamaLift() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::liftModels::TomiyamaLift::Cl() const +{ + volScalarField EoH(pair_.EoH2()); + + volScalarField f + ( + 0.0010422*pow3(EoH) - 0.0159*sqr(EoH) - 0.0204*EoH + 0.474 + ); + + return + neg(EoH - scalar(4))*min(0.288*tanh(0.121*pair_.Re()), f) + + pos(EoH - scalar(4))*neg(EoH - scalar(10.7))*f + + pos(EoH - scalar(10.7))*(-0.288); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H new file mode 100644 index 00000000000..c179558dde9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::TomiyamaLift + +Description + Lift model of Tomiyama et al. + + Reference: + \verbatim + "Transverse migration of single bubbles in simple shear flows" + Tomiyama, A., Tamai, H., Zun, I., Hosokawa, S., + Chemical Engineering Science + Volume 57, Issue 11, June 2002, pp. 1849-1858 + \endverbatim + + The coefficient for pow3(EoH) proposed by Tomiyama (2002) has been modified + to make the model continuous at EoH = 10.7 while maintaining the + lift coefficient proposed by Tomiyama (2002) when EoH >= 10.7. + +SourceFiles + TomiyamaLift.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaLift_H +#define TomiyamaLift_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaLift Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaLift +: + public liftModel +{ +public: + + //- Runtime type information + TypeName("Tomiyama"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + TomiyamaLift + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~TomiyamaLift(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C new file mode 100644 index 00000000000..efba0d332a5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantLiftCoefficient.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(constantLiftCoefficient, 0); + addToRunTimeSelectionTable(liftModel, constantLiftCoefficient, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::constantLiftCoefficient::constantLiftCoefficient +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair), + Cl_("Cl", dimless, dict.lookup("Cl")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::constantLiftCoefficient::~constantLiftCoefficient() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::liftModels::constantLiftCoefficient::Cl() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh + ), + mesh, + Cl_ + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H new file mode 100644 index 00000000000..4e132182222 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::constantLiftCoefficient + +Description + Constant coefficient lift model. + +SourceFiles + constantLiftCoefficient.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantLiftCoefficient_H +#define constantLiftCoefficient_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantLiftCoefficient Declaration +\*---------------------------------------------------------------------------*/ + +class constantLiftCoefficient +: + public liftModel +{ + // Private data + + //- Constant lift coefficient + const dimensionedScalar Cl_; + + +public: + + //- Runtime type information + TypeName("constantCoefficient"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + constantLiftCoefficient + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~constantLiftCoefficient(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C new file mode 100644 index 00000000000..79e52a2856a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "liftModel.H" +#include "phasePair.H" +#include "fvcCurl.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(liftModel, 0); + defineRunTimeSelectionTable(liftModel, dictionary); +} + +const Foam::dimensionSet Foam::liftModel::dimF(1, -2, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModel::liftModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModel::~liftModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> Foam::liftModel::Fi() const +{ + return + Cl() + *pair_.continuous().rho() + *( + pair_.Ur() ^ fvc::curl(pair_.continuous().U()) + ); +} + + +Foam::tmp<Foam::volVectorField> Foam::liftModel::F() const +{ + return pair_.dispersed()*Fi(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::liftModel::Ff() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + fvc::interpolate(pair_.dispersed()) + *(fvc::interpolate(Fi()) & mesh.Sf()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H new file mode 100644 index 00000000000..665c95dc389 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::liftModel + +Description + +SourceFiles + liftModel.C + newLiftModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef liftModel_H +#define liftModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class liftModel Declaration +\*---------------------------------------------------------------------------*/ + +class liftModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("liftModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + liftModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Static data members + + //- Force dimensions + static const dimensionSet dimF; + + + // Constructors + + //- Construct from a dictionary and a phase pair + liftModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~liftModel(); + + + // Selectors + + static autoPtr<liftModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Return lift coefficient + virtual tmp<volScalarField> Cl() const = 0; + + //- Return phase-intensive lift force + virtual tmp<volVectorField> Fi() const; + + //- Return lift force + virtual tmp<volVectorField> F() const; + + //- Return face lift force + virtual tmp<surfaceScalarField> Ff() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C new file mode 100644 index 00000000000..c53ff96e3d3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "liftModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::liftModel> Foam::liftModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word liftModelType(dict.lookup("type")); + + Info<< "Selecting liftModel for " + << pair << ": " << liftModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(liftModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("liftModel::New") + << "Unknown liftModelType type " + << liftModelType << endl << endl + << "Valid liftModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C new file mode 100644 index 00000000000..d4e13d5c7f6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C @@ -0,0 +1,134 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noLift.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(noLift, 0); + addToRunTimeSelectionTable(liftModel, noLift, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::noLift::noLift +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::noLift::~noLift() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::liftModels::noLift::Cl() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "Cl", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedScalar("Cl", dimless, 0) + ) + ); +} + + +Foam::tmp<Foam::volVectorField> Foam::liftModels::noLift::F() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + "noLift:F", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedVector("zero", dimF, vector::zero) + ) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::liftModels::noLift::Ff() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + "noLift:Ff", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedScalar("zero", dimF*dimArea, 0) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H new file mode 100644 index 00000000000..db3a90cb135 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H @@ -0,0 +1,99 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::noLift + +Description + +SourceFiles + noLift.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noLift_H +#define noLift_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class noLift Declaration +\*---------------------------------------------------------------------------*/ + +class noLift +: + public liftModel +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + noLift + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~noLift(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; + + //- Lift force + virtual tmp<volVectorField> F() const; + + //- Lift force on faces + virtual tmp<surfaceScalarField> Ff() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C new file mode 100644 index 00000000000..38c0cf6db69 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaSwarm.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace swarmCorrections +{ + defineTypeNameAndDebug(TomiyamaSwarm, 0); + addToRunTimeSelectionTable + ( + swarmCorrection, + TomiyamaSwarm, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::swarmCorrections::TomiyamaSwarm::TomiyamaSwarm +( + const dictionary& dict, + const phasePair& pair +) +: + swarmCorrection(dict, pair), + residualAlpha_ + ( + "residualAlpha", + dimless, + dict.lookupOrDefault<scalar> + ( + "residualAlpha", + pair_.dispersed().residualAlpha().value() + ) + ), + l_("l", dimless, dict.lookup("l")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::swarmCorrections::TomiyamaSwarm::~TomiyamaSwarm() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::swarmCorrections::TomiyamaSwarm::Cs() const +{ + return + pow(max(this->pair_.continuous(), residualAlpha_), scalar(3) - 2*l_); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H new file mode 100644 index 00000000000..736c7735896 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::TomiyamaSwarm + +Description + Swarm correction of Tomiyama et al. + + Reference: + \verbatim + "Drag Coefficients of Bubbles. 2nd Report. Drag Coefficient for a Swarm + of Bubbles and its Applicability to Transient Flow." + Tomiyama, A., Kataoka, I., Fukuda, T., and Sakaguchi, T., + Nippon Kikai Gakkai Ronbunshu + Volume 61, Issue 588, 1995, pp. 2810-2817 + \endverbatim + +SourceFiles + TomiyamaSwarm.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaSwarm_H +#define TomiyamaSwarm_H + +#include "swarmCorrection.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace swarmCorrections +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaSwarm Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaSwarm +: + public swarmCorrection +{ + // Private data + + //- Residual phase fraction + const dimensionedScalar residualAlpha_; + + //- Constant exponent + const dimensionedScalar l_; + + +public: + + //- Runtime type information + TypeName("Tomiyama"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + TomiyamaSwarm + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~TomiyamaSwarm(); + + + // Member Functions + + //- Swarm correction coefficient + virtual tmp<volScalarField> Cs() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace swarmCorrections +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C new file mode 100644 index 00000000000..fc7244c6b76 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C @@ -0,0 +1,84 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noSwarm.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace swarmCorrections +{ + defineTypeNameAndDebug(noSwarm, 0); + addToRunTimeSelectionTable(swarmCorrection, noSwarm, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::swarmCorrections::noSwarm::noSwarm +( + const dictionary& dict, + const phasePair& pair +) +: + swarmCorrection(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::swarmCorrections::noSwarm::~noSwarm() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::swarmCorrections::noSwarm::Cs() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "one", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("one", dimless, 1) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H new file mode 100644 index 00000000000..9a6097361eb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::swarmCorrections::noSwarm + +Description + +SourceFiles + noSwarm.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noSwarm_H +#define noSwarm_H + +#include "swarmCorrection.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace swarmCorrections +{ + +/*---------------------------------------------------------------------------*\ + Class noSwarm Declaration +\*---------------------------------------------------------------------------*/ + +class noSwarm +: + public swarmCorrection +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + noSwarm + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~noSwarm(); + + + // Member Functions + + //- Swarm correction coefficient + tmp<volScalarField> Cs() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace swarmCorrections +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C new file mode 100644 index 00000000000..651286c3ee0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "swarmCorrection.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::swarmCorrection> +Foam::swarmCorrection::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word swarmCorrectionType(dict.lookup("type")); + + Info<< "Selecting swarmCorrection for " + << pair << ": " << swarmCorrectionType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(swarmCorrectionType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("swarmCorrection::New") + << "Unknown swarmCorrectionType type " + << swarmCorrectionType << endl << endl + << "Valid swarmCorrection types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C new file mode 100644 index 00000000000..5c4edc45ede --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C @@ -0,0 +1,56 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "swarmCorrection.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(swarmCorrection, 0); + defineRunTimeSelectionTable(swarmCorrection, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::swarmCorrection::swarmCorrection +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::swarmCorrection::~swarmCorrection() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H new file mode 100644 index 00000000000..23531b3cc56 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H @@ -0,0 +1,121 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::swarmCorrection + +Description + +SourceFiles + swarmCorrection.C + newSwarmCorrection.C + +\*---------------------------------------------------------------------------*/ + +#ifndef swarmCorrection_H +#define swarmCorrection_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class swarmCorrection Declaration +\*---------------------------------------------------------------------------*/ + +class swarmCorrection +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("swarmCorrection"); + + + // Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + swarmCorrection, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Constructors + + //- Construct from a dictionary and a phase pair + swarmCorrection + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~swarmCorrection(); + + + // Selectors + + static autoPtr<swarmCorrection> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Swarm correction coefficient + virtual tmp<volScalarField> Cs() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C new file mode 100644 index 00000000000..c51b716340a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C @@ -0,0 +1,108 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Burns.H" +#include "phasePair.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "addToRunTimeSelectionTable.H" + +#include "dragModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(Burns, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + Burns, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::Burns::Burns +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair), + sigma_("sigma", dimless, dict.lookup("sigma")), + residualAlpha_ + ( + "residualAlpha", + dimless, + dict.lookupOrDefault<scalar> + ( + "residualAlpha", + pair_.dispersed().residualAlpha().value() + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::Burns::~Burns() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::Burns::D() const +{ + const fvMesh& mesh(pair_.phase1().mesh()); + const dragModel& + drag + ( + mesh.lookupObject<dragModel> + ( + IOobject::groupName(dragModel::typeName, pair_.name()) + ) + ); + + return + 0.75 + *drag.CdRe() + *pair_.continuous().nu() + *pair_.continuous().turbulence().nut() + /( + sigma_ + *sqr(pair_.dispersed().d()) + ) + *pair_.continuous().rho() + *(1.0 + pair_.dispersed()/max(pair_.continuous(), residualAlpha_)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H new file mode 100644 index 00000000000..9a0491ebe9e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H @@ -0,0 +1,121 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::Burns + +Description + Turbulent dispersion model of Burns et al. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis + April 2013 + \endverbatim + + \verbatim + "The Favre averaged drag model for turbulent dispersion in Eulerian + multi-phase flows" + Burns, A.D., Frank, T., Hamill, I., Shi, J.M., + 5th international conference on multiphase flow + Volume 4, Paper 392, May 2004 + \endverbatim + +SourceFiles + Burns.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Burns_H +#define Burns_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Burns Declaration +\*---------------------------------------------------------------------------*/ + +class Burns +: + public turbulentDispersionModel +{ + // Private data + + //- Schmidt number + const dimensionedScalar sigma_; + + //- Residual phase fraction + const dimensionedScalar residualAlpha_; + + +public: + + //- Runtime type information + TypeName("Burns"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Burns + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Burns(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C new file mode 100644 index 00000000000..a40dbf07703 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Gosman.H" +#include "phasePair.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "addToRunTimeSelectionTable.H" + +#include "dragModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(Gosman, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + Gosman, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::Gosman::Gosman +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair), + sigma_("sigma", dimless, dict.lookup("sigma")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::Gosman::~Gosman() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::Gosman::D() const +{ + const fvMesh& mesh(pair_.phase1().mesh()); + const dragModel& + drag + ( + mesh.lookupObject<dragModel> + ( + IOobject::groupName(dragModel::typeName, pair_.name()) + ) + ); + + return + 0.75 + *drag.CdRe() + *pair_.dispersed() + *pair_.continuous().nu() + *pair_.continuous().turbulence().nut() + /( + sigma_ + *sqr(pair_.dispersed().d()) + ) + *pair_.continuous().rho(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H new file mode 100644 index 00000000000..49c48e6b122 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H @@ -0,0 +1,110 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::Gosman + +Description + Turbulent dispersion model of Gosman et al. + + Reference: + \verbatim + "Multidimensional modeling of turbulent two-phase flows in stirred + vessels" + Gosman, A.D., Lekakou, C., Politis, S., Issa, R.I., and Looney, M.K., + AIChE Journal + Volume 38, Issue 12, 1992, pp. 1946-1956 + \endverbatim + +SourceFiles + Gosman.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Gosman_H +#define Gosman_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Gosman Declaration +\*---------------------------------------------------------------------------*/ + +class Gosman +: + public turbulentDispersionModel +{ + // Private data + + //- Schmidt number + const dimensionedScalar sigma_; + + +public: + + //- Runtime type information + TypeName("Gosman"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Gosman + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Gosman(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C new file mode 100644 index 00000000000..52adccb9b44 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LopezDeBertodano.H" +#include "phasePair.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(LopezDeBertodano, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + LopezDeBertodano, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::LopezDeBertodano::LopezDeBertodano +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair), + Ctd_("Ctd", dimless, dict.lookup("Ctd")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::LopezDeBertodano::~LopezDeBertodano() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::LopezDeBertodano::D() const +{ + return + Ctd_ + *pair_.continuous().rho() + *pair_.continuous().turbulence().k(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H new file mode 100644 index 00000000000..ce3c9996a06 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::LopezDeBertodano + +Description + Lopez de Bertodano (1992) turbulent dispersion model. + + \verbatim + "Turbulent bubbly two-phase flow in a triangular + duct" + Lopez de Bertodano, M. + Ph.D. Thesis, Rensselaer Polytechnic Institution, New York, USA, 1992. + \endverbatim + + \verbatim + "The Favre averaged drag model for turbulent dispersion in Eulerian + multi-phase flows" + Burns, A.D., Frank, T., Hamill, I., Shi, J.M., + 5th international conference on multiphase flow + Volume 4, Paper 392, May 2004 + \endverbatim + +SourceFiles + LopezDeBertodano.C + +\*---------------------------------------------------------------------------*/ + +#ifndef LopezDeBertodano_H +#define LopezDeBertodano_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class LopezDeBertodano Declaration +\*---------------------------------------------------------------------------*/ + +class LopezDeBertodano +: + public turbulentDispersionModel +{ + // Private data + + //- Constant turbulent dispersion coefficient + const dimensionedScalar Ctd_; + + +public: + + //- Runtime type information + TypeName("LopezDeBertodano"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + LopezDeBertodano + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~LopezDeBertodano(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C new file mode 100644 index 00000000000..67566b9f885 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C @@ -0,0 +1,83 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantTurbulentDispersionCoefficient.H" +#include "phasePair.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(constantTurbulentDispersionCoefficient, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + constantTurbulentDispersionCoefficient, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient:: +constantTurbulentDispersionCoefficient +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair), + Ctd_("Ctd", dimless, dict.lookup("Ctd")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient:: +~constantTurbulentDispersionCoefficient() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient:: +D() const +{ + return + Ctd_ + *pair_.dispersed() + *pair_.continuous().rho() + *pair_.continuous().turbulence().k(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H new file mode 100644 index 00000000000..eb6385670cd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient + +Description + Constant coefficient turbulent dispersion model. + +SourceFiles + constantTurbulentDispersionCoefficient.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantTurbulentDispersionCoefficient_H +#define constantTurbulentDispersionCoefficient_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantTurbulentDispersionCoefficient Declaration +\*---------------------------------------------------------------------------*/ + +class constantTurbulentDispersionCoefficient +: + public turbulentDispersionModel +{ + // Private data + + //- Constant turbulent dispersion coefficient + const dimensionedScalar Ctd_; + + +public: + + //- Runtime type information + TypeName("constantCoefficient"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + constantTurbulentDispersionCoefficient + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~constantTurbulentDispersionCoefficient(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C new file mode 100644 index 00000000000..5845e3569a6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noTurbulentDispersion.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(noTurbulentDispersion, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + noTurbulentDispersion, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::noTurbulentDispersion::noTurbulentDispersion +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::noTurbulentDispersion:: +~noTurbulentDispersion() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::noTurbulentDispersion::D() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedScalar("zero", dimD, 0) + ) + ); +} + + +Foam::tmp<Foam::volVectorField> +Foam::turbulentDispersionModels::noTurbulentDispersion::F() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedVector("zero", dimF, vector::zero) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H new file mode 100644 index 00000000000..8bca7fd04bb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::noTurbulentDispersion + +Description + +SourceFiles + noTurbulentDispersion.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noTurbulentDispersion_H +#define noTurbulentDispersion_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class noTurbulentDispersion Declaration +\*---------------------------------------------------------------------------*/ + +class noTurbulentDispersion +: + public turbulentDispersionModel +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + noTurbulentDispersion + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~noTurbulentDispersion(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; + + //- Turbulent dispersion force + virtual tmp<volVectorField> F() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C new file mode 100644 index 00000000000..14d560969bd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "turbulentDispersionModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::turbulentDispersionModel> +Foam::turbulentDispersionModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word turbulentDispersionModelType(dict.lookup("type")); + + Info<< "Selecting turbulentDispersionModel for " + << pair << ": " << turbulentDispersionModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(turbulentDispersionModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("turbulentDispersionModel::New") + << "Unknown turbulentDispersionModelType type " + << turbulentDispersionModelType << endl << endl + << "Valid turbulentDispersionModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C new file mode 100644 index 00000000000..d5d805c0851 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "turbulentDispersionModel.H" +#include "phasePair.H" +#include "fvcGrad.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(turbulentDispersionModel, 0); + defineRunTimeSelectionTable(turbulentDispersionModel, dictionary); +} + +const Foam::dimensionSet Foam::turbulentDispersionModel::dimD(1, -1, -2, 0, 0); +const Foam::dimensionSet Foam::turbulentDispersionModel::dimF(1, -2, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModel::turbulentDispersionModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModel::~turbulentDispersionModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> +Foam::turbulentDispersionModel::F() const +{ + return D()*fvc::grad(pair_.dispersed()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H new file mode 100644 index 00000000000..932fdb3801c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H @@ -0,0 +1,134 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModel + +Description + +SourceFiles + turbulentDispersionModel.C + newTurbulentDispersionModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef turbulentDispersionModel_H +#define turbulentDispersionModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class turbulentDispersionModel Declaration +\*---------------------------------------------------------------------------*/ + +class turbulentDispersionModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("turbulentDispersionModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + turbulentDispersionModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + // Static data members + + //- Diffusivity dimensions + static const dimensionSet dimD; + + //- Force dimensions + static const dimensionSet dimF; + + + // Constructors + + //- Construct from a dictionary and a phase pair + turbulentDispersionModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~turbulentDispersionModel(); + + + // Selectors + + static autoPtr<turbulentDispersionModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const = 0; + + //- Turbulent dispersion force + virtual tmp<volVectorField> F() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C new file mode 100644 index 00000000000..616949c6bea --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Lamb.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace virtualMassModels +{ + defineTypeNameAndDebug(Lamb, 0); + addToRunTimeSelectionTable + ( + virtualMassModel, + Lamb, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::virtualMassModels::Lamb::Lamb +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + virtualMassModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::virtualMassModels::Lamb::~Lamb() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::virtualMassModels::Lamb::Cvm() const +{ + volScalarField E(min(max(pair_.E(), SMALL), 1 - SMALL)); + volScalarField rtOmEsq(sqrt(1 - sqr(E))); + + return + (rtOmEsq - E*acos(E)) + /(E*acos(E) - sqr(E)*rtOmEsq); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H new file mode 100644 index 00000000000..3a99c2ee2c1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H @@ -0,0 +1,102 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::virtualMassModels::Lamb + +Description + Virtual mass model of Lamb. + + Reference: + \verbatim + "Hydrodynamics" + Lamb, H., + Cambridge University Press, 1895 + \endverbatim + +SourceFiles + Lamb.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Lamb_H +#define Lamb_H + +#include "virtualMassModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace virtualMassModels +{ + +/*---------------------------------------------------------------------------*\ + Class Lamb Declaration +\*---------------------------------------------------------------------------*/ + +class Lamb +: + public virtualMassModel +{ +public: + + //- Runtime type information + TypeName("Lamb"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Lamb + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~Lamb(); + + + // Member Functions + + //- Virtual mass coefficient + virtual tmp<volScalarField> Cvm() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace virtualMassModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C new file mode 100644 index 00000000000..2fa5f493050 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantVirtualMassCoefficient.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace virtualMassModels +{ + defineTypeNameAndDebug(constantVirtualMassCoefficient, 0); + addToRunTimeSelectionTable + ( + virtualMassModel, + constantVirtualMassCoefficient, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::virtualMassModels::constantVirtualMassCoefficient:: +constantVirtualMassCoefficient +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + virtualMassModel(dict, pair, registerObject), + Cvm_("Cvm", dimless, dict.lookup("Cvm")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::virtualMassModels::constantVirtualMassCoefficient:: +~constantVirtualMassCoefficient() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::virtualMassModels::constantVirtualMassCoefficient::Cvm() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "Cvm", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + Cvm_ + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H new file mode 100644 index 00000000000..c1f7e702ac7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::virtualMassModels::constantVirtualMassCoefficient + +Description + Constant coefficient virtual mass model. + +SourceFiles + constantVirtualMassCoefficient.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantVirtualMassCoefficient_H +#define constantVirtualMassCoefficient_H + +#include "virtualMassModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace virtualMassModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantVirtualMassCoefficient Declaration +\*---------------------------------------------------------------------------*/ + +class constantVirtualMassCoefficient +: + public virtualMassModel +{ + // Private data + + //- Constant virtual mass coefficient + const dimensionedScalar Cvm_; + + +public: + + //- Runtime type information + TypeName("constantCoefficient"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + constantVirtualMassCoefficient + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~constantVirtualMassCoefficient(); + + + // Member Functions + + //- Virtual mass coefficient + virtual tmp<volScalarField> Cvm() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace virtualMassModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C new file mode 100644 index 00000000000..20378a0ad10 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noVirtualMass.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace virtualMassModels +{ + defineTypeNameAndDebug(noVirtualMass, 0); + addToRunTimeSelectionTable(virtualMassModel, noVirtualMass, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::virtualMassModels::noVirtualMass::noVirtualMass +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + virtualMassModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::virtualMassModels::noVirtualMass::~noVirtualMass() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::virtualMassModels::noVirtualMass::Cvm() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("zero", dimless, 0) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::virtualMassModels::noVirtualMass::K() const +{ + return Cvm()*dimensionedScalar("zero", dimDensity, 0); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H new file mode 100644 index 00000000000..fc611aafd1a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::virtualMassModels::noVirtualMass + +Description + +SourceFiles + noVirtualMass.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noVirtualMass_H +#define noVirtualMass_H + +#include "virtualMassModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace virtualMassModels +{ + +/*---------------------------------------------------------------------------*\ + Class noVirtualMass Declaration +\*---------------------------------------------------------------------------*/ + +class noVirtualMass +: + public virtualMassModel +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + noVirtualMass + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~noVirtualMass(); + + + // Member Functions + + //- Virtual mass coefficient + virtual tmp<volScalarField> Cvm() const; + + //- The virtual mass function K used in the momentum equation + virtual tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace virtualMassModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C new file mode 100644 index 00000000000..72f620a424b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "virtualMassModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::virtualMassModel> Foam::virtualMassModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word virtualMassModelType(dict.lookup("type")); + + Info<< "Selecting virtualMassModel for " + << pair << ": " << virtualMassModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(virtualMassModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("virtualMassModel::New") + << "Unknown virtualMassModelType type " + << virtualMassModelType << endl << endl + << "Valid virtualMassModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair, true); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C new file mode 100644 index 00000000000..a2ece4192d5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C @@ -0,0 +1,99 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "virtualMassModel.H" +#include "phasePair.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(virtualMassModel, 0); + defineRunTimeSelectionTable(virtualMassModel, dictionary); +} + +const Foam::dimensionSet Foam::virtualMassModel::dimK(dimDensity); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::virtualMassModel::virtualMassModel +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + regIOobject + ( + IOobject + ( + IOobject::groupName(typeName, pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + registerObject + ) + ), + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::virtualMassModel::~virtualMassModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::virtualMassModel::Ki() const +{ + return Cvm()*pair_.continuous().rho(); +} + + +Foam::tmp<Foam::volScalarField> Foam::virtualMassModel::K() const +{ + return pair_.dispersed()*Ki(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::virtualMassModel::Kf() const +{ + return + fvc::interpolate(pair_.dispersed())*fvc::interpolate(Ki()); +} + + +bool Foam::virtualMassModel::writeData(Ostream& os) const +{ + return os.good(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H new file mode 100644 index 00000000000..0af7097cf90 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H @@ -0,0 +1,151 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::virtualMassModel + +Description + +SourceFiles + virtualMassModel.C + newVirtualMassModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef virtualMassModel_H +#define virtualMassModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class virtualMassModel Declaration +\*---------------------------------------------------------------------------*/ + +class virtualMassModel +: + public regIOobject +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("virtualMassModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + virtualMassModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ), + (dict, pair, registerObject) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimK; + + + // Constructors + + //- Construct from a dictionary and a phase pair + virtualMassModel + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~virtualMassModel(); + + + // Selectors + + static autoPtr<virtualMassModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Return the virtual mass coefficient + virtual tmp<volScalarField> Cvm() const = 0; + + //- Return the phase-intensive virtual mass coefficient Ki + // used in the momentum equation + // ddt(alpha1*rho1*U1) + ... = ... alphad*K*(DU1_Dt - DU2_Dt) + // ddt(alpha2*rho2*U2) + ... = ... alphad*K*(DU1_Dt - DU2_Dt) + virtual tmp<volScalarField> Ki() const; + + //- Return the virtual mass coefficient K + // used in the momentum equation + // ddt(alpha1*rho1*U1) + ... = ... K*(DU1_Dt - DU2_Dt) + // ddt(alpha2*rho2*U2) + ... = ... K*(DU1_Dt - DU2_Dt) + virtual tmp<volScalarField> K() const; + + //- Return the virtual mass coefficient Kf + // used in the face-momentum equations + virtual tmp<surfaceScalarField> Kf() const; + + // Dummy write for regIOobject + bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C new file mode 100644 index 00000000000..93b2bb3f70c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "wallDependentModel.H" +#include "wallDist.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallDependentModel::wallDependentModel(const fvMesh& mesh) +: + mesh_(mesh) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallDependentModel::~wallDependentModel() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +const Foam::volScalarField& Foam::wallDependentModel::yWall() const +{ + return wallDist::New(mesh_).y(); +} + + +const Foam::volVectorField& Foam::wallDependentModel::nWall() const +{ + return wallDist::New(mesh_).n(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H new file mode 100644 index 00000000000..8f23f6881e1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::wallDependentModel + +Description + A class which provides on-demand creation and caching of wall distance and + wall normal fields for use by multiple models. + +SourceFiles + wallDependentModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef wallDependentModel_H +#define wallDependentModel_H + +#include "fvMesh.H" +#include "volFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class wallDependentModel Declaration +\*---------------------------------------------------------------------------*/ + +class wallDependentModel +{ + // Private data + + //- Reference to the mesh + const fvMesh& mesh_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + wallDependentModel(const wallDependentModel&); + + //- Disallow default bitwise assignment + void operator=(const wallDependentModel&); + + +public: + + // Constructors + + //- Construct from a mesh + wallDependentModel(const fvMesh& mesh); + + + //- Destructor + virtual ~wallDependentModel(); + + // Member Functions + + // Return the wall distance, creating and storing it if necessary + const volScalarField& yWall() const; + + // Return the wall normal, creating and storing it if necessary + const volVectorField& nWall() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C new file mode 100644 index 00000000000..fa9b2749f04 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Antal.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallLubricationModels +{ + defineTypeNameAndDebug(Antal, 0); + addToRunTimeSelectionTable + ( + wallLubricationModel, + Antal, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::Antal::Antal +( + const dictionary& dict, + const phasePair& pair +) +: + wallLubricationModel(dict, pair), + Cw1_("Cw1", dimless, dict.lookup("Cw1")), + Cw2_("Cw2", dimless, dict.lookup("Cw2")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::Antal::~Antal() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> Foam::wallLubricationModels::Antal::Fi() const +{ + volVectorField Ur(pair_.Ur()); + + const volVectorField& n(nWall()); + + return + max + ( + dimensionedScalar("zero", dimless/dimLength, 0), + Cw1_/pair_.dispersed().d() + Cw2_/yWall() + ) + *pair_.continuous().rho() + *magSqr(Ur - (Ur & n)*n) + *n; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H new file mode 100644 index 00000000000..7639712417c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModels::Antal + +Description + Wall lubrication model of Antal et al. + + Reference: + \verbatim + "Analysis of phase distribution in fully developed laminar bubbly + two-phase flow" + Antal, S.P., Lahey Jr, R.T., and Flaherty, J.E. + International Journal of Multiphase Flow + Volume 17, Issue 5, September 1991, pp. 635-652 + \endverbatim + +SourceFiles + Antal.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Antal_H +#define Antal_H + +#include "wallLubricationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace wallLubricationModels +{ + +/*---------------------------------------------------------------------------*\ + Class Antal Declaration +\*---------------------------------------------------------------------------*/ + +class Antal +: + public wallLubricationModel +{ + // Private data + + //- Coefficient 1 + const dimensionedScalar Cw1_; + + //- Coefficient 2 + const dimensionedScalar Cw2_; + + +public: + + //- Runtime type information + TypeName("Antal"); + + + // Constructors + + //- Construct from components + Antal + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Antal(); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + tmp<volVectorField> Fi() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace wallLubricationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C new file mode 100644 index 00000000000..f1b11a32cc0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Frank.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallLubricationModels +{ + defineTypeNameAndDebug(Frank, 0); + addToRunTimeSelectionTable + ( + wallLubricationModel, + Frank, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::Frank::Frank +( + const dictionary& dict, + const phasePair& pair +) +: + wallLubricationModel(dict, pair), + Cwd_("Cwd", dimless, dict.lookup("Cwd")), + Cwc_("Cwc", dimless, dict.lookup("Cwc")), + p_(readScalar(dict.lookup("p"))) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::Frank::~Frank() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> Foam::wallLubricationModels::Frank::Fi() const +{ + volVectorField Ur(pair_.Ur()); + + const volVectorField& n(nWall()); + const volScalarField& y(yWall()); + + volScalarField Eo(pair_.Eo()); + volScalarField yTilde(y/(Cwc_*pair_.dispersed().d())); + + return + ( + pos(Eo - 1.0)*neg(Eo - 5.0)*exp(-0.933*Eo + 0.179) + + pos(Eo - 5.0)*neg(Eo - 33.0)*(0.00599*Eo - 0.0187) + + pos(Eo - 33.0)*0.179 + ) + *max + ( + dimensionedScalar("zero", dimless/dimLength, 0.0), + (1.0 - yTilde)/(Cwd_*y*pow(yTilde, p_ - 1.0)) + ) + *pair_.continuous().rho() + *magSqr(Ur - (Ur & n)*n) + *n; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H new file mode 100644 index 00000000000..51527fd80b1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H @@ -0,0 +1,122 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModels::Frank + +Description + Wall lubrication model of Frank. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M. + PhD Thesis + April 2013 + \endverbatim + + \verbatim + "Advances in Computational Fluid Dynamics (CFD) of 3-dimensional Gas- + Liquid Multiphase Flows" + Frank, T. + NAFEMS Seminar: Simulation of Complex Flows (CFD), April 2005, pp. 1-18 + \endverbatim + +SourceFiles + Frank.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Frank_H +#define Frank_H + +#include "wallLubricationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace wallLubricationModels +{ + +/*---------------------------------------------------------------------------*\ + Class Frank Declaration +\*---------------------------------------------------------------------------*/ + +class Frank +: + public wallLubricationModel +{ + // Private data + + //- Coefficient d + const dimensionedScalar Cwd_; + + //- Coefficient c + const dimensionedScalar Cwc_; + + //- Power p + const scalar p_; + + +public: + + //- Runtime type information + TypeName("Frank"); + + + // Constructors + + //- Construct from components + Frank + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Frank(); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + tmp<volVectorField> Fi() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace wallLubricationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C new file mode 100644 index 00000000000..c3db3597af6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaWallLubrication.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallLubricationModels +{ + defineTypeNameAndDebug(TomiyamaWallLubrication, 0); + addToRunTimeSelectionTable + ( + wallLubricationModel, + TomiyamaWallLubrication, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::TomiyamaWallLubrication::TomiyamaWallLubrication +( + const dictionary& dict, + const phasePair& pair +) +: + wallLubricationModel(dict, pair), + D_("Cwd", dimLength, dict.lookup("D")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::TomiyamaWallLubrication::~TomiyamaWallLubrication() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> +Foam::wallLubricationModels::TomiyamaWallLubrication::Fi() const +{ + volVectorField Ur(pair_.Ur()); + + const volVectorField& n(nWall()); + const volScalarField& y(yWall()); + + volScalarField Eo(pair_.Eo()); + + return + ( + pos(Eo - 1.0)*neg(Eo - 5.0)*exp(-0.933*Eo + 0.179) + + pos(Eo - 5.0)*neg(Eo - 33.0)*(0.00599*Eo - 0.0187) + + pos(Eo - 33.0)*0.179 + ) + *0.5 + *pair_.dispersed().d() + *( + 1/sqr(y) + - 1/sqr(D_ - y) + ) + *pair_.continuous().rho() + *magSqr(Ur - (Ur & n)*n) + *n; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H new file mode 100644 index 00000000000..9d37bbbd176 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModels::TomiyamaWallLubrication + +Description + Wall lubrication model of Tomiyama. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M. + PhD Thesis, April 2013 + \endverbatim + + \verbatim + "Struggle with Computational Bubble Dynamics" + Tomiyama, A., + Multiphase Science and Technology + Volume 10, Issue 4, 1998, pp. 369-405 + \endverbatim + +SourceFiles + TomiyamaWallLubrication.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaWallLubrication_H +#define TomiyamaWallLubrication_H + +#include "wallLubricationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace wallLubricationModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaWallLubrication Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaWallLubrication +: + public wallLubricationModel +{ + // Private data + + //- Characteristic channel dimension + const dimensionedScalar D_; + + +public: + + //- Runtime type information + TypeName("Tomiyama"); + + + // Constructors + + //- Construct from components + TomiyamaWallLubrication + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~TomiyamaWallLubrication(); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + tmp<volVectorField> Fi() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace wallLubricationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C new file mode 100644 index 00000000000..8de7e302608 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noWallLubrication.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallLubricationModels +{ + defineTypeNameAndDebug(noWallLubrication, 0); + addToRunTimeSelectionTable + ( + wallLubricationModel, + noWallLubrication, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::noWallLubrication::noWallLubrication +( + const dictionary& dict, + const phasePair& pair +) +: + wallLubricationModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::noWallLubrication::~noWallLubrication() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> +Foam::wallLubricationModels::noWallLubrication::Fi() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + "noWallLubrication:Fi", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedVector("zero", dimF, vector::zero) + ) + ); +} + + +Foam::tmp<Foam::volVectorField> +Foam::wallLubricationModels::noWallLubrication::F() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + "noWallLubrication:F", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedVector("zero", dimF, vector::zero) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H new file mode 100644 index 00000000000..81a2c0327e3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModels::noWallLubrication + +Description + +SourceFiles + noWallLubrication.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noWallLubrication_H +#define noWallLubrication_H + +#include "wallLubricationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace wallLubricationModels +{ + +/*---------------------------------------------------------------------------*\ + Class noWallLubrication Declaration +\*---------------------------------------------------------------------------*/ + +class noWallLubrication +: + public wallLubricationModel +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from components + noWallLubrication + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~noWallLubrication(); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + tmp<volVectorField> Fi() const; + + //- Wall lubrication force + tmp<volVectorField> F() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace wallLubricationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C new file mode 100644 index 00000000000..9f7d905c197 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "wallLubricationModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::wallLubricationModel> Foam::wallLubricationModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word wallLubricationModelType(dict.lookup("type")); + + Info<< "Selecting wallLubricationModel for " + << pair << ": " << wallLubricationModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(wallLubricationModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("wallLubricationModel::New") + << "Unknown wallLubricationModelType type " + << wallLubricationModelType << endl << endl + << "Valid wallLubricationModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C new file mode 100644 index 00000000000..2f3cb1aaa03 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "wallLubricationModel.H" +#include "phasePair.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(wallLubricationModel, 0); + defineRunTimeSelectionTable(wallLubricationModel, dictionary); +} + +const Foam::dimensionSet Foam::wallLubricationModel::dimF(1, -2, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModel::wallLubricationModel +( + const dictionary& dict, + const phasePair& pair +) +: + wallDependentModel(pair.phase1().mesh()), + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModel::~wallLubricationModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> Foam::wallLubricationModel::F() const +{ + return pair_.dispersed()*Fi(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::wallLubricationModel::Ff() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + fvc::interpolate(pair_.dispersed()) + *(fvc::interpolate(Fi()) & mesh.Sf()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H new file mode 100644 index 00000000000..b55415aeb62 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModel + +Description + +SourceFiles + wallLubricationModel.C + newWallLubricationModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef wallLubricationModel_H +#define wallLubricationModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "wallDependentModel.H" +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class wallLubricationModel Declaration +\*---------------------------------------------------------------------------*/ + +class wallLubricationModel +: + public wallDependentModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("wallLubricationModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + wallLubricationModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimF; + + + // Constructors + + //- Construct from components + wallLubricationModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~wallLubricationModel(); + + + // Selectors + + static autoPtr<wallLubricationModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + virtual tmp<volVectorField> Fi() const = 0; + + //- Return wall lubrication force + virtual tmp<volVectorField> F() const; + + //- Return face wall lubrication force + virtual tmp<surfaceScalarField> Ff() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H new file mode 100644 index 00000000000..424182f859c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H @@ -0,0 +1,63 @@ +Info<< "Constructing momentum equations" << endl; + +MRF.correctBoundaryVelocity(U1); +MRF.correctBoundaryVelocity(U2); + +fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime); +fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime); + +volScalarField Kd(fluid.Kd()); + +{ + volScalarField Vm(fluid.Vm()); + + { + U1Eqn = + ( + fvm::ddt(alpha1, rho1, U1) + fvm::div(alphaRhoPhi1, U1) + - fvm::Sp(phase1.continuityError(), U1) + + MRF.DDt(alpha1*rho1, U1) + + phase1.turbulence().divDevRhoReff(U1) + == + - Vm + *( + fvm::ddt(U1) + + fvm::div(phi1, U1) + - fvm::Sp(fvc::div(phi1), U1) + - phase2.DUDt() + ) + - MRF.DDt(Vm, U1 - U2) + + fvOptions(alpha1, rho1, U1) + ); + U1Eqn.relax(); + U1Eqn += fvm::Sp(Kd, U1); + fvOptions.constrain(U1Eqn); + U1.correctBoundaryConditions(); + fvOptions.correct(U1); + } + + { + U2Eqn = + ( + fvm::ddt(alpha2, rho2, U2) + fvm::div(alphaRhoPhi2, U2) + - fvm::Sp(phase2.continuityError(), U2) + + MRF.DDt(alpha2*rho2, U2) + + phase2.turbulence().divDevRhoReff(U2) + == + - Vm + *( + fvm::ddt(U2) + + fvm::div(phi2, U2) + - fvm::Sp(fvc::div(phi2), U2) + - phase1.DUDt() + ) + - MRF.DDt(Vm, U2 - U1) + + fvOptions(alpha2, rho2, U2) + ); + U2Eqn.relax(); + U2Eqn += fvm::Sp(Kd, U2); + fvOptions.constrain(U2Eqn); + U2.correctBoundaryConditions(); + fvOptions.correct(U2); + } +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H new file mode 100644 index 00000000000..30ce7b221f3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H @@ -0,0 +1,398 @@ +surfaceScalarField alphaf1("alphaf1", fvc::interpolate(alpha1)); +surfaceScalarField alphaf2("alphaf2", scalar(1) - alphaf1); + +volScalarField rAU1 +( + IOobject::groupName("rAU", phase1.name()), + 1.0 + /( + U1Eqn.A() + + max(phase1.residualAlpha() - alpha1, scalar(0)) + *rho1/runTime.deltaT() + ) +); +volScalarField rAU2 +( + IOobject::groupName("rAU", phase2.name()), + 1.0 + /( + U2Eqn.A() + + max(phase2.residualAlpha() - alpha2, scalar(0)) + *rho2/runTime.deltaT() + ) +); + +surfaceScalarField alpharAUf1 +( + fvc::interpolate(max(alpha1, phase1.residualAlpha())*rAU1) +); +surfaceScalarField alpharAUf2 +( + fvc::interpolate(max(alpha2, phase2.residualAlpha())*rAU2) +); + +// Turbulent diffusion, particle-pressure, lift and wall-lubrication fluxes +tmp<surfaceScalarField> phiF1; +tmp<surfaceScalarField> phiF2; +{ + // Turbulent-dispersion diffusivity + volScalarField D(fluid.D()); + + // Phase-1 turbulent dispersion and particle-pressure flux + surfaceScalarField Df1 + ( + fvc::interpolate + ( + rAU1*(D + phase1.turbulence().pPrime()) + ) + ); + + // Phase-2 turbulent dispersion and particle-pressure flux + surfaceScalarField Df2 + ( + fvc::interpolate + ( + rAU2*(D + phase2.turbulence().pPrime()) + ) + ); + + // Cache the net diffusivity for implicit diffusion treatment in the + // phase-fraction equation + if (implicitPhasePressure) + { + fluid.pPrimeByA() = Df1 + Df2; + } + + // Lift and wall-lubrication forces + volVectorField F(fluid.F()); + + // Phase-fraction face-gradient + surfaceScalarField snGradAlpha1(fvc::snGrad(alpha1)*mesh.magSf()); + + // Phase-1 dispersion, lift and wall-lubrication flux + phiF1 = + ( + Df1*snGradAlpha1 + + (fvc::interpolate(rAU1*F) & mesh.Sf()) + ); + + // Phase-1 dispersion, lift and wall-lubrication flux + phiF2 = + ( + - Df2*snGradAlpha1 + - (fvc::interpolate(rAU2*F) & mesh.Sf()) + ); +} + + +// --- Pressure corrector loop +while (pimple.correct()) +{ + // Update continuity errors due to temperature changes + #include "correctContErrs.H" + + // Correct fixed-flux BCs to be consistent with the velocity BCs + MRF.correctBoundaryFlux(U1, phi1); + MRF.correctBoundaryFlux(U2, phi2); + + volVectorField HbyA1 + ( + IOobject::groupName("HbyA", phase1.name()), + U1 + ); + HbyA1 = + rAU1 + *( + U1Eqn.H() + + max(phase1.residualAlpha() - alpha1, scalar(0)) + *rho1*U1.oldTime()/runTime.deltaT() + ); + + volVectorField HbyA2 + ( + IOobject::groupName("HbyA", phase2.name()), + U2 + ); + HbyA2 = + rAU2 + *( + U2Eqn.H() + + max(phase2.residualAlpha() - alpha2, scalar(0)) + *rho2*U2.oldTime()/runTime.deltaT() + ); + + // Mean density for buoyancy force and p_rgh -> p + volScalarField rho("rho", fluid.rho()); + + surfaceScalarField ghSnGradRho + ( + "ghSnGradRho", + ghf*fvc::snGrad(rho)*mesh.magSf() + ); + + surfaceScalarField phig1 + ( + alpharAUf1 + *( + ghSnGradRho + - alphaf2*fvc::interpolate(rho1 - rho2)*(g & mesh.Sf()) + ) + ); + + surfaceScalarField phig2 + ( + alpharAUf2 + *( + ghSnGradRho + - alphaf1*fvc::interpolate(rho2 - rho1)*(g & mesh.Sf()) + ) + ); + + + // ddtPhiCorr filter -- only apply in pure(ish) phases + surfaceScalarField alphaf1Bar(fvc::interpolate(fvc::average(alphaf1))); + surfaceScalarField phiCorrCoeff1(pos(alphaf1Bar - 0.99)); + surfaceScalarField phiCorrCoeff2(pos(0.01 - alphaf1Bar)); + + forAll(mesh.boundary(), patchi) + { + // Set ddtPhiCorr to 0 on non-coupled boundaries + if + ( + !mesh.boundary()[patchi].coupled() + || isA<cyclicAMIFvPatch>(mesh.boundary()[patchi]) + ) + { + phiCorrCoeff1.boundaryField()[patchi] = 0; + phiCorrCoeff2.boundaryField()[patchi] = 0; + } + } + + // Phase-1 predicted flux + surfaceScalarField phiHbyA1 + ( + IOobject::groupName("phiHbyA", phase1.name()), + (fvc::interpolate(HbyA1) & mesh.Sf()) + + phiCorrCoeff1*fvc::interpolate(alpha1.oldTime()*rho1.oldTime()*rAU1) + *( + MRF.absolute(phi1.oldTime()) + - (fvc::interpolate(U1.oldTime()) & mesh.Sf()) + )/runTime.deltaT() + - phiF1() + - phig1 + ); + + // Phase-2 predicted flux + surfaceScalarField phiHbyA2 + ( + IOobject::groupName("phiHbyA", phase2.name()), + (fvc::interpolate(HbyA2) & mesh.Sf()) + + phiCorrCoeff2*fvc::interpolate(alpha2.oldTime()*rho2.oldTime()*rAU2) + *( + MRF.absolute(phi2.oldTime()) + - (fvc::interpolate(U2.oldTime()) & mesh.Sf()) + )/runTime.deltaT() + - phiF2() + - phig2 + ); + + // Face-drag coefficients + surfaceScalarField rAUKd1(fvc::interpolate(rAU1*Kd)); + surfaceScalarField rAUKd2(fvc::interpolate(rAU2*Kd)); + + // Construct the mean predicted flux + // including explicit drag contributions based on absolute fluxes + surfaceScalarField phiHbyA + ( + "phiHbyA", + alphaf1*(phiHbyA1 + rAUKd1*MRF.absolute(phi2)) + + alphaf2*(phiHbyA2 + rAUKd2*MRF.absolute(phi1)) + ); + MRF.makeRelative(phiHbyA); + + // Construct pressure "diffusivity" + surfaceScalarField rAUf + ( + "rAUf", + mag(alphaf1*alpharAUf1 + alphaf2*alpharAUf2) + ); + + // Update the fixedFluxPressure BCs to ensure flux consistency + setSnGrad<fixedFluxPressureFvPatchScalarField> + ( + p_rgh.boundaryField(), + ( + phiHbyA.boundaryField() + - ( + alphaf1.boundaryField()*phi1.boundaryField() + + alphaf2.boundaryField()*phi2.boundaryField() + ) + )/(mesh.magSf().boundaryField()*rAUf.boundaryField()) + ); + + tmp<fvScalarMatrix> pEqnComp1; + tmp<fvScalarMatrix> pEqnComp2; + + // Construct the compressibility parts of the pressure equation + if (pimple.transonic()) + { + surfaceScalarField phid1 + ( + IOobject::groupName("phid", phase1.name()), + fvc::interpolate(psi1)*phi1 + ); + surfaceScalarField phid2 + ( + IOobject::groupName("phid", phase2.name()), + fvc::interpolate(psi2)*phi2 + ); + + pEqnComp1 = + ( + phase1.continuityError() - fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1/rho1)*correction + ( + psi1*fvm::ddt(p_rgh) + + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) + ); + deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr()); + pEqnComp1().relax(); + + pEqnComp2 = + ( + phase2.continuityError() + fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2/rho2)*correction + ( + psi2*fvm::ddt(p_rgh) + + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) + ); + deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr()); + pEqnComp2().relax(); + } + else + { + pEqnComp1 = + ( + phase1.continuityError() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh)); + + pEqnComp2 = + ( + phase2.continuityError() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh)); + } + + // Cache p prior to solve for density update + volScalarField p_rgh_0(p_rgh); + + // Iterate over the pressure equation to correct for non-orthogonality + while (pimple.correctNonOrthogonal()) + { + // Construct the transport part of the pressure equation + fvScalarMatrix pEqnIncomp + ( + fvc::div(phiHbyA) + - fvm::laplacian(rAUf, p_rgh) + ); + + solve + ( + pEqnComp1() + pEqnComp2() + pEqnIncomp, + mesh.solver(p_rgh.select(pimple.finalInnerIter())) + ); + + // Correct fluxes and velocities on last non-orthogonal iteration + if (pimple.finalNonOrthogonalIter()) + { + phi = phiHbyA + pEqnIncomp.flux(); + + surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf); + + // Partial-elimination phase-flux corrector + { + surfaceScalarField phi1s + ( + phiHbyA1 + alpharAUf1*mSfGradp + ); + + surfaceScalarField phi2s + ( + phiHbyA2 + alpharAUf2*mSfGradp + ); + + surfaceScalarField phir + ( + ((phi1s + rAUKd1*phi2s) - (phi2s + rAUKd2*phi1s)) + /(1 - rAUKd1*rAUKd2) + ); + + phi1 = phi + alphaf2*phir; + phi2 = phi - alphaf1*phir; + } + + // Compressibility correction for phase-fraction equations + fluid.dgdt() = + ( + alpha1*(pEqnComp2 & p_rgh) + - alpha2*(pEqnComp1 & p_rgh) + ); + + // Optionally relax pressure for velocity correction + p_rgh.relax(); + + mSfGradp = pEqnIncomp.flux()/rAUf; + + // Partial-elimination phase-velocity corrector + { + volVectorField Us1 + ( + HbyA1 + + fvc::reconstruct(alpharAUf1*mSfGradp - phiF1() - phig1) + ); + + volVectorField Us2 + ( + HbyA2 + + fvc::reconstruct(alpharAUf2*mSfGradp - phiF2() - phig2) + ); + + volScalarField D1(rAU1*Kd); + volScalarField D2(rAU2*Kd); + + volVectorField U(alpha1*(Us1 + D1*U2) + alpha2*(Us2 + D2*U1)); + volVectorField Ur(((1 - D2)*Us1 - (1 - D1)*Us2)/(1 - D1*D2)); + + U1 = U + alpha2*Ur; + U1.correctBoundaryConditions(); + fvOptions.correct(U1); + + U2 = U - alpha1*Ur; + U2.correctBoundaryConditions(); + fvOptions.correct(U2); + } + } + } + + // Update and limit the static pressure + p = max(p_rgh + rho*gh, pMin); + + // Limit p_rgh + p_rgh = p - rho*gh; + + // Update densities from change in p_rgh + rho1 += psi1*(p_rgh - p_rgh_0); + rho2 += psi2*(p_rgh - p_rgh_0); + + // Correct p_rgh for consistency with p and the updated densities + rho = fluid.rho(); + p_rgh = p - rho*gh; + p_rgh.correctBoundaryConditions(); +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H new file mode 100644 index 00000000000..63b61cd61a7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H @@ -0,0 +1,9 @@ + ddtPhi1 = + ( + (phi1 - phi1.oldTime())/runTime.deltaT() + ); + + ddtPhi2 = + ( + (phi2 - phi2.oldTime())/runTime.deltaT() + ); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H new file mode 100644 index 00000000000..0303eea106f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H @@ -0,0 +1,51 @@ +Info<< "Constructing face momentum equations" << endl; + +MRF.correctBoundaryVelocity(U1); +MRF.correctBoundaryVelocity(U2); + +fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime); +fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime); + +{ + volScalarField Vm(fluid.Vm()); + + fvVectorMatrix UgradU1 + ( + fvm::div(phi1, U1) - fvm::Sp(fvc::div(phi1), U1) + + MRF.DDt(U1) + ); + + fvVectorMatrix UgradU2 + ( + fvm::div(phi2, U2) - fvm::Sp(fvc::div(phi2), U2) + + MRF.DDt(U2) + ); + + { + U1Eqn = + ( + fvm::div(alphaRhoPhi1, U1) - fvm::Sp(fvc::div(alphaRhoPhi1), U1) + + MRF.DDt(alpha1*rho1, U1) + + phase1.turbulence().divDevRhoReff(U1) + + Vm*(UgradU1 - (UgradU2 & U2)) + ); + U1Eqn.relax(); + fvOptions.constrain(U1Eqn); + U1.correctBoundaryConditions(); + fvOptions.correct(U1); + } + + { + U2Eqn = + ( + fvm::div(alphaRhoPhi2, U2) - fvm::Sp(fvc::div(alphaRhoPhi2), U2) + + MRF.DDt(alpha2*rho2, U2) + + phase2.turbulence().divDevRhoReff(U2) + + Vm*(UgradU2 - (UgradU1 & U1)) + ); + U2Eqn.relax(); + fvOptions.constrain(U2Eqn); + U2.correctBoundaryConditions(); + fvOptions.correct(U2); + } +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H new file mode 100644 index 00000000000..7445d4af23f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H @@ -0,0 +1,9 @@ + surfaceScalarField ddtPhi1 + ( + (phi1 - phi1.oldTime())/runTime.deltaT() + ); + + surfaceScalarField ddtPhi2 + ( + (phi2 - phi2.oldTime())/runTime.deltaT() + ); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H new file mode 100644 index 00000000000..c48f0b07c7e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H @@ -0,0 +1,348 @@ +surfaceScalarField alphaf1("alphaf1", fvc::interpolate(alpha1)); +surfaceScalarField alphaf2("alphaf2", scalar(1) - alphaf1); + +surfaceScalarField alphaRhof10 +( + "alphaRhof10", + fvc::interpolate + ( + max(alpha1.oldTime(), phase1.residualAlpha()) + *rho1.oldTime() + ) +); + +surfaceScalarField alphaRhof20 +( + "alphaRhof20", + fvc::interpolate + ( + max(alpha2.oldTime(), phase2.residualAlpha()) + *rho2.oldTime() + ) +); + +// Drag coefficient +surfaceScalarField Kdf("Kdf", fluid.Kdf()); + +// Virtual-mass coefficient +surfaceScalarField Vmf("Vmf", fluid.Vmf()); + +surfaceScalarField rAUf1 +( + IOobject::groupName("rAUf", phase1.name()), + 1.0 + /( + (alphaRhof10 + Vmf)/runTime.deltaT() + + fvc::interpolate(U1Eqn.A()) + + Kdf + ) +); + +surfaceScalarField rAUf2 +( + IOobject::groupName("rAUf", phase2.name()), + 1.0 + /( + (alphaRhof20 + Vmf)/runTime.deltaT() + + fvc::interpolate(U2Eqn.A()) + + Kdf + ) +); + + +// Turbulent dispersion, particle-pressure, lift and wall-lubrication forces +tmp<surfaceScalarField> Ff1; +tmp<surfaceScalarField> Ff2; +{ + // Turbulent-dispersion diffusivity + volScalarField D(fluid.D()); + + // Phase-1 turbulent dispersion and particle-pressure diffusivity + surfaceScalarField Df1 + ( + fvc::interpolate(D + phase1.turbulence().pPrime()) + ); + + // Phase-2 turbulent dispersion and particle-pressure diffusivity + surfaceScalarField Df2 + ( + fvc::interpolate(D + phase2.turbulence().pPrime()) + ); + + // Cache the net diffusivity for implicit diffusion treatment in the + // phase-fraction equation + if (implicitPhasePressure) + { + fluid.pPrimeByA() = rAUf1*Df1 + rAUf2*Df2; + } + + // Lift and wall-lubrication forces + surfaceScalarField Ff(fluid.Ff()); + + // Phase-fraction face-gradient + surfaceScalarField snGradAlpha1(fvc::snGrad(alpha1)*mesh.magSf()); + + // Phase-1 dispersion, lift and wall-lubrication force + Ff1 = Df1*snGradAlpha1 + Ff; + + // Phase-2 dispersion, lift and wall-lubrication force + Ff2 = -Df2*snGradAlpha1 - Ff; +} + + +while (pimple.correct()) +{ + // Update continuity errors due to temperature changes + #include "correctContErrs.H" + + surfaceScalarField rhof1(fvc::interpolate(rho1)); + surfaceScalarField rhof2(fvc::interpolate(rho2)); + + // Correct fixed-flux BCs to be consistent with the velocity BCs + MRF.correctBoundaryFlux(U1, phi1); + MRF.correctBoundaryFlux(U2, phi2); + + surfaceScalarField alpharAUf1 + ( + IOobject::groupName("alpharAUf", phase1.name()), + max(alphaf1, phase1.residualAlpha())*rAUf1 + ); + + surfaceScalarField alpharAUf2 + ( + IOobject::groupName("alpharAUf", phase2.name()), + max(alphaf2, phase2.residualAlpha())*rAUf2 + ); + + volScalarField rho("rho", fluid.rho()); + surfaceScalarField ghSnGradRho + ( + "ghSnGradRho", + ghf*fvc::snGrad(rho)*mesh.magSf() + ); + + // Phase-1 buoyancy flux + surfaceScalarField phig1 + ( + IOobject::groupName("phig", phase1.name()), + alpharAUf1 + *( + ghSnGradRho + - alphaf2*(rhof1 - rhof2)*(g & mesh.Sf()) + ) + ); + + // Phase-2 buoyancy flux + surfaceScalarField phig2 + ( + IOobject::groupName("phig", phase2.name()), + alpharAUf2 + *( + ghSnGradRho + - alphaf1*(rhof2 - rhof1)*(g & mesh.Sf()) + ) + ); + + + // Phase-1 predicted flux + surfaceScalarField phiHbyA1 + ( + IOobject::groupName("phiHbyA", phase1.name()), + phi1 + ); + + phiHbyA1 = + rAUf1 + *( + (alphaRhof10 + Vmf) + *MRF.absolute(phi1.oldTime())/runTime.deltaT() + + (fvc::interpolate(U1Eqn.H()) & mesh.Sf()) + + Vmf*ddtPhi2 + + Kdf*MRF.absolute(phi2) + - Ff1() + ); + + // Phase-2 predicted flux + surfaceScalarField phiHbyA2 + ( + IOobject::groupName("phiHbyA", phase2.name()), + phi2 + ); + + phiHbyA2 = + rAUf2 + *( + (alphaRhof20 + Vmf) + *MRF.absolute(phi2.oldTime())/runTime.deltaT() + + (fvc::interpolate(U2Eqn.H()) & mesh.Sf()) + + Vmf*ddtPhi1 + + Kdf*MRF.absolute(phi1) + - Ff2() + ); + + + surfaceScalarField phiHbyA + ( + "phiHbyA", + alphaf1*(phiHbyA1 - phig1) + alphaf2*(phiHbyA2 - phig2) + ); + MRF.makeRelative(phiHbyA); + + phiHbyA1 -= phig1; + phiHbyA2 -= phig2; + + surfaceScalarField rAUf + ( + "rAUf", + mag(alphaf1*alpharAUf1 + alphaf2*alpharAUf2) + ); + + // Update the fixedFluxPressure BCs to ensure flux consistency + setSnGrad<fixedFluxPressureFvPatchScalarField> + ( + p_rgh.boundaryField(), + ( + phiHbyA.boundaryField() + - ( + alphaf1.boundaryField()*phi1.boundaryField() + + alphaf2.boundaryField()*phi2.boundaryField() + ) + )/(mesh.magSf().boundaryField()*rAUf.boundaryField()) + ); + + tmp<fvScalarMatrix> pEqnComp1; + tmp<fvScalarMatrix> pEqnComp2; + + if (pimple.transonic()) + { + surfaceScalarField phid1 + ( + IOobject::groupName("phid", phase1.name()), + fvc::interpolate(psi1)*phi1 + ); + surfaceScalarField phid2 + ( + IOobject::groupName("phid", phase2.name()), + fvc::interpolate(psi2)*phi2 + ); + + pEqnComp1 = + ( + phase1.continuityError() - fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1/rho1)*correction + ( + psi1*fvm::ddt(p_rgh) + + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) + ); + deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr()); + pEqnComp1().relax(); + + pEqnComp2 = + ( + phase2.continuityError() + fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2/rho2)*correction + ( + psi2*fvm::ddt(p_rgh) + + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) + ); + deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr()); + pEqnComp2().relax(); + } + else + { + pEqnComp1 = + ( + phase1.continuityError() - fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh)); + + pEqnComp2 = + ( + phase2.continuityError() + fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh)); + } + + // Cache p prior to solve for density update + volScalarField p_rgh_0("p_rgh_0", p_rgh); + + while (pimple.correctNonOrthogonal()) + { + fvScalarMatrix pEqnIncomp + ( + fvc::div(phiHbyA) + - fvm::laplacian(rAUf, p_rgh) + ); + + solve + ( + pEqnComp1() + pEqnComp2() + pEqnIncomp, + mesh.solver(p_rgh.select(pimple.finalInnerIter())) + ); + + if (pimple.finalNonOrthogonalIter()) + { + surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf); + + phi = phiHbyA + pEqnIncomp.flux(); + + surfaceScalarField phi1s + ( + phiHbyA1 + + alpharAUf1*mSfGradp + - rAUf1*Kdf*MRF.absolute(phi2) + ); + + surfaceScalarField phi2s + ( + phiHbyA2 + + alpharAUf2*mSfGradp + - rAUf2*Kdf*MRF.absolute(phi1) + ); + + surfaceScalarField phir + ( + ((phi2s + rAUf2*Kdf*phi1s) - (phi1s + rAUf1*Kdf*phi2s)) + /(1.0 - rAUf1*rAUf2*sqr(Kdf)) + ); + + phi1 = phi - alphaf2*phir; + phi2 = phi + alphaf1*phir; + + U1 = fvc::reconstruct(MRF.absolute(phi1)); + U1.correctBoundaryConditions(); + fvOptions.correct(U1); + + U2 = fvc::reconstruct(MRF.absolute(phi2)); + U2.correctBoundaryConditions(); + fvOptions.correct(U2); + + fluid.dgdt() = + ( + alpha1*(pEqnComp2 & p_rgh) + - alpha2*(pEqnComp1 & p_rgh) + ); + } + } + + // Update and limit the static pressure + p = max(p_rgh + rho*gh, pMin); + + // Limit p_rgh + p_rgh = p - rho*gh; + + // Update densities from change in p_rgh + rho1 += psi1*(p_rgh - p_rgh_0); + rho2 += psi2*(p_rgh - p_rgh_0); + + // Correct p_rgh for consistency with p and the updated densities + rho = fluid.rho(); + p_rgh = p - rho*gh; + p_rgh.correctBoundaryConditions(); +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files new file mode 100644 index 00000000000..eccde529bd8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files @@ -0,0 +1,38 @@ +phaseCompressibleTurbulenceModels.C +phasePressureModel/phasePressureModel.C + +kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C + +kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C +kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C +kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C +kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C +kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C +kineticTheoryModels/viscosityModel/none/noneViscosity.C + +kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C +kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C +kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C +kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C +kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C + +kineticTheoryModels/radialModel/radialModel/radialModel.C +kineticTheoryModels/radialModel/radialModel/newRadialModel.C +kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C +kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C +kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C + +kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C +kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C +kineticTheoryModels/granularPressureModel/Lun/LunPressure.C +kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C + +kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C +kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C +kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C +kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C + +kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C +kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C + +LIB = $(FOAM_LIBBIN)/libphaseReactingTurbulenceModels diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options new file mode 100644 index 00000000000..96fecff16d3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options @@ -0,0 +1,11 @@ +EXE_INC = \ + -I../phaseSystems/lnInclude \ + -I../interfacialModels/lnInclude\ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/transportModels/incompressible/transportModel \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C new file mode 100644 index 00000000000..7a454304631 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C @@ -0,0 +1,172 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "kOmegaSSTSato.H" +#include "addToRunTimeSelectionTable.H" +#include "twoPhaseSystem.H" +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasicTurbulenceModel> +kOmegaSSTSato<BasicTurbulenceModel>::kOmegaSSTSato +( + const alphaField& alpha, + const rhoField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& transport, + const word& propertiesName, + const word& type +) +: + kOmegaSST<BasicTurbulenceModel> + ( + alpha, + rho, + U, + alphaRhoPhi, + phi, + transport, + propertiesName, + type + ), + + gasTurbulencePtr_(NULL), + + Cmub_ + ( + dimensioned<scalar>::lookupOrAddToDict + ( + "Cmub", + this->coeffDict_, + 0.6 + ) + ) +{ + if (type == typeName) + { + correctNut(); + this->printCoeffs(type); + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasicTurbulenceModel> +bool kOmegaSSTSato<BasicTurbulenceModel>::read() +{ + if (kOmegaSST<BasicTurbulenceModel>::read()) + { + Cmub_.readIfPresent(this->coeffDict()); + + return true; + } + else + { + return false; + } +} + +template<class BasicTurbulenceModel> +const PhaseCompressibleTurbulenceModel +< + typename BasicTurbulenceModel::transportModel +>& +kOmegaSSTSato<BasicTurbulenceModel>::gasTurbulence() const +{ + if (!gasTurbulencePtr_) + { + const volVectorField& U = this->U_; + + const transportModel& liquid = this->transport(); + const twoPhaseSystem& fluid = + refCast<const twoPhaseSystem>(liquid.fluid()); + const transportModel& gas = fluid.otherPhase(liquid); + + gasTurbulencePtr_ = + &U.db() + .lookupObject<PhaseCompressibleTurbulenceModel<transportModel> > + ( + IOobject::groupName + ( + turbulenceModel::propertiesName, + gas.name() + ) + ); + } + + return *gasTurbulencePtr_; +} + + +template<class BasicTurbulenceModel> +void kOmegaSSTSato<BasicTurbulenceModel>::correctNut() +{ + const PhaseCompressibleTurbulenceModel<transportModel>& gasTurbulence = + this->gasTurbulence(); + + volScalarField yPlus + ( + pow(this->betaStar_, 0.25)*this->y_*sqrt(this->k_)/this->nu() + ); + + this->nut_ = + this->a1_*this->k_ + /max + ( + this->a1_*this->omega_, + this->F23()*sqrt(2.0)*mag(symm(fvc::grad(this->U_))) + ) + + sqr(1 - exp(-yPlus/16.0)) + *Cmub_*gasTurbulence.transport().d()*gasTurbulence.alpha() + *(mag(this->U_ - gasTurbulence.U())); + + this->nut_.correctBoundaryConditions(); +} + + +template<class BasicTurbulenceModel> +void kOmegaSSTSato<BasicTurbulenceModel>::correct() +{ + kOmegaSST<BasicTurbulenceModel>::correct(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H new file mode 100644 index 00000000000..6d0f720b7df --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H @@ -0,0 +1,217 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::RASModels::kOmegaSSTSato + +Group + grpRASTurbulence + +Description + Implementation of the k-omega-SST turbulence model for dispersed bubbly + flows with Sato (1981) bubble induced turbulent viscosity model. + + Bubble induced turbulent viscosity model described in: + \verbatim + Sato, Y., Sadatomi, M. + "Momentum and heat transfer in two-phase bubble flow - I, Theory" + International Journal of Multiphase FLow 7, pp. 167-177, 1981. + \endverbatim + + Turbulence model described in: + \verbatim + Menter, F., Esch, T. + "Elements of Industrial Heat Transfer Prediction" + 16th Brazilian Congress of Mechanical Engineering (COBEM), + Nov. 2001 + \endverbatim + + with the addition of the optional F3 term for rough walls from + \verbatim + Hellsten, A. + "Some Improvements in Menter’s k-omega-SST turbulence model" + 29th AIAA Fluid Dynamics Conference, + AIAA-98-2554, + June 1998. + \endverbatim + + Note that this implementation is written in terms of alpha diffusion + coefficients rather than the more traditional sigma (alpha = 1/sigma) so + that the blending can be applied to all coefficuients in a consistent + manner. The paper suggests that sigma is blended but this would not be + consistent with the blending of the k-epsilon and k-omega models. + + Also note that the error in the last term of equation (2) relating to + sigma has been corrected. + + Wall-functions are applied in this implementation by using equations (14) + to specify the near-wall omega as appropriate. + + The blending functions (15) and (16) are not currently used because of the + uncertainty in their origin, range of applicability and that is y+ becomes + sufficiently small blending u_tau in this manner clearly becomes nonsense. + + The default model coefficients correspond to the following: + \verbatim + kOmegaSSTCoeffs + { + alphaK1 0.85034; + alphaK2 1.0; + alphaOmega1 0.5; + alphaOmega2 0.85616; + Prt 1.0; // only for compressible + beta1 0.075; + beta2 0.0828; + betaStar 0.09; + gamma1 0.5532; + gamma2 0.4403; + a1 0.31; + b1 1.0; + c1 10.0; + F3 no; + Cmub 0.6; + } + \endverbatim + +SourceFiles + kOmegaSST.C + +SourceFiles + kOmegaSSTSato.C + +\*---------------------------------------------------------------------------*/ + +#ifndef kOmegaSSTSato_H +#define kOmegaSSTSato_H + +#include "kOmegaSST.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +/*---------------------------------------------------------------------------*\ + Class kOmegaSSTSato Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasicTurbulenceModel> +class kOmegaSSTSato +: + public kOmegaSST<BasicTurbulenceModel> +{ + // Private data + + mutable const PhaseCompressibleTurbulenceModel + < + typename BasicTurbulenceModel::transportModel + > *gasTurbulencePtr_; + + + // Private Member Functions + + //- Return the turbulence model for the gas phase + const PhaseCompressibleTurbulenceModel + < + typename BasicTurbulenceModel::transportModel + >& + gasTurbulence() const; + + + // Disallow default bitwise copy construct and assignment + kOmegaSSTSato(const kOmegaSSTSato&); + kOmegaSSTSato& operator=(const kOmegaSSTSato&); + + +protected: + + // Protected data + + // Model coefficients + dimensionedScalar Cmub_; + + + // Protected Member Functions + + virtual void correctNut(); + +public: + + typedef typename BasicTurbulenceModel::alphaField alphaField; + typedef typename BasicTurbulenceModel::rhoField rhoField; + typedef typename BasicTurbulenceModel::transportModel transportModel; + + + //- Runtime type information + TypeName("kOmegaSSTSato"); + + + // Constructors + + //- Construct from components + kOmegaSSTSato + ( + const alphaField& alpha, + const rhoField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& transport, + const word& propertiesName = turbulenceModel::propertiesName, + const word& type = typeName + ); + + + //- Destructor + virtual ~kOmegaSSTSato() + {} + + + // Member Functions + + //- Read model coefficients if they have changed + virtual bool read(); + + //- Solve the turbulence equations and correct the turbulence viscosity + virtual void correct(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "kOmegaSSTSato.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C new file mode 100644 index 00000000000..6ef7f1ec83e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GidaspowConductivity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + defineTypeNameAndDebug(Gidaspow, 0); + + addToRunTimeSelectionTable + ( + conductivityModel, + Gidaspow, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::Gidaspow::Gidaspow +( + const dictionary& dict +) +: + conductivityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::Gidaspow::~Gidaspow() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::conductivityModels::Gidaspow::kappa +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + return rho1*da*sqrt(Theta)* + ( + 2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (9.0/8.0)*sqrtPi*g0*0.5*(1.0 + e)*sqr(alpha1) + + (15.0/16.0)*sqrtPi*alpha1 + + (25.0/64.0)*sqrtPi/((1.0 + e)*g0) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H new file mode 100644 index 00000000000..f8987ce13d9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::conductivityModels::Gidaspow + +Description + +SourceFiles + Gidaspow.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Gidaspow_H +#define Gidaspow_H + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + +/*---------------------------------------------------------------------------*\ + Class Gidaspow Declaration +\*---------------------------------------------------------------------------*/ + +class Gidaspow +: + public conductivityModel +{ + +public: + + //- Runtime type information + TypeName("Gidaspow"); + + + // Constructors + + //- Construct from components + Gidaspow(const dictionary& dict); + + + //- Destructor + virtual ~Gidaspow(); + + + // Member Functions + + tmp<volScalarField> kappa + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace conductivityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C new file mode 100644 index 00000000000..55541ac8fab --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C @@ -0,0 +1,114 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "HrenyaSinclairConductivity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + defineTypeNameAndDebug(HrenyaSinclair, 0); + + addToRunTimeSelectionTable + ( + conductivityModel, + HrenyaSinclair, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::HrenyaSinclair +( + const dictionary& dict +) +: + conductivityModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_.lookup("L")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair:: +~HrenyaSinclair() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + volScalarField lamda + ( + scalar(1) + da/(6.0*sqrt(2.0)*(alpha1 + scalar(1.0e-5)))/L_ + ); + + return rho1*da*sqrt(Theta)* + ( + 2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (9.0/8.0)*sqrtPi*g0*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1) + /(49.0/16.0 - 33.0*e/16.0) + + (15.0/16.0)*sqrtPi*alpha1*(0.5*sqr(e) + 0.25*e - 0.75 + lamda) + /((49.0/16.0 - 33.0*e/16.0)*lamda) + + (25.0/64.0)*sqrtPi + /((1.0 + e)*(49.0/16.0 - 33.0*e/16.0)*lamda*g0) + ); +} + + +bool Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + L_.readIfPresent(coeffDict_); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H new file mode 100644 index 00000000000..14ff59acee7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair + +Description + +SourceFiles + HrenyaSinclair.C + +\*---------------------------------------------------------------------------*/ + +#ifndef HrenyaSinclair_H +#define HrenyaSinclair_H + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + +/*---------------------------------------------------------------------------*\ + Class HrenyaSinclair Declaration +\*---------------------------------------------------------------------------*/ + +class HrenyaSinclair +: + public conductivityModel +{ + dictionary coeffDict_; + + //- Characteristic length of geometry + dimensionedScalar L_; + + +public: + + //- Runtime type information + TypeName("HrenyaSinclair"); + + + // Constructors + + //- Construct from components + HrenyaSinclair(const dictionary& dict); + + + //- Destructor + virtual ~HrenyaSinclair(); + + + // Member Functions + + tmp<volScalarField> kappa + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; + + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace conductivityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C new file mode 100644 index 00000000000..2bd6c25f79b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SyamlalConductivity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + defineTypeNameAndDebug(Syamlal, 0); + + addToRunTimeSelectionTable + ( + conductivityModel, + Syamlal, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::Syamlal::Syamlal +( + const dictionary& dict +) +: + conductivityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::Syamlal::~Syamlal() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::conductivityModels::Syamlal::kappa +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + return rho1*da*sqrt(Theta)* + ( + 2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (9.0/8.0)*sqrtPi*g0*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1) + /(49.0/16.0 - 33.0*e/16.0) + + (15.0/32.0)*sqrtPi*alpha1/(49.0/16.0 - 33.0*e/16.0) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H new file mode 100644 index 00000000000..dbc6b8f60a6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::conductivityModels::Syamlal + +Description + +SourceFiles + Syamlal.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Syamlal_H +#define Syamlal_H + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + +/*---------------------------------------------------------------------------*\ + Class Syamlal Declaration +\*---------------------------------------------------------------------------*/ + +class Syamlal +: + public conductivityModel +{ + +public: + + //- Runtime type information + TypeName("Syamlal"); + + + // Constructors + + //- Construct from components + Syamlal(const dictionary& dict); + + + //- Destructor + virtual ~Syamlal(); + + + // Member Functions + + tmp<volScalarField> kappa + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace conductivityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C new file mode 100644 index 00000000000..4cd6368943d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(conductivityModel, 0); + + defineRunTimeSelectionTable(conductivityModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModel::conductivityModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModel::~conductivityModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H new file mode 100644 index 00000000000..6e44f6457a0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H @@ -0,0 +1,133 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::conductivityModel + +SourceFiles + conductivityModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef conductivityModel_H +#define conductivityModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class conductivityModel Declaration +\*---------------------------------------------------------------------------*/ + +class conductivityModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + conductivityModel(const conductivityModel&); + + //- Disallow default bitwise assignment + void operator=(const conductivityModel&); + + +protected: + + // Protected data + + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("conductivityModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + conductivityModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + conductivityModel(const dictionary& dict); + + + // Selectors + + static autoPtr<conductivityModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~conductivityModel(); + + + // Member Functions + + virtual tmp<volScalarField> kappa + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const = 0; + + virtual bool read() + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C new file mode 100644 index 00000000000..a878a097731 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::conductivityModel> +Foam::kineticTheoryModels::conductivityModel::New +( + const dictionary& dict +) +{ + word conductivityModelType(dict.lookup("conductivityModel")); + + Info<< "Selecting conductivityModel " + << conductivityModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(conductivityModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "conductivityModel::New(const dictionary&) : " << endl + << " unknown conductivityModelType type " + << conductivityModelType + << ", constructor not in hash table" << endl << endl + << " Valid conductivityModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() << abort(FatalError); + } + + return autoPtr<conductivityModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C new file mode 100644 index 00000000000..ea28dd01b51 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C @@ -0,0 +1,254 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "JohnsonJacksonParticleSlipFvPatchVectorField.H" +#include "addToRunTimeSelectionTable.H" +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchVectorField, + JohnsonJacksonParticleSlipFvPatchVectorField + ); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const fvPatch& p, + const DimensionedField<vector, volMesh>& iF +) +: + partialSlipFvPatchVectorField(p, iF), + specularityCoefficient_(p.size()) +{} + + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const JohnsonJacksonParticleSlipFvPatchVectorField& ptf, + const fvPatch& p, + const DimensionedField<vector, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + partialSlipFvPatchVectorField(ptf, p, iF, mapper), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const fvPatch& p, + const DimensionedField<vector, volMesh>& iF, + const dictionary& dict +) +: + partialSlipFvPatchVectorField(p, iF), + specularityCoefficient_ + ( + "specularityCoefficient", + dimless, + dict.lookup("specularityCoefficient") + ) +{ + if + ( + (specularityCoefficient_.value() < 0) + || (specularityCoefficient_.value() > 1) + ) + { + FatalErrorIn + ( + "(" + "Foam::JohnsonJacksonParticleSlipFvPatchVectorField::" + "JohnsonJacksonParticleSlipFvPatchVectorField" + "const fvPatch& p," + "const DimensionedField<scalar, volMesh>& iF," + "const dictionary& dict" + ")" + ) << "The specularity coefficient has to be between 0 and 1" + << abort(FatalError); + } + + fvPatchVectorField::operator= + ( + vectorField("value", dict, p.size()) + ); +} + + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const JohnsonJacksonParticleSlipFvPatchVectorField& ptf +) +: + partialSlipFvPatchVectorField(ptf), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const JohnsonJacksonParticleSlipFvPatchVectorField& ptf, + const DimensionedField<vector, volMesh>& iF +) +: + partialSlipFvPatchVectorField(ptf, iF), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::autoMap +( + const fvPatchFieldMapper& m +) +{ + partialSlipFvPatchVectorField::autoMap(m); +} + + +void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::rmap +( + const fvPatchVectorField& ptf, + const labelList& addr +) +{ + partialSlipFvPatchVectorField::rmap(ptf, addr); +} + + +void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::updateCoeffs() +{ + if (updated()) + { + return; + } + + // lookup the fluid model and the phase + const twoPhaseSystem& fluid = db().lookupObject<twoPhaseSystem> + ( + "phaseProperties" + ); + + const phaseModel& phased + ( + fluid.phase1().name() == dimensionedInternalField().group() + ? fluid.phase1() + : fluid.phase2() + ); + + // lookup all the fields on this patch + const fvPatchScalarField& alpha + ( + patch().lookupPatchField<volScalarField, scalar> + ( + phased.volScalarField::name() + ) + ); + + const fvPatchScalarField& gs0 + ( + patch().lookupPatchField<volScalarField, scalar> + ( + IOobject::groupName("gs0", phased.name()) + ) + ); + + const scalarField nu + ( + patch().lookupPatchField<volScalarField, scalar> + ( + IOobject::groupName("nut", phased.name()) + ) + ); + + word ThetaName(IOobject::groupName("Theta", phased.name())); + + const fvPatchScalarField& Theta + ( + db().foundObject<volScalarField>(ThetaName) + ? patch().lookupPatchField<volScalarField, scalar>(ThetaName) + : alpha + ); + + // lookup the packed volume fraction + dimensionedScalar alphaMax + ( + "alphaMax", + dimless, + db() + .lookupObject<IOdictionary> + ( + IOobject::groupName("turbulenceProperties", phased.name()) + ) + .subDict("RAS") + .subDict("kineticTheoryCoeffs") + .lookup("alphaMax") + ); + + // calculate the slip value fraction + scalarField c + ( + constant::mathematical::pi + *alpha + *gs0 + *specularityCoefficient_.value() + *sqrt(3.0*Theta) + /max(6.0*nu*alphaMax.value(), SMALL) + ); + + this->valueFraction() = c/(c + patch().deltaCoeffs()); + + partialSlipFvPatchVectorField::updateCoeffs(); +} + + +void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::write +( + Ostream& os +) const +{ + fvPatchVectorField::write(os); + os.writeKeyword("specularityCoefficient") + << specularityCoefficient_ << token::END_STATEMENT << nl; + writeEntry("value", os); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H new file mode 100644 index 00000000000..1aaa801f0f8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H @@ -0,0 +1,177 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::JohnsonJacksonParticleSlipFvPatchVectorField + +Description + Partial slip boundary condition for the particulate velocity. + + References: + \verbatim + "Multifluid Eulerian modeling of dense gas–solids fluidized bed + hydrodynamics: Influence of the dissipation parameters" + Reuge, N., + Chemical Engineering Science + Volume 63, Issue 22, November 2008, pp. 5540-5551 + \endverbatim + + \verbatim + "Frictional-collisional constitutive relations for granular materials, + with application to plane shearing" + Johnson, P.C., and Jackson, R., + Journal of Fluid Mechanics + Volume 176, March 1987, pp. 67-93 + \endverbatim + +SourceFiles + JohnsonJacksonParticleSlipFvPatchVectorField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef JohnsonJacksonParticleSlipFvPatchVectorField_H +#define JohnsonJacksonParticleSlipFvPatchVectorField_H + +#include "partialSlipFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class JohnsonJacksonParticleSlipFvPatchVectorField Declaration +\*---------------------------------------------------------------------------*/ + +class JohnsonJacksonParticleSlipFvPatchVectorField +: + public partialSlipFvPatchVectorField +{ + // Private data + + //- Specularity coefficient + dimensionedScalar specularityCoefficient_; + + +public: + + //- Runtime type information + TypeName("JohnsonJacksonParticleSlip"); + + + // Constructors + + //- Construct from patch and internal field + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const fvPatch&, + const DimensionedField<vector, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const fvPatch&, + const DimensionedField<vector, volMesh>&, + const dictionary& + ); + + //- Construct by mapping onto a new patch + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const JohnsonJacksonParticleSlipFvPatchVectorField&, + const fvPatch&, + const DimensionedField<vector, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const JohnsonJacksonParticleSlipFvPatchVectorField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchVectorField> clone() const + { + return tmp<fvPatchVectorField> + ( + new JohnsonJacksonParticleSlipFvPatchVectorField(*this) + ); + } + + //- Construct as copy setting internal field reference + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const JohnsonJacksonParticleSlipFvPatchVectorField&, + const DimensionedField<vector, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchVectorField> clone + ( + const DimensionedField<vector, volMesh>& iF + ) const + { + return tmp<fvPatchVectorField> + ( + new JohnsonJacksonParticleSlipFvPatchVectorField(*this, iF) + ); + } + + + // Member functions + + // Mapping functions + + //- Map (and resize as needed) from self given a mapping object + virtual void autoMap + ( + const fvPatchFieldMapper& + ); + + //- Reverse map the given fvPatchField onto this fvPatchField + virtual void rmap + ( + const fvPatchVectorField&, + const labelList& + ); + + //- Update the coefficients + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C new file mode 100644 index 00000000000..93d97c650c7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C @@ -0,0 +1,316 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "JohnsonJacksonParticleThetaFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + JohnsonJacksonParticleThetaFvPatchScalarField + ); +} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF +) +: + mixedFvPatchScalarField(p, iF), + restitutionCoefficient_(p.size()), + specularityCoefficient_(p.size()) +{} + + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const JohnsonJacksonParticleThetaFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + mixedFvPatchScalarField(ptf, p, iF, mapper), + restitutionCoefficient_(ptf.restitutionCoefficient_), + specularityCoefficient_(ptf.specularityCoefficient_) +{ +} + + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const dictionary& dict +) +: + mixedFvPatchScalarField(p, iF), + restitutionCoefficient_ + ( + "restitutionCoefficient", + dimless, + dict.lookup("restitutionCoefficient") + ), + specularityCoefficient_ + ( + "specularityCoefficient", + dimless, + dict.lookup("specularityCoefficient") + ) +{ + if + ( + (restitutionCoefficient_.value() < 0) + || (restitutionCoefficient_.value() > 1) + ) + { + FatalErrorIn + ( + "Foam::JohnsonJacksonParticleThetaFvPatchScalarField::" + "JohnsonJacksonParticleThetaFvPatchScalarField" + "(" + "const fvPatch& p," + "const DimensionedField<scalar, volMesh>& iF," + "const dictionary& dict" + ")" + ) << "The restitution coefficient has to be between 0 and 1" + << abort(FatalError); + } + + if + ( + (specularityCoefficient_.value() < 0) + || (specularityCoefficient_.value() > 1) + ) + { + FatalErrorIn + ( + "Foam::JohnsonJacksonParticleThetaFvPatchScalarField::" + "JohnsonJacksonParticleThetaFvPatchScalarField" + "(" + "const fvPatch& p," + "const DimensionedField<scalar, volMesh>& iF," + "const dictionary& dict" + ")" + ) << "The specularity coefficient has to be between 0 and 1" + << abort(FatalError); + } + + fvPatchScalarField::operator= + ( + scalarField("value", dict, p.size()) + ); +} + + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const JohnsonJacksonParticleThetaFvPatchScalarField& ptf +) +: + mixedFvPatchScalarField(ptf), + restitutionCoefficient_(ptf.restitutionCoefficient_), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const JohnsonJacksonParticleThetaFvPatchScalarField& ptf, + const DimensionedField<scalar, volMesh>& iF +) +: + mixedFvPatchScalarField(ptf, iF), + restitutionCoefficient_(ptf.restitutionCoefficient_), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::autoMap +( + const fvPatchFieldMapper& m +) +{ + mixedFvPatchScalarField::autoMap(m); +} + + +void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::rmap +( + const fvPatchScalarField& ptf, + const labelList& addr +) +{ + mixedFvPatchScalarField::rmap(ptf, addr); +} + + +void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + // lookup the fluid model and the phase + const twoPhaseSystem& fluid = db().lookupObject<twoPhaseSystem> + ( + "phaseProperties" + ); + + const phaseModel& phased + ( + fluid.phase1().name() == dimensionedInternalField().group() + ? fluid.phase1() + : fluid.phase2() + ); + + // lookup all the fields on this patch + const fvPatchScalarField& alpha + ( + patch().lookupPatchField<volScalarField, scalar> + ( + phased.volScalarField::name() + ) + ); + + const fvPatchVectorField& U + ( + patch().lookupPatchField<volVectorField, vector> + ( + IOobject::groupName("U", phased.name()) + ) + ); + + const fvPatchScalarField& gs0 + ( + patch().lookupPatchField<volScalarField, scalar> + ( + IOobject::groupName("gs0", phased.name()) + ) + ); + + const fvPatchScalarField& kappa + ( + patch().lookupPatchField<volScalarField, scalar> + ( + IOobject::groupName("kappa", phased.name()) + ) + ); + + const scalarField Theta(patchInternalField()); + + // lookup the packed volume fraction + dimensionedScalar alphaMax + ( + "alphaMax", + dimless, + db() + .lookupObject<IOdictionary> + ( + IOobject::groupName("turbulenceProperties", phased.name()) + ) + .subDict("RAS") + .subDict("kineticTheoryCoeffs") + .lookup("alphaMax") + ); + + // calculate the reference value and the value fraction + if (restitutionCoefficient_.value() != 1.0) + { + this->refValue() = + (2.0/3.0) + *specularityCoefficient_.value() + *magSqr(U) + /(scalar(1) - sqr(restitutionCoefficient_.value())); + + this->refGrad() = 0.0; + + scalarField c + ( + constant::mathematical::pi + *alpha + *gs0 + *(scalar(1) - sqr(restitutionCoefficient_.value())) + *sqrt(3.0*Theta) + /max(4.0*kappa*alphaMax.value(), SMALL) + ); + + this->valueFraction() = c/(c + patch().deltaCoeffs()); + } + + // for a restitution coefficient of 1, the boundary degenerates to a fixed + // gradient condition + else + { + this->refValue() = 0.0; + + this->refGrad() = + pos(alpha - SMALL) + *constant::mathematical::pi + *specularityCoefficient_.value() + *alpha + *gs0 + *sqrt(3.0*Theta) + *magSqr(U) + /max(6.0*kappa*alphaMax.value(), SMALL); + + this->valueFraction() = 0.0; + } + + mixedFvPatchScalarField::updateCoeffs(); +} + + +void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::write +( + Ostream& os +) const +{ + fvPatchScalarField::write(os); + os.writeKeyword("restitutionCoefficient") + << restitutionCoefficient_ << token::END_STATEMENT << nl; + os.writeKeyword("specularityCoefficient") + << specularityCoefficient_ << token::END_STATEMENT << nl; + writeEntry("value", os); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H new file mode 100644 index 00000000000..5391e8c27d6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H @@ -0,0 +1,179 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::JohnsonJacksonParticleThetaFvPatchScalarField + +Description + Robin condition for the particulate granular temperature. + + References: + \verbatim + "Multifluid Eulerian modeling of dense gas–solids fluidized bed + hydrodynamics: Influence of the dissipation parameters" + Reuge, N., + Chemical Engineering Science + Volume 63, Issue 22, November 2008, pp. 5540-5551 + \endverbatim + + \verbatim + "Frictional-collisional constitutive relations for granular materials, + with application to plane shearing" + Johnson, P.C., and Jackson, R., + Journal of Fluid Mechanics + Volume 176, March 1987, pp. 67-93 + \endverbatim + +SourceFiles + JohnsonJacksonParticleThetaFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef JohnsonJacksonParticleThetaFvPatchScalarField_H +#define JohnsonJacksonParticleThetaFvPatchScalarField_H + +#include "mixedFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class JohnsonJacksonParticleThetaFvPatchScalarField Declaration +\*---------------------------------------------------------------------------*/ + +class JohnsonJacksonParticleThetaFvPatchScalarField +: + public mixedFvPatchScalarField +{ + // Private data + + //- Particle-wall restitution coefficient + dimensionedScalar restitutionCoefficient_; + + //- Specularity coefficient + dimensionedScalar specularityCoefficient_; + + +public: + + //- Runtime type information + TypeName("JohnsonJacksonParticleTheta"); + + + // Constructors + + //- Construct from patch and internal field + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const dictionary& + ); + + //- Construct by mapping onto a new patch + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const JohnsonJacksonParticleThetaFvPatchScalarField&, + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const JohnsonJacksonParticleThetaFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchScalarField> clone() const + { + return tmp<fvPatchScalarField> + ( + new JohnsonJacksonParticleThetaFvPatchScalarField(*this) + ); + } + + //- Construct as copy setting internal field reference + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const JohnsonJacksonParticleThetaFvPatchScalarField&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchScalarField> clone + ( + const DimensionedField<scalar, volMesh>& iF + ) const + { + return tmp<fvPatchScalarField> + ( + new JohnsonJacksonParticleThetaFvPatchScalarField(*this, iF) + ); + } + + + // Member functions + + // Mapping functions + + //- Map (and resize as needed) from self given a mapping object + virtual void autoMap + ( + const fvPatchFieldMapper& + ); + + //- Reverse map the given fvPatchField onto this fvPatchField + virtual void rmap + ( + const fvPatchScalarField&, + const labelList& + ); + + //- Update the coefficients + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C new file mode 100644 index 00000000000..9f2be1a235f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C @@ -0,0 +1,144 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "JohnsonJacksonFrictionalStress.H" +#include "addToRunTimeSelectionTable.H" +#include "mathematicalConstants.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace frictionalStressModels +{ + defineTypeNameAndDebug(JohnsonJackson, 0); + + addToRunTimeSelectionTable + ( + frictionalStressModel, + JohnsonJackson, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson:: +JohnsonJackson +( + const dictionary& dict +) +: + frictionalStressModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + Fr_("Fr", dimensionSet(1, -1, -2, 0, 0), coeffDict_.lookup("Fr")), + eta_("eta", dimless, coeffDict_.lookup("eta")), + p_("p", dimless, coeffDict_.lookup("p")), + phi_("phi", dimless, coeffDict_.lookup("phi")), + alphaDeltaMin_("alphaDeltaMin", dimless, coeffDict_.lookup("alphaDeltaMin")) +{ + phi_ *= constant::mathematical::pi/180.0; +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson:: +~JohnsonJackson() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson:: +frictionalPressure +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + + return + Fr_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_) + /pow(max(alphaMax - alpha1, alphaDeltaMin_), p_); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson:: +frictionalPressurePrime +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return Fr_* + ( + eta_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_ - 1.0) + *(alphaMax-alpha1) + + p_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_) + )/pow(max(alphaMax - alpha1, alphaDeltaMin_), p_ + 1.0); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::nu +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D +) const +{ + return dimensionedScalar("0.5", dimTime, 0.5)*pf*sin(phi_); +} + + +bool Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + Fr_.read(coeffDict_); + eta_.read(coeffDict_); + p_.read(coeffDict_); + + phi_.read(coeffDict_); + phi_ *= constant::mathematical::pi/180.0; + + alphaDeltaMin_.read(coeffDict_); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H new file mode 100644 index 00000000000..cc5a9dc5ea1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson + +Description + +SourceFiles + JohnsonJacksonFrictionalStress.C + +\*---------------------------------------------------------------------------*/ + +#ifndef JohnsonJackson_H +#define JohnsonJackson_H + +#include "frictionalStressModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace frictionalStressModels +{ + +/*---------------------------------------------------------------------------*\ + Class JohnsonJackson Declaration +\*---------------------------------------------------------------------------*/ + +class JohnsonJackson +: + public frictionalStressModel +{ + // Private data + + dictionary coeffDict_; + + //- Material constant for frictional normal stress + dimensionedScalar Fr_; + + //- Material constant for frictional normal stress + dimensionedScalar eta_; + + //- Material constant for frictional normal stress + dimensionedScalar p_; + + //- Angle of internal friction + dimensionedScalar phi_; + + //- Lower limit for (alphaMax - alpha1) + dimensionedScalar alphaDeltaMin_; + + +public: + + //- Runtime type information + TypeName("JohnsonJackson"); + + + // Constructors + + //- Construct from components + JohnsonJackson(const dictionary& dict); + + + //- Destructor + virtual ~JohnsonJackson(); + + + // Member functions + + virtual tmp<volScalarField> frictionalPressure + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + virtual tmp<volScalarField> frictionalPressurePrime + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + virtual tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D + ) const; + + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace frictionalStressModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C new file mode 100644 index 00000000000..7d0a4decd06 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C @@ -0,0 +1,170 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SchaefferFrictionalStress.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace frictionalStressModels +{ + defineTypeNameAndDebug(Schaeffer, 0); + + addToRunTimeSelectionTable + ( + frictionalStressModel, + Schaeffer, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::Schaeffer +( + const dictionary& dict +) +: + frictionalStressModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + phi_("phi", dimless, coeffDict_.lookup("phi")) +{ + phi_ *= constant::mathematical::pi/180.0; +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::~Schaeffer() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer:: +frictionalPressure +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return + dimensionedScalar("1e24", dimensionSet(1, -1, -2, 0, 0), 1e24) + *pow(Foam::max(alpha1 - alphaMinFriction, scalar(0)), 10.0); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer:: +frictionalPressurePrime +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return + dimensionedScalar("1e25", dimensionSet(1, -1, -2, 0, 0), 1e25) + *pow(Foam::max(alpha1 - alphaMinFriction, scalar(0)), 9.0); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D +) const +{ + const scalar I2Dsmall = 1.0e-15; + + // Creating nu assuming it should be 0 on the boundary which may not be + // true + tmp<volScalarField> tnu + ( + new volScalarField + ( + IOobject + ( + "Schaeffer:nu", + alpha1.mesh().time().timeName(), + alpha1.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + alpha1.mesh(), + dimensionedScalar("nu", dimensionSet(0, 2, -1, 0, 0), 0.0) + ) + ); + + volScalarField& nuf = tnu(); + + forAll (D, celli) + { + if (alpha1[celli] > alphaMax.value() - 5e-2) + { + nuf[celli] = + 0.5*pf[celli]*sin(phi_.value()) + /( + sqrt(1.0/6.0*(sqr(D[celli].xx() - D[celli].yy()) + + sqr(D[celli].yy() - D[celli].zz()) + + sqr(D[celli].zz() - D[celli].xx())) + + sqr(D[celli].xy()) + sqr(D[celli].xz()) + + sqr(D[celli].yz())) + I2Dsmall + ); + } + } + + // Correct coupled BCs + nuf.correctBoundaryConditions(); + + return tnu; +} + + +bool Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + phi_.read(coeffDict_); + phi_ *= constant::mathematical::pi/180.0; + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H new file mode 100644 index 00000000000..7ff4862348a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H @@ -0,0 +1,118 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::frictionalStressModels::Schaeffer + +Description + +SourceFiles + SchaefferFrictionalStress.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Schaeffer_H +#define Schaeffer_H + +#include "frictionalStressModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace frictionalStressModels +{ + +/*---------------------------------------------------------------------------*\ + Class Schaeffer Declaration +\*---------------------------------------------------------------------------*/ + +class Schaeffer +: + public frictionalStressModel +{ + // Private data + + dictionary coeffDict_; + + //- Angle of internal friction + dimensionedScalar phi_; + + +public: + + //- Runtime type information + TypeName("Schaeffer"); + + + // Constructors + + //- Construct from components + Schaeffer(const dictionary& dict); + + + //- Destructor + virtual ~Schaeffer(); + + + // Member functions + + virtual tmp<volScalarField> frictionalPressure + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + virtual tmp<volScalarField> frictionalPressurePrime + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + virtual tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D + ) const; + + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace frictionalStressModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C new file mode 100644 index 00000000000..3a764313a7b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "frictionalStressModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(frictionalStressModel, 0); + + defineRunTimeSelectionTable(frictionalStressModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModel::frictionalStressModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModel::~frictionalStressModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H new file mode 100644 index 00000000000..0e08f7ec8c8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H @@ -0,0 +1,143 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::frictionalStressModel + +SourceFiles + frictionalStressModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef frictionalStressModel_H +#define frictionalStressModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class frictionalStressModel Declaration +\*---------------------------------------------------------------------------*/ + +class frictionalStressModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + frictionalStressModel(const frictionalStressModel&); + + //- Disallow default bitwise assignment + void operator=(const frictionalStressModel&); + + +protected: + + // Protected data + + //- Reference to higher-level dictionary for re-read + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("frictionalStressModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + frictionalStressModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + frictionalStressModel(const dictionary& dict); + + + // Selectors + + static autoPtr<frictionalStressModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~frictionalStressModel(); + + + // Member Functions + + virtual tmp<volScalarField> frictionalPressure + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const = 0; + + virtual tmp<volScalarField> frictionalPressurePrime + ( + const volScalarField& alpha1f, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const = 0; + + virtual tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D + ) const = 0; + + virtual bool read() = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C new file mode 100644 index 00000000000..db6102174a2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "frictionalStressModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::frictionalStressModel> +Foam::kineticTheoryModels::frictionalStressModel::New +( + const dictionary& dict +) +{ + word frictionalStressModelType(dict.lookup("frictionalStressModel")); + + Info<< "Selecting frictionalStressModel " + << frictionalStressModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(frictionalStressModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "frictionalStressModel::New(const dictionary&) : " << endl + << " unknown frictionalStressModelType type " + << frictionalStressModelType + << ", constructor not in hash table" << endl << endl + << " Valid frictionalStressModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() + << abort(FatalError); + } + + return autoPtr<frictionalStressModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C new file mode 100644 index 00000000000..3a94ea57347 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LunPressure.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace granularPressureModels +{ + defineTypeNameAndDebug(Lun, 0); + + addToRunTimeSelectionTable + ( + granularPressureModel, + Lun, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModels::Lun::Lun +( + const dictionary& dict +) +: + granularPressureModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModels::Lun::~Lun() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::granularPressureModels::Lun::granularPressureCoeff +( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e +) const +{ + + return rho1*alpha1*(1.0 + 2.0*(1.0 + e)*alpha1*g0); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::granularPressureModels::Lun:: +granularPressureCoeffPrime +( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e +) const +{ + return rho1*(1.0 + alpha1*(1.0 + e)*(4.0*g0 + 2.0*g0prime*alpha1)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H new file mode 100644 index 00000000000..d82ba47d5b3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::Lun + +Description + +SourceFiles + LunPressure.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Lun_H +#define Lun_H + +#include "granularPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace granularPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class Lun Declaration +\*---------------------------------------------------------------------------*/ + +class Lun +: + public granularPressureModel +{ + +public: + + //- Runtime type information + TypeName("Lun"); + + + // Constructors + + //- Construct from components + Lun(const dictionary& dict); + + + //- Destructor + virtual ~Lun(); + + + // Member Functions + + tmp<volScalarField> granularPressureCoeff + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e + ) const; + + tmp<volScalarField> granularPressureCoeffPrime + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace granularPressureModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C new file mode 100644 index 00000000000..8e45c45e21b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SyamlalRogersOBrienPressure.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace granularPressureModels +{ + defineTypeNameAndDebug(SyamlalRogersOBrien, 0); + + addToRunTimeSelectionTable + ( + granularPressureModel, + SyamlalRogersOBrien, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien:: +SyamlalRogersOBrien +( + const dictionary& dict +) +: + granularPressureModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien:: +~SyamlalRogersOBrien() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien:: +granularPressureCoeff +( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e +) const +{ + + return 2.0*rho1*(1.0 + e)*sqr(alpha1)*g0; +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien:: +granularPressureCoeffPrime +( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e +) const +{ + return rho1*alpha1*(1.0 + e)*(4.0*g0 + 2.0*g0prime*alpha1); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H new file mode 100644 index 00000000000..3f420538f1f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::SyamlalRogersOBrien + +Description + +SourceFiles + SyamlalRogersOBrienPressure.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SyamlalRogersOBrien_H +#define SyamlalRogersOBrien_H + +#include "granularPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace granularPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class SyamlalRogersOBrien Declaration +\*---------------------------------------------------------------------------*/ + +class SyamlalRogersOBrien +: + public granularPressureModel +{ + +public: + + //- Runtime type information + TypeName("SyamlalRogersOBrien"); + + + // Constructors + + //- Construct from components + SyamlalRogersOBrien(const dictionary& dict); + + + //- Destructor + virtual ~SyamlalRogersOBrien(); + + + // Member Functions + + tmp<volScalarField> granularPressureCoeff + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e + ) const; + + tmp<volScalarField> granularPressureCoeffPrime + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace granularPressureModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C new file mode 100644 index 00000000000..3a2214e9e63 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "granularPressureModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(granularPressureModel, 0); + + defineRunTimeSelectionTable(granularPressureModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModel::granularPressureModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModel::~granularPressureModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H new file mode 100644 index 00000000000..06160f6c0ac --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H @@ -0,0 +1,142 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::granularPressureModel + +SourceFiles + granularPressureModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef granularPressureModel_H +#define granularPressureModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class granularPressureModel Declaration +\*---------------------------------------------------------------------------*/ + +class granularPressureModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + granularPressureModel(const granularPressureModel&); + + //- Disallow default bitwise assignment + void operator=(const granularPressureModel&); + + +protected: + + // Protected data + + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("granularPressureModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + granularPressureModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + granularPressureModel(const dictionary& dict); + + + // Selectors + + static autoPtr<granularPressureModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~granularPressureModel(); + + + // Member Functions + + //- Granular pressure coefficient + virtual tmp<volScalarField> granularPressureCoeff + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e + ) const = 0; + + //- Derivative of the granular pressure coefficient + virtual tmp<volScalarField> granularPressureCoeffPrime + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e + ) const = 0; + + virtual bool read() + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C new file mode 100644 index 00000000000..36b2c2b175e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "granularPressureModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::granularPressureModel> +Foam::kineticTheoryModels::granularPressureModel::New +( + const dictionary& dict +) +{ + word granularPressureModelType(dict.lookup("granularPressureModel")); + + Info<< "Selecting granularPressureModel " + << granularPressureModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(granularPressureModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "granularPressureModel::New(const dictionary&) : " << endl + << " unknown granularPressureModelType type " + << granularPressureModelType + << ", constructor not in hash table" << endl << endl + << " Valid granularPressureModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() + << abort(FatalError); + } + + return autoPtr<granularPressureModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C new file mode 100644 index 00000000000..8de1fdc9e11 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C @@ -0,0 +1,540 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "kineticTheoryModel.H" +#include "mathematicalConstants.H" +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::RASModels::kineticTheoryModel::kineticTheoryModel +( + const volScalarField& alpha, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& phase, + const word& propertiesName, + const word& type +) +: + eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > > + ( + type, + alpha, + rho, + U, + alphaRhoPhi, + phi, + phase, + propertiesName + ), + + phase_(phase), + + viscosityModel_ + ( + kineticTheoryModels::viscosityModel::New + ( + coeffDict_ + ) + ), + conductivityModel_ + ( + kineticTheoryModels::conductivityModel::New + ( + coeffDict_ + ) + ), + radialModel_ + ( + kineticTheoryModels::radialModel::New + ( + coeffDict_ + ) + ), + granularPressureModel_ + ( + kineticTheoryModels::granularPressureModel::New + ( + coeffDict_ + ) + ), + frictionalStressModel_ + ( + kineticTheoryModels::frictionalStressModel::New + ( + coeffDict_ + ) + ), + + equilibrium_(coeffDict_.lookup("equilibrium")), + e_("e", dimless, coeffDict_.lookup("e")), + alphaMax_("alphaMax", dimless, coeffDict_.lookup("alphaMax")), + alphaMinFriction_ + ( + "alphaMinFriction", + dimless, + coeffDict_.lookup("alphaMinFriction") + ), + residualAlpha_ + ( + "residualAlpha", + dimless, + coeffDict_.lookup("residualAlpha") + ), + + Theta_ + ( + IOobject + ( + IOobject::groupName("Theta", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + U.mesh() + ), + + lambda_ + ( + IOobject + ( + IOobject::groupName("lambda", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0) + ), + + gs0_ + ( + IOobject + ( + IOobject::groupName("gs0", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 0.0) + ), + + kappa_ + ( + IOobject + ( + IOobject::groupName("kappa", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedScalar("zero", dimensionSet(1, -1, -1, 0, 0), 0.0) + ) +{ + if (type == typeName) + { + printCoeffs(type); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::RASModels::kineticTheoryModel::~kineticTheoryModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::RASModels::kineticTheoryModel::read() +{ + if + ( + eddyViscosity + < + RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > + >::read() + ) + { + coeffDict().lookup("equilibrium") >> equilibrium_; + e_.readIfPresent(coeffDict()); + alphaMax_.readIfPresent(coeffDict()); + alphaMinFriction_.readIfPresent(coeffDict()); + + viscosityModel_->read(); + conductivityModel_->read(); + radialModel_->read(); + granularPressureModel_->read(); + frictionalStressModel_->read(); + + return true; + } + else + { + return false; + } +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::kineticTheoryModel::k() const +{ + notImplemented("kineticTheoryModel::k()"); + return nut_; +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::kineticTheoryModel::epsilon() const +{ + notImplemented("kineticTheoryModel::epsilon()"); + return nut_; +} + + +Foam::tmp<Foam::volSymmTensorField> +Foam::RASModels::kineticTheoryModel::R() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("R", U_.group()), + runTime_.timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + - (nut_)*dev(twoSymm(fvc::grad(U_))) + - (lambda_*fvc::div(phi_))*symmTensor::I + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::kineticTheoryModel::pPrime() const +{ + const volScalarField& rho = phase_.rho(); + + tmp<volScalarField> tpPrime + ( + Theta_ + *granularPressureModel_->granularPressureCoeffPrime + ( + alpha_, + radialModel_->g0(alpha_, alphaMinFriction_, alphaMax_), + radialModel_->g0prime(alpha_, alphaMinFriction_, alphaMax_), + rho, + e_ + ) + + frictionalStressModel_->frictionalPressurePrime + ( + alpha_, + alphaMinFriction_, + alphaMax_ + ) + ); + + volScalarField::GeometricBoundaryField& bpPrime = tpPrime().boundaryField(); + + forAll(bpPrime, patchi) + { + if (!bpPrime[patchi].coupled()) + { + bpPrime[patchi] == 0; + } + } + + return tpPrime; +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::RASModels::kineticTheoryModel::pPrimef() const +{ + return fvc::interpolate(pPrime()); +} + + +Foam::tmp<Foam::volSymmTensorField> +Foam::RASModels::kineticTheoryModel::devRhoReff() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("devRhoReff", U_.group()), + runTime_.timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + - (rho_*nut_) + *dev(twoSymm(fvc::grad(U_))) + - ((rho_*lambda_)*fvc::div(phi_))*symmTensor::I + ) + ); +} + + +Foam::tmp<Foam::fvVectorMatrix> +Foam::RASModels::kineticTheoryModel::divDevRhoReff +( + volVectorField& U +) const +{ + return + ( + - fvm::laplacian(rho_*nut_, U) + - fvc::div + ( + (rho_*nut_)*dev2(T(fvc::grad(U))) + + ((rho_*lambda_)*fvc::div(phi_)) + *dimensioned<symmTensor>("I", dimless, symmTensor::I) + ) + ); +} + + +void Foam::RASModels::kineticTheoryModel::correct() +{ + // Local references + volScalarField alpha(max(alpha_, scalar(0))); + const volScalarField& rho = phase_.rho(); + const surfaceScalarField& alphaRhoPhi = alphaRhoPhi_; + const volVectorField& U = U_; + const volVectorField& Uc_ = + refCast<const twoPhaseSystem>(phase_.fluid()).otherPhase(phase_).U(); + + const scalar sqrtPi = sqrt(constant::mathematical::pi); + dimensionedScalar ThetaSmall("ThetaSmall", Theta_.dimensions(), 1.0e-6); + dimensionedScalar ThetaSmallSqrt(sqrt(ThetaSmall)); + + tmp<volScalarField> tda(phase_.d()); + const volScalarField& da = tda(); + + tmp<volTensorField> tgradU(fvc::grad(U_)); + const volTensorField& gradU(tgradU()); + volSymmTensorField D(symm(gradU)); + + // Calculating the radial distribution function + gs0_ = radialModel_->g0(alpha, alphaMinFriction_, alphaMax_); + + if (!equilibrium_) + { + // Particle viscosity (Table 3.2, p.47) + nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_); + + volScalarField ThetaSqrt("sqrtTheta", sqrt(Theta_)); + + // Bulk viscosity p. 45 (Lun et al. 1984). + lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi; + + // Stress tensor, Definitions, Table 3.1, p. 43 + volSymmTensorField tau + ( + rho*(2.0*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I) + ); + + // Dissipation (Eq. 3.24, p.50) + volScalarField gammaCoeff + ( + "gammaCoeff", + 12.0*(1.0 - sqr(e_)) + *max(sqr(alpha), residualAlpha_) + *rho*gs0_*(1.0/da)*ThetaSqrt/sqrtPi + ); + + // Drag + volScalarField beta + ( + refCast<const twoPhaseSystem>(phase_.fluid()).drag(phase_).K() + ); + + // Eq. 3.25, p. 50 Js = J1 - J2 + volScalarField J1("J1", 3.0*beta); + volScalarField J2 + ( + "J2", + 0.25*sqr(beta)*da*magSqr(U - Uc_) + /( + max(alpha, residualAlpha_)*rho + *sqrtPi*(ThetaSqrt + ThetaSmallSqrt) + ) + ); + + // particle pressure - coefficient in front of Theta (Eq. 3.22, p. 45) + volScalarField PsCoeff + ( + granularPressureModel_->granularPressureCoeff + ( + alpha, + gs0_, + rho, + e_ + ) + ); + + // 'thermal' conductivity (Table 3.3, p. 49) + kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_); + + // Construct the granular temperature equation (Eq. 3.20, p. 44) + // NB. note that there are two typos in Eq. 3.20: + // Ps should be without grad + // the laplacian has the wrong sign + fvScalarMatrix ThetaEqn + ( + 1.5* + ( + fvm::ddt(alpha, rho, Theta_) + + fvm::div(alphaRhoPhi, Theta_) + - fvc::Sp(fvc::ddt(alpha, rho) + fvc::div(alphaRhoPhi), Theta_) + ) + - fvm::laplacian(kappa_, Theta_, "laplacian(kappa,Theta)") + == + fvm::SuSp(-((PsCoeff*I) && gradU), Theta_) + + (tau && gradU) + + fvm::Sp(-gammaCoeff, Theta_) + + fvm::Sp(-J1, Theta_) + + fvm::Sp(J2/(Theta_ + ThetaSmall), Theta_) + ); + + ThetaEqn.relax(); + ThetaEqn.solve(); + } + else + { + // Equilibrium => dissipation == production + // Eq. 4.14, p.82 + volScalarField K1("K1", 2.0*(1.0 + e_)*rho*gs0_); + volScalarField K3 + ( + "K3", + 0.5*da*rho* + ( + (sqrtPi/(3.0*(3.0 - e_))) + *(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0_) + +1.6*alpha*gs0_*(1.0 + e_)/sqrtPi + ) + ); + + volScalarField K2 + ( + "K2", + 4.0*da*rho*(1.0 + e_)*alpha*gs0_/(3.0*sqrtPi) - 2.0*K3/3.0 + ); + + volScalarField K4("K4", 12.0*(1.0 - sqr(e_))*rho*gs0_/(da*sqrtPi)); + + volScalarField trD + ( + "trD", + alpha/(alpha + residualAlpha_) + *fvc::div(phi_) + ); + volScalarField tr2D("tr2D", sqr(trD)); + volScalarField trD2("trD2", tr(D & D)); + + volScalarField t1("t1", K1*alpha + rho); + volScalarField l1("l1", -t1*trD); + volScalarField l2("l2", sqr(t1)*tr2D); + volScalarField l3 + ( + "l3", + 4.0 + *K4 + *alpha + *(2.0*K3*trD2 + K2*tr2D) + ); + + Theta_ = sqr + ( + (l1 + sqrt(l2 + l3)) + /(2.0*max(alpha, residualAlpha_)*K4) + ); + + kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_); + } + + Theta_.max(0); + Theta_.min(100); + + { + // particle viscosity (Table 3.2, p.47) + nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_); + + volScalarField ThetaSqrt("sqrtTheta", sqrt(Theta_)); + + // Bulk viscosity p. 45 (Lun et al. 1984). + lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi; + + // Frictional pressure + volScalarField pf + ( + frictionalStressModel_->frictionalPressure + ( + alpha, + alphaMinFriction_, + alphaMax_ + ) + ); + + // Add frictional shear viscosity, Eq. 3.30, p. 52 + nut_ += frictionalStressModel_->nu + ( + alpha, + alphaMax_, + pf/rho, + D + ); + + // Limit viscosity + nut_.min(100); + } + + if (debug) + { + Info<< typeName << ':' << nl + << " max(Theta) = " << max(Theta_).value() << nl + << " max(nut) = " << max(nut_).value() << endl; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H new file mode 100644 index 00000000000..bfa1f872cb8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H @@ -0,0 +1,230 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModel + +Description + Kinetic theory particle phase RAS model + + Reference: + \verbatim + "Derivation, implementation, and validation of computer simulation + models for gas-solid fluidized beds", + van Wachem, B.G.M., + Ph.D. Thesis, Delft University of Technology, Amsterdam, 2000. + \endverbatim + + There are no default model coefficients. + +SourceFiles + kineticTheoryModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef kineticTheoryModel_H +#define kineticTheoryModel_H + +#include "RASModel.H" +#include "eddyViscosity.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "phaseModel.H" +#include "dragModel.H" +#include "viscosityModel.H" +#include "conductivityModel.H" +#include "radialModel.H" +#include "granularPressureModel.H" +#include "frictionalStressModel.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +/*---------------------------------------------------------------------------*\ + Class kineticTheoryModel Declaration +\*---------------------------------------------------------------------------*/ + +class kineticTheoryModel +: + public eddyViscosity + < + RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > + > +{ + // Private data + + // Input Fields + + const phaseModel& phase_; + + + // Sub-models + + //- Run-time selected viscosity model + autoPtr<kineticTheoryModels::viscosityModel> viscosityModel_; + + //- Run-time selected conductivity model + autoPtr<kineticTheoryModels::conductivityModel> conductivityModel_; + + //- Run-time selected radial distribution model + autoPtr<kineticTheoryModels::radialModel> radialModel_; + + //- Run-time selected granular pressure model + autoPtr<kineticTheoryModels::granularPressureModel> + granularPressureModel_; + + //- Run-time selected frictional stress model + autoPtr<kineticTheoryModels::frictionalStressModel> + frictionalStressModel_; + + + // Kinetic Theory Model coefficients + + //- Use equilibrium approximation: generation == dissipation + Switch equilibrium_; + + //- Coefficient of restitution + dimensionedScalar e_; + + //- Maximum packing phase-fraction + dimensionedScalar alphaMax_; + + //- Min value for which the frictional stresses are zero + dimensionedScalar alphaMinFriction_; + + //- Residual phase fraction + dimensionedScalar residualAlpha_; + + + // Kinetic Theory Model Fields + + //- The granular energy/temperature + volScalarField Theta_; + + //- The granular bulk viscosity + volScalarField lambda_; + + //- The granular radial distribution + volScalarField gs0_; + + //- The granular "thermal" conductivity + volScalarField kappa_; + + + // Private Member Functions + + void correctNut() + {} + + //- Disallow default bitwise copy construct + kineticTheoryModel(const kineticTheoryModel&); + + //- Disallow default bitwise assignment + void operator=(const kineticTheoryModel&); + + +public: + + //- Runtime type information + TypeName("kineticTheory"); + + + // Constructors + + //- Construct from components + kineticTheoryModel + ( + const volScalarField& alpha, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const phaseModel& transport, + const word& propertiesName = turbulenceModel::propertiesName, + const word& type = typeName + ); + + + //- Destructor + virtual ~kineticTheoryModel(); + + + // Member Functions + + //- Re-read model coefficients if they have changed + virtual bool read(); + + //- Return the effective viscosity + virtual tmp<volScalarField> nuEff() const + { + return this->nut(); + } + + //- Return the effective viscosity on patch + virtual tmp<scalarField> nuEff(const label patchi) const + { + return this->nut(patchi); + } + + //- Return the turbulence kinetic energy + virtual tmp<volScalarField> k() const; + + //- Return the turbulence kinetic energy dissipation rate + virtual tmp<volScalarField> epsilon() const; + + //- Return the Reynolds stress tensor + virtual tmp<volSymmTensorField> R() const; + + //- Return the phase-pressure' + // (derivative of phase-pressure w.r.t. phase-fraction) + virtual tmp<volScalarField> pPrime() const; + + //- Return the face-phase-pressure' + // (derivative of phase-pressure w.r.t. phase-fraction) + virtual tmp<surfaceScalarField> pPrimef() const; + + //- Return the effective stress tensor + virtual tmp<volSymmTensorField> devRhoReff() const; + + //- Return the source term for the momentum equation + virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const; + + //- Solve the kinetic theory equations and correct the viscosity + virtual void correct(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C new file mode 100644 index 00000000000..abc364979c5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "CarnahanStarlingRadial.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + defineTypeNameAndDebug(CarnahanStarling, 0); + + addToRunTimeSelectionTable + ( + radialModel, + CarnahanStarling, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::CarnahanStarling::CarnahanStarling +( + const dictionary& dict +) +: + radialModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::CarnahanStarling::~CarnahanStarling() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::CarnahanStarling::g0 +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + + return + 1.0/(1.0 - alpha) + + 3.0*alpha/(2.0*sqr(1.0 - alpha)) + + sqr(alpha)/(2.0*pow3(1.0 - alpha)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::CarnahanStarling::g0prime +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return + 2.5/sqr(1.0 - alpha) + + 4.0*alpha/pow3(1.0 - alpha) + + 1.5*sqr(alpha)/pow4(1.0 - alpha); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H new file mode 100644 index 00000000000..a4082d5326c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H @@ -0,0 +1,102 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::radialModels::CarnahanStarling + +Description + +SourceFiles + CarnahanStarlingRadial.C + +\*---------------------------------------------------------------------------*/ + +#ifndef CarnahanStarling_H +#define CarnahanStarling_H + +#include "radialModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + +/*---------------------------------------------------------------------------*\ + Class CarnahanStarling Declaration +\*---------------------------------------------------------------------------*/ + +class CarnahanStarling +: + public radialModel +{ + +public: + + //- Runtime type information + TypeName("CarnahanStarling"); + + + // Constructors + + //- Construct from components + CarnahanStarling(const dictionary& dict); + + + //- Destructor + virtual ~CarnahanStarling(); + + + // Member Functions + + + tmp<volScalarField> g0 + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + tmp<volScalarField> g0prime + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace radialModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C new file mode 100644 index 00000000000..df931c87528 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LunSavageRadial.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + defineTypeNameAndDebug(LunSavage, 0); + + addToRunTimeSelectionTable + ( + radialModel, + LunSavage, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::LunSavage::LunSavage +( + const dictionary& dict +) +: + radialModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::LunSavage::~LunSavage() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::LunSavage::g0 +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + + return pow(1.0 - alpha/alphaMax, -2.5*alphaMax); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::LunSavage::g0prime +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return 2.5*pow(1.0 - alpha/alphaMax, -2.5*alphaMax - 1); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H new file mode 100644 index 00000000000..17cd8e5907b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::radialModels::LunSavage + +Description + +SourceFiles + LunSavage.C + +\*---------------------------------------------------------------------------*/ + +#ifndef LunSavage_H +#define LunSavage_H + +#include "radialModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + +/*---------------------------------------------------------------------------*\ + Class LunSavage Declaration +\*---------------------------------------------------------------------------*/ + +class LunSavage +: + public radialModel +{ + +public: + + //- Runtime type information + TypeName("LunSavage"); + + + // Constructors + + //- Construct from components + LunSavage(const dictionary& dict); + + + //- Destructor + virtual ~LunSavage(); + + + // Member Functions + + tmp<volScalarField> g0 + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + tmp<volScalarField> g0prime + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace radialModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C new file mode 100644 index 00000000000..bc74ce177a7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SinclairJacksonRadial.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + defineTypeNameAndDebug(SinclairJackson, 0); + + addToRunTimeSelectionTable + ( + radialModel, + SinclairJackson, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::SinclairJackson::SinclairJackson +( + const dictionary& dict +) +: + radialModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::SinclairJackson::~SinclairJackson() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::SinclairJackson::g0 +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return 1.0/(1.0 - cbrt(min(alpha, alphaMinFriction)/alphaMax)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::SinclairJackson::g0prime +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + volScalarField aByaMax + ( + cbrt(min(max(alpha, scalar(1e-3)), alphaMinFriction)/alphaMax) + ); + + return (1.0/(3*alphaMax))/sqr(aByaMax - sqr(aByaMax)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H new file mode 100644 index 00000000000..37545343a9c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::SinclairJackson + +Description + +SourceFiles + SinclairJacksonRadial.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SinclairJackson_H +#define SinclairJackson_H + +#include "radialModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + +/*---------------------------------------------------------------------------*\ + Class SinclairJackson Declaration +\*---------------------------------------------------------------------------*/ + +class SinclairJackson +: + public radialModel +{ + +public: + + //- Runtime type information + TypeName("SinclairJackson"); + + + // Constructors + + //- Construct from components + SinclairJackson(const dictionary& dict); + + + //- Destructor + virtual ~SinclairJackson(); + + + // Member Functions + + tmp<volScalarField> g0 + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + tmp<volScalarField> g0prime + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace radialModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C new file mode 100644 index 00000000000..65f6c9ebb83 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "radialModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::radialModel> +Foam::kineticTheoryModels::radialModel::New +( + const dictionary& dict +) +{ + word radialModelType(dict.lookup("radialModel")); + + Info<< "Selecting radialModel " + << radialModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(radialModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "radialModel::New(const dictionary&) : " << endl + << " unknown radialModelType type " + << radialModelType + << ", constructor not in hash table" << endl << endl + << " Valid radialModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() + << abort(FatalError); + } + + return autoPtr<radialModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C new file mode 100644 index 00000000000..821e9e6ec72 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "radialModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(radialModel, 0); + + defineRunTimeSelectionTable(radialModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModel::radialModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModel::~radialModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H new file mode 100644 index 00000000000..de73a227474 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H @@ -0,0 +1,139 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::radialModel + +SourceFiles + radialModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef radialModel_H +#define radialModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class radialModel Declaration +\*---------------------------------------------------------------------------*/ + +class radialModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + radialModel(const radialModel&); + + //- Disallow default bitwise assignment + void operator=(const radialModel&); + + +protected: + + // Protected data + + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("radialModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + radialModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + radialModel(const dictionary& dict); + + + // Selectors + + static autoPtr<radialModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~radialModel(); + + + // Member Functions + + //- Radial distribution function + virtual tmp<volScalarField> g0 + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const = 0; + + //- Derivative of the radial distribution function + virtual tmp<volScalarField> g0prime + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const = 0; + + virtual bool read() + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C new file mode 100644 index 00000000000..98cf0c90efb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GidaspowViscosity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + defineTypeNameAndDebug(Gidaspow, 0); + addToRunTimeSelectionTable(viscosityModel, Gidaspow, dictionary); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::Gidaspow::Gidaspow +( + const dictionary& dict +) +: + viscosityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::Gidaspow::~Gidaspow() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::viscosityModels::Gidaspow::nu +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + return da*sqrt(Theta)* + ( + (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*sqr(alpha1) + + (1.0/6.0)*sqrtPi*alpha1 + + (10.0/96.0)*sqrtPi/((1.0 + e)*g0) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H new file mode 100644 index 00000000000..e309ed988a1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::viscosityModels::Gidaspow + +Description + +SourceFiles + GidaspowViscosity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Gidaspow_H +#define Gidaspow_H + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + +/*---------------------------------------------------------------------------*\ + Class Gidaspow Declaration +\*---------------------------------------------------------------------------*/ + +class Gidaspow +: + public viscosityModel +{ + +public: + + //- Runtime type information + TypeName("Gidaspow"); + + // Constructors + + //- Construct from components + Gidaspow(const dictionary& dict); + + + //- Destructor + virtual ~Gidaspow(); + + + // Member functions + + tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace viscosityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C new file mode 100644 index 00000000000..bd95013d0ab --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "HrenyaSinclairViscosity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + defineTypeNameAndDebug(HrenyaSinclair, 0); + + addToRunTimeSelectionTable + ( + viscosityModel, + HrenyaSinclair, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::HrenyaSinclair +( + const dictionary& dict +) +: + viscosityModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_.lookup("L")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::~HrenyaSinclair() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::nu +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + volScalarField lamda + ( + scalar(1) + da/(6.0*sqrt(2.0)*(alpha1 + scalar(1.0e-5)))/L_ + ); + + return da*sqrt(Theta)* + ( + (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*(3.0*e - 1)*sqr(alpha1)/(3.0-e) + + (1.0/6.0)*sqrtPi*alpha1*(0.5*lamda + 0.25*(3.0*e - 1.0)) + /(0.5*(3.0 - e)*lamda) + + (10/96.0)*sqrtPi/((1.0 + e)*0.5*(3.0 - e)*g0*lamda) + ); +} + + +bool Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + L_.readIfPresent(coeffDict_); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H new file mode 100644 index 00000000000..0a280ba3699 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair + +Description + +SourceFiles + HrenyaSinclairViscosity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef HrenyaSinclair_H +#define HrenyaSinclair_H + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + +/*---------------------------------------------------------------------------*\ + Class HrenyaSinclair Declaration +\*---------------------------------------------------------------------------*/ + +class HrenyaSinclair +: + public viscosityModel +{ + // Private data + + dictionary coeffDict_; + + //- Characteristic length of geometry + dimensionedScalar L_; + + +public: + + //- Runtime type information + TypeName("HrenyaSinclair"); + + + // Constructors + + //- Construct from components + HrenyaSinclair(const dictionary& dict); + + + //- Destructor + virtual ~HrenyaSinclair(); + + + // Member functions + + tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; + + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace viscosityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C new file mode 100644 index 00000000000..215d3608164 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SyamlalViscosity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + defineTypeNameAndDebug(Syamlal, 0); + addToRunTimeSelectionTable(viscosityModel, Syamlal, dictionary); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::Syamlal::Syamlal +( + const dictionary& dict +) +: + viscosityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::Syamlal::~Syamlal() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::viscosityModels::Syamlal::nu +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + return da*sqrt(Theta)* + ( + (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*(3.0*e - 1.0)*sqr(alpha1)/(3.0 - e) + + (1.0/6.0)*alpha1*sqrtPi/(3.0 - e) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H new file mode 100644 index 00000000000..844bf21b0da --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::viscosityModels::Syamlal + +Description + +SourceFiles + SyamlalViscosity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Syamlal_H +#define Syamlal_H + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + +/*---------------------------------------------------------------------------*\ + Class Syamlal Declaration +\*---------------------------------------------------------------------------*/ + +class Syamlal +: + public viscosityModel +{ + +public: + + //- Runtime type information + TypeName("Syamlal"); + + + // Constructors + + //- Construct from components + Syamlal(const dictionary& dict); + + + //- Destructor + virtual ~Syamlal(); + + + // Member functions + + tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace viscosityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C new file mode 100644 index 00000000000..4b3c97d69a4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noneViscosity.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(noneViscosity, 0); + addToRunTimeSelectionTable(viscosityModel, noneViscosity, dictionary); +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::noneViscosity::noneViscosity(const dictionary& dict) +: + viscosityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::noneViscosity::~noneViscosity() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::noneViscosity::nu +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + return dimensionedScalar + ( + "0", + dimensionSet(0, 2, -1, 0, 0, 0, 0), + 0.0 + )*alpha1; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H new file mode 100644 index 00000000000..f5d74f0e965 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::noneViscosity + +Description + +SourceFiles + noneViscosity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noneViscosity_H +#define noneViscosity_H + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class noneViscosity Declaration +\*---------------------------------------------------------------------------*/ + +class noneViscosity +: + public viscosityModel +{ + +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from components + noneViscosity(const dictionary& dict); + + + //- Destructor + virtual ~noneViscosity(); + + + // Member functions + + tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C new file mode 100644 index 00000000000..e79cbde0c17 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::viscosityModel> +Foam::kineticTheoryModels::viscosityModel::New +( + const dictionary& dict +) +{ + word viscosityModelType(dict.lookup("viscosityModel")); + + Info<< "Selecting viscosityModel " + << viscosityModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(viscosityModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "viscosityModel::New(const dictionary&) : " << endl + << " unknown viscosityModelType type " + << viscosityModelType + << ", constructor not in hash table" << endl << endl + << " Valid viscosityModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() << abort(FatalError); + } + + return autoPtr<viscosityModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C new file mode 100644 index 00000000000..dae23e2b310 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(viscosityModel, 0); + defineRunTimeSelectionTable(viscosityModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModel::viscosityModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModel::~viscosityModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H new file mode 100644 index 00000000000..e0bc93cc796 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H @@ -0,0 +1,135 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::viscosityModel + +Description + +SourceFiles + viscosityModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef viscosityModel_H +#define viscosityModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class viscosityModel Declaration +\*---------------------------------------------------------------------------*/ + +class viscosityModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + viscosityModel(const viscosityModel&); + + //- Disallow default bitwise assignment + void operator=(const viscosityModel&); + + +protected: + + // Protected data + + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("viscosityModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + viscosityModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + viscosityModel(const dictionary& dict); + + + // Selectors + + static autoPtr<viscosityModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~viscosityModel(); + + + // Member Functions + + virtual tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const = 0; + + virtual bool read() + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C new file mode 100644 index 00000000000..65d857d9c84 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "PhaseCompressibleTurbulenceModel.H" +#include "phaseModel.H" +#include "twoPhaseSystem.H" +#include "addToRunTimeSelectionTable.H" +#include "makeTurbulenceModel.H" + +#include "laminar.H" +#include "RASModel.H" +#include "LESModel.H" + +makeBaseTurbulenceModel +( + volScalarField, + volScalarField, + compressibleTurbulenceModel, + PhaseCompressibleTurbulenceModel, + phaseModel +); + +#define makeRASModel(Type) \ + makeTemplatedTurbulenceModel \ + (phaseModelPhaseCompressibleTurbulenceModel, RAS, Type) + +#define makeLESModel(Type) \ + makeTemplatedTurbulenceModel \ + (phaseModelPhaseCompressibleTurbulenceModel, LES, Type) + +#include "kEpsilon.H" +makeRASModel(kEpsilon); + +#include "kOmegaSST.H" +makeRASModel(kOmegaSST); + +#include "kOmegaSSTSato.H" +makeRASModel(kOmegaSSTSato); + +#include "mixtureKEpsilon.H" +makeRASModel(mixtureKEpsilon); + +#include "LaheyKEpsilon.H" +makeRASModel(LaheyKEpsilon); + +#include "continuousGasKEpsilon.H" +makeRASModel(continuousGasKEpsilon); + +#include "Smagorinsky.H" +makeLESModel(Smagorinsky); + +#include "kEqn.H" +makeLESModel(kEqn); + +#include "SmagorinskyZhang.H" +makeLESModel(SmagorinskyZhang); + +#include "NicenoKEqn.H" +makeLESModel(NicenoKEqn); + +#include "continuousGasKEqn.H" +makeLESModel(continuousGasKEqn); + +#include "kineticTheoryModel.H" +makeTurbulenceModel +(phaseModelPhaseCompressibleTurbulenceModel, RAS, kineticTheoryModel); + +#include "phasePressureModel.H" +makeTurbulenceModel +(phaseModelPhaseCompressibleTurbulenceModel, RAS, phasePressureModel); + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C new file mode 100644 index 00000000000..8cca6f493f0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C @@ -0,0 +1,254 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phasePressureModel.H" +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::RASModels::phasePressureModel::phasePressureModel +( + const volScalarField& alpha, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& phase, + const word& propertiesName, + const word& type +) +: + eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > > + ( + type, + alpha, + rho, + U, + alphaRhoPhi, + phi, + phase, + propertiesName + ), + + phase_(phase), + + alphaMax_(readScalar(coeffDict_.lookup("alphaMax"))), + preAlphaExp_(readScalar(coeffDict_.lookup("preAlphaExp"))), + expMax_(readScalar(coeffDict_.lookup("expMax"))), + g0_ + ( + "g0", + dimensionSet(1, -1, -2, 0, 0), + coeffDict_.lookup("g0") + ) +{ + nut_ == dimensionedScalar("zero", nut_.dimensions(), 0.0); + + if (type == typeName) + { + printCoeffs(type); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::RASModels::phasePressureModel::~phasePressureModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::RASModels::phasePressureModel::read() +{ + if + ( + eddyViscosity + < + RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > + >::read() + ) + { + coeffDict().lookup("alphaMax") >> alphaMax_; + coeffDict().lookup("preAlphaExp") >> preAlphaExp_; + coeffDict().lookup("expMax") >> expMax_; + g0_.readIfPresent(coeffDict()); + + return true; + } + else + { + return false; + } +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::phasePressureModel::k() const +{ + notImplemented("phasePressureModel::k()"); + return nut_; +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::phasePressureModel::epsilon() const +{ + notImplemented("phasePressureModel::epsilon()"); + return nut_; +} + + +Foam::tmp<Foam::volSymmTensorField> +Foam::RASModels::phasePressureModel::R() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("R", U_.group()), + runTime_.timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh_, + dimensioned<symmTensor> + ( + "R", + dimensionSet(0, 2, -2, 0, 0), + symmTensor::zero + ) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::phasePressureModel::pPrime() const +{ + tmp<volScalarField> tpPrime + ( + g0_ + *min + ( + exp(preAlphaExp_*(alpha_ - alphaMax_)), + expMax_ + ) + ); + + volScalarField::GeometricBoundaryField& bpPrime = tpPrime().boundaryField(); + + forAll(bpPrime, patchi) + { + if (!bpPrime[patchi].coupled()) + { + bpPrime[patchi] == 0; + } + } + + return tpPrime; +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::RASModels::phasePressureModel::pPrimef() const +{ + tmp<surfaceScalarField> tpPrime + ( + g0_ + *min + ( + exp(preAlphaExp_*(fvc::interpolate(alpha_) - alphaMax_)), + expMax_ + ) + ); + + surfaceScalarField::GeometricBoundaryField& bpPrime = + tpPrime().boundaryField(); + + forAll(bpPrime, patchi) + { + if (!bpPrime[patchi].coupled()) + { + bpPrime[patchi] == 0; + } + } + + return tpPrime; +} + + +Foam::tmp<Foam::volSymmTensorField> +Foam::RASModels::phasePressureModel::devRhoReff() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("devRhoReff", U_.group()), + runTime_.timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh_, + dimensioned<symmTensor> + ( + "R", + rho_.dimensions()*dimensionSet(0, 2, -2, 0, 0), + symmTensor::zero + ) + ) + ); +} + + +Foam::tmp<Foam::fvVectorMatrix> +Foam::RASModels::phasePressureModel::divDevRhoReff +( + volVectorField& U +) const +{ + return tmp<fvVectorMatrix> + ( + new fvVectorMatrix + ( + U, + rho_.dimensions()*dimensionSet(0, 4, -2, 0, 0) + ) + ); +} + + +void Foam::RASModels::phasePressureModel::correct() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H new file mode 100644 index 00000000000..a2b17dc1c76 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H @@ -0,0 +1,191 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::phasePressureModel + +Description + Particle-particle phase-pressure RAS model + + The derivative of the phase-pressure with respect to the phase-fraction + is evaluated as + + g0*min(exp(preAlphaExp*(alpha - alphaMax)), expMax) + + The default model coefficients correspond to the following: + \verbatim + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } + \endverbatim + +SourceFiles + phasePressureModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phasePressureModel_H +#define phasePressureModel_H + +#include "RASModel.H" +#include "eddyViscosity.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +/*---------------------------------------------------------------------------*\ + Class phasePressureModel Declaration +\*---------------------------------------------------------------------------*/ + +class phasePressureModel +: + public eddyViscosity + < + RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > + > +{ + // Private data + + // Input Fields + + const phaseModel& phase_; + + + // Kinetic Theory Model coefficients + + //- Maximum packing phase-fraction + scalar alphaMax_; + + //- Pre-exponential factor + scalar preAlphaExp_; + + //- Maximum limit of the exponential + scalar expMax_; + + //- g0 + dimensionedScalar g0_; + + + // Private Member Functions + + void correctNut() + {} + + //- Disallow default bitwise copy construct + phasePressureModel(const phasePressureModel&); + + //- Disallow default bitwise assignment + void operator=(const phasePressureModel&); + + +public: + + //- Runtime type information + TypeName("phasePressure"); + + + // Constructors + + //- Construct from components + phasePressureModel + ( + const volScalarField& alpha, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const phaseModel& transport, + const word& propertiesName = turbulenceModel::propertiesName, + const word& type = typeName + ); + + + //- Destructor + virtual ~phasePressureModel(); + + + // Member Functions + + //- Re-read model coefficients if they have changed + virtual bool read(); + + //- Return the effective viscosity + virtual tmp<volScalarField> nuEff() const + { + return this->nut(); + } + + //- Return the effective viscosity on patch + virtual tmp<scalarField> nuEff(const label patchi) const + { + return this->nut(patchi); + } + + //- Return the turbulence kinetic energy + virtual tmp<volScalarField> k() const; + + //- Return the turbulence kinetic energy dissipation rate + virtual tmp<volScalarField> epsilon() const; + + //- Return the Reynolds stress tensor + virtual tmp<volSymmTensorField> R() const; + + //- Return the phase-pressure' + // (derivative of phase-pressure w.r.t. phase-fraction) + virtual tmp<volScalarField> pPrime() const; + + //- Return the face-phase-pressure' + // (derivative of phase-pressure w.r.t. phase-fraction) + virtual tmp<surfaceScalarField> pPrimef() const; + + //- Return the effective stress tensor + virtual tmp<volSymmTensorField> devRhoReff() const; + + //- Return the source term for the momentum equation + virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const; + + //- Solve the kinetic theory equations and correct the viscosity + virtual void correct(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C new file mode 100644 index 00000000000..da6c62ade59 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C @@ -0,0 +1,485 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "BlendedInterfacialModel.H" +#include "fixedValueFvsPatchFields.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class ModelType> +template<class GeometricField> +void Foam::BlendedInterfacialModel<ModelType>::correctFixedFluxBCs +( + GeometricField& field +) const +{ + forAll(phase1_.phi()->boundaryField(), patchI) + { + if + ( + isA<fixedValueFvsPatchScalarField> + ( + phase1_.phi()->boundaryField()[patchI] + ) + ) + { + field.boundaryField()[patchI] + = pTraits<typename GeometricField::value_type>::zero; + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class ModelType> +Foam::BlendedInterfacialModel<ModelType>::BlendedInterfacialModel +( + const phaseModel& phase1, + const phaseModel& phase2, + const blendingMethod& blending, + autoPtr<ModelType> model, + autoPtr<ModelType> model1In2, + autoPtr<ModelType> model2In1, + const bool correctFixedFluxBCs +) +: + phase1_(phase1), + phase2_(phase2), + blending_(blending), + model_(model), + model1In2_(model1In2), + model2In1_(model2In1), + correctFixedFluxBCs_(correctFixedFluxBCs) +{} + + +template<class ModelType> +Foam::BlendedInterfacialModel<ModelType>::BlendedInterfacialModel +( + const phasePair::dictTable& modelTable, + const blendingMethod& blending, + const phasePair& pair, + const orderedPhasePair& pair1In2, + const orderedPhasePair& pair2In1, + const bool correctFixedFluxBCs +) +: + phase1_(pair.phase1()), + phase2_(pair.phase2()), + blending_(blending), + correctFixedFluxBCs_(correctFixedFluxBCs) +{ + if (modelTable.found(pair)) + { + model_.set + ( + ModelType::New + ( + modelTable[pair], + pair + ).ptr() + ); + } + + if (modelTable.found(pair1In2)) + { + model1In2_.set + ( + ModelType::New + ( + modelTable[pair1In2], + pair1In2 + ).ptr() + ); + } + + if (modelTable.found(pair2In1)) + { + model2In1_.set + ( + ModelType::New + ( + modelTable[pair2In1], + pair2In1 + ).ptr() + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class ModelType> +Foam::BlendedInterfacialModel<ModelType>::~BlendedInterfacialModel() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class ModelType> +bool Foam::BlendedInterfacialModel<ModelType>::hasModel +( + const class phaseModel& phase +) const +{ + return + &phase == &(phase1_) + ? model1In2_.valid() + : model2In1_.valid(); +} + + +template<class ModelType> +const ModelType& Foam::BlendedInterfacialModel<ModelType>::model +( + const class phaseModel& phase +) const +{ + return &phase == &(phase1_) ? model1In2_ : model2In1_; +} + + +template<class ModelType> +Foam::tmp<Foam::volScalarField> +Foam::BlendedInterfacialModel<ModelType>::K() const +{ + tmp<volScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = blending_.f1(phase1_, phase2_); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = blending_.f2(phase1_, phase2_); + } + + tmp<volScalarField> x + ( + new volScalarField + ( + IOobject + ( + ModelType::typeName + ":K", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimK, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->K()*(scalar(1) - f1() - f2()); + } + if (model1In2_.valid()) + { + x() += model1In2_->K()*f1; + } + if (model2In1_.valid()) + { + x() += model2In1_->K()*f2; + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +template<class ModelType> +Foam::tmp<Foam::surfaceScalarField> +Foam::BlendedInterfacialModel<ModelType>::Kf() const +{ + tmp<surfaceScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = fvc::interpolate + ( + blending_.f1(phase1_, phase2_) + ); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = fvc::interpolate + ( + blending_.f2(phase1_, phase2_) + ); + } + + tmp<surfaceScalarField> x + ( + new surfaceScalarField + ( + IOobject + ( + ModelType::typeName + ":Kf", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimK, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->Kf()*(scalar(1) - f1() - f2()); + } + + if (model1In2_.valid()) + { + x() += model1In2_->Kf()*f1; + } + + if (model2In1_.valid()) + { + x() += model2In1_->Kf()*f2; + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +template<class ModelType> +template<class Type> +Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh> > +Foam::BlendedInterfacialModel<ModelType>::F() const +{ + tmp<volScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = blending_.f1(phase1_, phase2_); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = blending_.f2(phase1_, phase2_); + } + + tmp<GeometricField<Type, fvPatchField, volMesh> > x + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + IOobject + ( + ModelType::typeName + ":F", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensioned<Type>("zero", ModelType::dimF, pTraits<Type>::zero) + ) + ); + + if (model_.valid()) + { + x() += model_->F()*(scalar(1) - f1() - f2()); + } + + if (model1In2_.valid()) + { + x() += model1In2_->F()*f1; + } + + if (model2In1_.valid()) + { + x() -= model2In1_->F()*f2; // note : subtraction + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +template<class ModelType> +Foam::tmp<Foam::surfaceScalarField> +Foam::BlendedInterfacialModel<ModelType>::Ff() const +{ + tmp<surfaceScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = fvc::interpolate + ( + blending_.f1(phase1_, phase2_) + ); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = fvc::interpolate + ( + blending_.f2(phase1_, phase2_) + ); + } + + tmp<surfaceScalarField> x + ( + new surfaceScalarField + ( + IOobject + ( + ModelType::typeName + ":Ff", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimF*dimArea, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->Ff()*(scalar(1) - f1() - f2()); + } + + if (model1In2_.valid()) + { + x() += model1In2_->Ff()*f1; + } + + if (model2In1_.valid()) + { + x() -= model2In1_->Ff()*f2; // note : subtraction + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +template<class ModelType> +Foam::tmp<Foam::volScalarField> +Foam::BlendedInterfacialModel<ModelType>::D() const +{ + tmp<volScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = blending_.f1(phase1_, phase2_); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = blending_.f2(phase1_, phase2_); + } + + tmp<volScalarField> x + ( + new volScalarField + ( + IOobject + ( + ModelType::typeName + ":D", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimD, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->D()*(scalar(1) - f1() - f2()); + } + if (model1In2_.valid()) + { + x() += model1In2_->D()*f1; + } + if (model2In1_.valid()) + { + x() += model2In1_->D()*f2; + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H new file mode 100644 index 00000000000..bd2ec602356 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H @@ -0,0 +1,168 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::BlendedInterfacialModel + +Description + +SourceFiles + BlendedInterfacialModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef BlendedInterfacialModel_H +#define BlendedInterfacialModel_H + +#include "blendingMethod.H" +#include "phasePair.H" +#include "orderedPhasePair.H" + +#include "geometricZeroField.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class BlendedInterfacialModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class ModelType> +class BlendedInterfacialModel +{ + // Private data + + //- Reference to phase 1 + const phaseModel& phase1_; + + //- Reference to phase 2 + const phaseModel& phase2_; + + //- Blending model + const blendingMethod& blending_; + + //- Model for region with no obvious dispersed phase + autoPtr<ModelType> model_; + + //- Model for dispersed phase 1 in continuous phase 2 + autoPtr<ModelType> model1In2_; + + //- Model for dispersed phase 2 in continuous phase 1 + autoPtr<ModelType> model2In1_; + + //- If true set coefficients and forces to 0 at fixed-flux BCs + bool correctFixedFluxBCs_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + BlendedInterfacialModel(const BlendedInterfacialModel<ModelType>&); + + //- Disallow default bitwise assignment + void operator=(const BlendedInterfacialModel<ModelType>&); + + //- Correct coeff/value on fixed flux boundary conditions + template<class GeometricField> + void correctFixedFluxBCs(GeometricField& field) const; + + +public: + + // Constructors + + //- Construct from two phases, blending method and three models + BlendedInterfacialModel + ( + const phaseModel& phase1, + const phaseModel& phase2, + const blendingMethod& blending, + autoPtr<ModelType> model, + autoPtr<ModelType> model1In2, + autoPtr<ModelType> model2In1, + const bool correctFixedFluxBCs = true + ); + + + //- Construct from the model table, dictionary and pairs + BlendedInterfacialModel + ( + const phasePair::dictTable& modelTable, + const blendingMethod& blending, + const phasePair& pair, + const orderedPhasePair& pair1In2, + const orderedPhasePair& pair2In1, + const bool correctFixedFluxBCs = true + ); + + + //- Destructor + ~BlendedInterfacialModel(); + + + // Member Functions + + //- Return true if a model is specified for the supplied phase + bool hasModel(const phaseModel& phase) const; + + //- Return the model for the supplied phase + const ModelType& model(const phaseModel& phase) const; + + //- Return the sign of the explicit value for the supplied phase + scalar sign(const phaseModel& phase) const; + + //- Return the blended force coefficient + tmp<volScalarField> K() const; + + //- Return the face blended force coefficient + tmp<surfaceScalarField> Kf() const; + + //- Return the blended force + template<class Type> + tmp<GeometricField<Type, fvPatchField, volMesh> > F() const; + + //- Return the face blended force + tmp<surfaceScalarField> Ff() const; + + //- Return the blended diffusivity + tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "BlendedInterfacialModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C new file mode 100644 index 00000000000..ed0745b7840 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(blendingMethod, 0); + defineRunTimeSelectionTable(blendingMethod, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingMethod::blendingMethod +( + const dictionary& dict +) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingMethod::~blendingMethod() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H new file mode 100644 index 00000000000..ec52bd04e6f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H @@ -0,0 +1,120 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::blendingMethod + +Description + +SourceFiles + blendingMethod.C + +\*---------------------------------------------------------------------------*/ + +#ifndef blendingMethod_H +#define blendingMethod_H + +#include "dictionary.H" +#include "runTimeSelectionTables.H" +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class blendingMethod Declaration +\*---------------------------------------------------------------------------*/ + +class blendingMethod +{ +public: + + //- Runtime type information + TypeName("blendingMethod"); + + + // Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + blendingMethod, + dictionary, + ( + const dictionary& dict, + const wordList& phaseNames + ), + (dict, phaseNames) + ); + + + // Constructors + + //- Construct from a dictionary + blendingMethod + ( + const dictionary& dict + ); + + + // Selector + + static autoPtr<blendingMethod> New + ( + const dictionary& dict, + const wordList& phaseNames + ); + + + //- Destructor + virtual ~blendingMethod(); + + + // Member Functions + + //- Factor for first phase + virtual tmp<volScalarField> f1 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const = 0; + + //- Factor for second phase + virtual tmp<volScalarField> f2 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C new file mode 100644 index 00000000000..2dcc6d0a5e8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::blendingMethod> Foam::blendingMethod::New +( + const dictionary& dict, + const wordList& phaseNames +) +{ + word blendingMethodType(dict.lookup("type")); + + Info<< "Selecting " << dict.dictName() << " blending method: " + << blendingMethodType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(blendingMethodType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("blendingMethod::New") + << "Unknown blendingMethodType type " + << blendingMethodType << endl << endl + << "Valid blendingMethod types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, phaseNames); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C new file mode 100644 index 00000000000..664841d0828 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C @@ -0,0 +1,124 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "hyperbolic.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + defineTypeNameAndDebug(hyperbolic, 0); + + addToRunTimeSelectionTable + ( + blendingMethod, + hyperbolic, + dictionary + ); +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingMethods::hyperbolic::hyperbolic +( + const dictionary& dict, + const wordList& phaseNames +) +: + blendingMethod(dict), + transitionAlphaScale_ + ( + "transitionAlphaScale", + dimless, + dict.lookup("transitionAlphaScale") + ) +{ + forAllConstIter(wordList, phaseNames, iter) + { + const word name(IOobject::groupName("minContinuousAlpha", *iter)); + + minContinuousAlpha_.insert + ( + *iter, + dimensionedScalar + ( + name, + dimless, + dict.lookup(name) + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingMethods::hyperbolic::~hyperbolic() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::hyperbolic::f1 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + return + ( + 1 + + tanh + ( + (4/transitionAlphaScale_) + *(phase2 - minContinuousAlpha_[phase2.name()]) + ) + )/2; +} + + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::hyperbolic::f2 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + return + ( + 1 + + tanh + ( + (4/transitionAlphaScale_) + *(phase1 - minContinuousAlpha_[phase1.name()]) + ) + )/2; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H new file mode 100644 index 00000000000..c6d71c9dca4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H @@ -0,0 +1,110 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::hyperbolic + +Description + +SourceFiles + hyperbolic.C + +\*---------------------------------------------------------------------------*/ + +#ifndef hyperbolic_H +#define hyperbolic_H + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + +/*---------------------------------------------------------------------------*\ + Class hyperbolic Declaration +\*---------------------------------------------------------------------------*/ + +class hyperbolic +: + public blendingMethod +{ + // Private data + + //- Minimum fraction of phases which can be considered continuous + HashTable<dimensionedScalar, word, word::hash> minContinuousAlpha_; + + //- Width of the transition + const dimensionedScalar transitionAlphaScale_; + + +public: + + //- Runtime type information + TypeName("hyperbolic"); + + + // Constructors + + //- Construct from a dictionary and a list of phase names + hyperbolic + ( + const dictionary& dict, + const wordList& phaseNames + ); + + + //- Destructor + ~hyperbolic(); + + + // Member Functions + + //- Factor for first phase + virtual tmp<volScalarField> f1 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; + + //- Factor for second phase + virtual tmp<volScalarField> f2 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace blendingMethods +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C new file mode 100644 index 00000000000..d9bfe2b5985 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C @@ -0,0 +1,170 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "linear.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + defineTypeNameAndDebug(linear, 0); + + addToRunTimeSelectionTable + ( + blendingMethod, + linear, + dictionary + ); +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingMethods::linear::linear +( + const dictionary& dict, + const wordList& phaseNames +) +: + blendingMethod(dict) +{ + forAllConstIter(wordList, phaseNames, iter) + { + const word nameFull + ( + IOobject::groupName("minFullyContinuousAlpha", *iter) + ); + + minFullyContinuousAlpha_.insert + ( + *iter, + dimensionedScalar + ( + nameFull, + dimless, + dict.lookup(nameFull) + ) + ); + + const word namePart + ( + IOobject::groupName("minPartlyContinuousAlpha", *iter) + ); + + minPartlyContinuousAlpha_.insert + ( + *iter, + dimensionedScalar + ( + namePart, + dimless, + dict.lookup(namePart) + ) + ); + + if + ( + minFullyContinuousAlpha_[*iter] + < minPartlyContinuousAlpha_[*iter] + ) + { + FatalErrorIn + ( + "Foam::blendingMethods::linear::linear" + "(" + "const dictionary& dict," + "const wordList& phaseNames" + ")" + ) << "The supplied fully continuous volume fraction for " + << *iter + << " is less than the partly continuous value." + << endl << exit(FatalError); + } + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingMethods::linear::~linear() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::linear::f1 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + const dimensionedScalar + minFullAlpha(minFullyContinuousAlpha_[phase2.name()]); + const dimensionedScalar + minPartAlpha(minPartlyContinuousAlpha_[phase2.name()]); + + return + min + ( + max + ( + (phase2 - minPartAlpha) + /(minFullAlpha - minPartAlpha + SMALL), + scalar(0) + ), + scalar(1) + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::linear::f2 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + const dimensionedScalar + minFullAlpha(minFullyContinuousAlpha_[phase1.name()]); + const dimensionedScalar + minPartAlpha(minPartlyContinuousAlpha_[phase1.name()]); + + return + min + ( + max + ( + (phase1 - minPartAlpha) + /(minFullAlpha - minPartAlpha + SMALL), + scalar(0) + ), + scalar(1) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H new file mode 100644 index 00000000000..16b22a7bb48 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::linear + +Description + +SourceFiles + linear.C + +\*---------------------------------------------------------------------------*/ + +#ifndef linear_H +#define linear_H + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + +/*---------------------------------------------------------------------------*\ + Class linear Declaration +\*---------------------------------------------------------------------------*/ + +class linear +: + public blendingMethod +{ + // Private data + + //- Minimum fraction of phases which can be considered fully continuous + HashTable<dimensionedScalar, word, word::hash> + minFullyContinuousAlpha_; + + //- Minimum fraction of phases which can be considered partly continuous + HashTable<dimensionedScalar, word, word::hash> + minPartlyContinuousAlpha_; + + +public: + + //- Runtime type information + TypeName("linear"); + + + // Constructors + + //- Construct from a dictionary and two phases + linear + ( + const dictionary& dict, + const wordList& phaseNames + ); + + + //- Destructor + ~linear(); + + + // Member Functions + + //- Factor for primary phase + virtual tmp<volScalarField> f1 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; + + //- Factor for secondary phase + virtual tmp<volScalarField> f2 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace blendingMethods +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C new file mode 100644 index 00000000000..b07795598d3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C @@ -0,0 +1,129 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noBlending.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + defineTypeNameAndDebug(noBlending, 0); + + addToRunTimeSelectionTable + ( + blendingMethod, + noBlending, + dictionary + ); +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingMethods::noBlending::noBlending +( + const dictionary& dict, + const wordList& phaseNames +) +: + blendingMethod(dict), + continuousPhase_(dict.lookup("continuousPhase")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingMethods::noBlending::~noBlending() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::noBlending::f1 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + const fvMesh& mesh(phase1.mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "f", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar + ( + "f", + dimless, + phase2.name() == continuousPhase_ + ) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::noBlending::f2 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + const fvMesh& mesh(phase1.mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "f", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar + ( + "f", + dimless, + phase1.name() == continuousPhase_ + ) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H new file mode 100644 index 00000000000..a777caef338 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H @@ -0,0 +1,107 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::noBlending + +Description + +SourceFiles + noBlending.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noBlending_H +#define noBlending_H + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + +/*---------------------------------------------------------------------------*\ + Class noBlending Declaration +\*---------------------------------------------------------------------------*/ + +class noBlending +: + public blendingMethod +{ + // Private data + + //- Name of the continuous phase + const word continuousPhase_; + + +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and two phases + noBlending + ( + const dictionary& dict, + const wordList& phaseNames + ); + + + //- Destructor + ~noBlending(); + + + // Member Functions + + //- Factor for primary phase + virtual tmp<volScalarField> f1 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; + + //- Factor for secondary phase + virtual tmp<volScalarField> f2 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace blendingMethods +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files new file mode 100644 index 00000000000..538bd7d6371 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files @@ -0,0 +1,32 @@ +phaseModel/phaseModel/phaseModel.C +phaseModel/phaseModel/newPhaseModel.C +phaseModel/phaseModel/phaseModels.C + +phasePair/phasePairKey/phasePairKey.C +phasePair/phasePair/phasePair.C +phasePair/orderedPhasePair/orderedPhasePair.C + +phaseSystem/phaseSystem.C + +diameterModels/diameterModel/diameterModel.C +diameterModels/diameterModel/newDiameterModel.C +diameterModels/constantDiameter/constantDiameter.C +diameterModels/isothermalDiameter/isothermalDiameter.C + +diameterModels/IATE/IATE.C +diameterModels/IATE/IATEsources/IATEsource/IATEsource.C +diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C +diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C +diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C + +BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C +BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C +BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C +BlendedInterfacialModel/blendingMethods/linear/linear.C +BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C + +twoPhaseSystem/twoPhaseSystem.C +twoPhaseSystem/newTwoPhaseSystem.C +twoPhaseSystem/twoPhaseSystems.C + +LIB = $(FOAM_LIBBIN)/libreactingTwoPhaseSystem diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options new file mode 100644 index 00000000000..db17065417e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options @@ -0,0 +1,18 @@ +EXE_INC = \ + -I../interfacialModels/lnInclude \ + -I../interfacialCompositionModels/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/combustionModels/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fvOptions/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude + +LIB_LIBS = \ + -lcombustionModels diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C new file mode 100644 index 00000000000..f003d92b983 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C @@ -0,0 +1,571 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "HeatAndMassTransferPhaseSystem.H" + +#include "BlendedInterfacialModel.H" +#include "heatTransferModel.H" +#include "massTransferModel.H" +#include "interfaceCompositionModel.H" + +#include "HashPtrTable.H" + +#include "fvcDiv.H" +#include "fvmSup.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>:: +HeatAndMassTransferPhaseSystem +( + const fvMesh& mesh +) +: + BasePhaseSystem(mesh) +{ + this->generatePairsAndSubModels + ( + "heatTransfer", + heatTransferModels_ + ); + + this->generatePairsAndSubModels + ( + "massTransfer", + massTransferModels_ + ); + + this->generatePairsAndSubModels + ( + "interfaceComposition", + interfaceCompositionModels_ + ); + + forAllConstIter + ( + phaseSystem::phasePairTable, + this->phasePairs_, + phasePairIter + ) + { + const phasePair& pair(phasePairIter()); + + if (pair.ordered()) + { + continue; + } + + // Initialy assume no mass transfer + + dmdt_.insert + ( + pair, + new volScalarField + ( + IOobject + ( + IOobject::groupName("dmdt", pair.name()), + this->mesh().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + this->mesh(), + dimensionedScalar("zero", dimDensity/dimTime, 0) + ) + ); + + dmdtExplicit_.insert + ( + pair, + new volScalarField + ( + IOobject + ( + IOobject::groupName("dmdtExplicit", pair.name()), + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar("zero", dimDensity/dimTime, 0) + ) + ); + + volScalarField H1(heatTransferModels_[pair][pair.first()]->K()); + volScalarField H2(heatTransferModels_[pair][pair.second()]->K()); + + Tf_.insert + ( + pair, + new volScalarField + ( + IOobject + ( + IOobject::groupName("Tf", pair.name()), + this->mesh().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + ( + H1*pair.phase1().thermo().T() + + H2*pair.phase2().thermo().T() + ) + /max + ( + H1 + H2, + dimensionedScalar("small", heatTransferModel::dimK, SMALL) + ) + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>:: +~HeatAndMassTransferPhaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::dmdt +( + const phasePairKey& key +) const +{ + const scalar dmdtSign(Pair<word>::compare(dmdt_.find(key).key(), key)); + + return dmdtSign**dmdt_[key]; +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::momentumTransferTable> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::momentumTransfer +( + IOMRFZoneList& MRF +) const +{ + autoPtr<phaseSystem::momentumTransferTable> + eqnsPtr(BasePhaseSystem::momentumTransfer(MRF)); + + phaseSystem::momentumTransferTable& eqns = eqnsPtr(); + + // Source term due to mass trasfer + forAllConstIter + ( + phaseSystem::phasePairTable, + this->phasePairs_, + phasePairIter + ) + { + const phasePair& pair(phasePairIter()); + + if (pair.ordered()) + { + continue; + } + + const volVectorField& U1(pair.phase1().U()); + const volVectorField& U2(pair.phase2().U()); + + const volScalarField dmdt(this->dmdt(pair)); + const volScalarField dmdt12(dmdt*pos(dmdt)); + const volScalarField dmdt21(dmdt*neg(dmdt)); + + *eqns[pair.phase1().name()] += fvm::Sp(dmdt21, U1) - dmdt21*U2; + *eqns[pair.phase2().name()] += dmdt12*U1 - fvm::Sp(dmdt12, U2); + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::heatTransferTable> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const +{ + autoPtr<phaseSystem::heatTransferTable> eqnsPtr + ( + new phaseSystem::heatTransferTable() + ); + + phaseSystem::heatTransferTable& eqns = eqnsPtr(); + + forAllConstIter + ( + phaseSystem::phaseModelTable, + this->phaseModels_, + phaseModelIter + ) + { + const phaseModel& phase(phaseModelIter()); + + eqns.insert + ( + phase.name(), + new fvScalarMatrix(phase.thermo().he(), dimEnergy/dimTime) + ); + } + + // Heat transfer with the interface + forAllConstIter + ( + heatTransferModelTable, + heatTransferModels_, + heatTransferModelIter + ) + { + const phasePair& pair + ( + this->phasePairs_[heatTransferModelIter.key()] + ); + + const phaseModel* phase = &pair.phase1(); + const phaseModel* otherPhase = &pair.phase2(); + + const volScalarField& Tf(*Tf_[pair]); + + const volScalarField K1 + ( + heatTransferModelIter()[pair.first()]->K() + ); + const volScalarField K2 + ( + heatTransferModelIter()[pair.second()]->K() + ); + const volScalarField KEff + ( + K1*K2 + /max + ( + K1 + K2, + dimensionedScalar("small", heatTransferModel::dimK, SMALL) + ) + ); + + const volScalarField* K = &K1; + const volScalarField* otherK = &K2; + + forAllConstIter(phasePair, pair, iter) + { + const volScalarField& he(phase->thermo().he()); + volScalarField Cpv(phase->thermo().Cpv()); + + *eqns[phase->name()] += + (*K)*(Tf - phase->thermo().T()) + + KEff/Cpv*he - fvm::Sp(KEff/Cpv, he); + + Swap(phase, otherPhase); + Swap(K, otherK); + } + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::massTransferTable> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::massTransfer() const +{ + // Create a mass transfer matrix for each species of each phase + autoPtr<phaseSystem::massTransferTable> eqnsPtr + ( + new phaseSystem::massTransferTable() + ); + + phaseSystem::massTransferTable& eqns = eqnsPtr(); + + forAllConstIter + ( + phaseSystem::phaseModelTable, + this->phaseModels_, + phaseModelIter + ) + { + const phaseModel& phase(phaseModelIter()); + + const PtrList<volScalarField>& Yi = phase.Y(); + + forAll(Yi, i) + { + eqns.insert + ( + Yi[i].name(), + new fvScalarMatrix(Yi[i], dimMass/dimTime) + ); + } + } + + // Reset the interfacial mass flow rates + forAllConstIter + ( + phaseSystem::phasePairTable, + this->phasePairs_, + phasePairIter + ) + { + const phasePair& pair(phasePairIter()); + + if (pair.ordered()) + { + continue; + } + + *dmdt_[pair] = + *dmdtExplicit_[pair]; + + *dmdtExplicit_[pair] = + dimensionedScalar("zero", dimDensity/dimTime, 0); + } + + // Sum up the contribution from each interface composition model + forAllConstIter + ( + interfaceCompositionModelTable, + interfaceCompositionModels_, + interfaceCompositionModelIter + ) + { + const interfaceCompositionModel& compositionModel + ( + interfaceCompositionModelIter() + ); + + const phasePair& pair + ( + this->phasePairs_[interfaceCompositionModelIter.key()] + ); + const phaseModel& phase = pair.phase1(); + const phaseModel& otherPhase = pair.phase2(); + const phasePairKey key(phase.name(), otherPhase.name()); + + const volScalarField& Tf(*Tf_[key]); + + volScalarField& dmdtExplicit(*dmdtExplicit_[key]); + volScalarField& dmdt(*dmdt_[key]); + + scalar dmdtSign(Pair<word>::compare(dmdt_.find(key).key(), key)); + + const volScalarField K + ( + massTransferModels_[key][phase.name()]->K() + ); + + forAllConstIter + ( + hashedWordList, + compositionModel.species(), + memberIter + ) + { + const word& member = *memberIter; + + const word name + ( + IOobject::groupName(member, phase.name()) + ); + + const word otherName + ( + IOobject::groupName(member, otherPhase.name()) + ); + + const volScalarField KD + ( + K*compositionModel.D(member) + ); + + const volScalarField Yf + ( + compositionModel.Yf(member, Tf) + ); + + // Implicit transport through the phase + *eqns[name] += + phase.rho()*KD*Yf + - fvm::Sp(phase.rho()*KD, eqns[name]->psi()); + + // Sum the mass transfer rate + dmdtExplicit += dmdtSign*phase.rho()*KD*Yf; + dmdt -= dmdtSign*phase.rho()*KD*eqns[name]->psi(); + + // Explicit transport out of the other phase + if (eqns.found(otherName)) + { + *eqns[otherName] -= + otherPhase.rho()*KD*compositionModel.dY(member, Tf); + } + } + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +void Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::correctThermo() +{ + BasePhaseSystem::correctThermo(); + + // This loop solves for the interface temperatures, Tf, and updates the + // interface composition models. + // + // The rate of heat transfer to the interface must equal the latent heat + // consumed at the interface, i.e.: + // + // H1*(T1 - Tf) + H2*(T2 - Tf) == mDotL + // == K*rho*(Yfi - Yi)*Li + // + // Yfi is likely to be a strong non-linear (typically exponential) function + // of Tf, so the solution for the temperature is newton-accelerated + + forAllConstIter + ( + phaseSystem::phasePairTable, + this->phasePairs_, + phasePairIter + ) + { + const phasePair& pair(phasePairIter()); + + if (pair.ordered()) + { + continue; + } + + const phasePairKey key12(pair.first(), pair.second(), true); + const phasePairKey key21(pair.second(), pair.first(), true); + + volScalarField H1(heatTransferModels_[pair][pair.first()]->K()); + volScalarField H2(heatTransferModels_[pair][pair.second()]->K()); + dimensionedScalar HSmall("small", heatTransferModel::dimK, SMALL); + + volScalarField mDotL + ( + IOobject + ( + "mDotL", + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar("zero", dimEnergy/dimVolume/dimTime, 0) + ); + volScalarField mDotLPrime + ( + IOobject + ( + "mDotLPrime", + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar("zero", mDotL.dimensions()/dimTemperature, 0) + ); + + volScalarField& Tf = *Tf_[pair]; + + // Add latent heats from forward and backward models + if (interfaceCompositionModels_.found(key12)) + { + interfaceCompositionModels_[key12]->addMDotL + ( + massTransferModels_[pair][pair.first()]->K(), + Tf, + mDotL, + mDotLPrime + ); + } + if (interfaceCompositionModels_.found(key21)) + { + interfaceCompositionModels_[key21]->addMDotL + ( + massTransferModels_[pair][pair.second()]->K(), + Tf, + mDotL, + mDotLPrime + ); + } + + // Update the interface temperature by applying one step of newton's + // method to the interface relation + Tf -= + ( + H1*(Tf - pair.phase1().thermo().T()) + + H2*(Tf - pair.phase2().thermo().T()) + + mDotL + ) + /( + max(H1 + H2 + mDotLPrime, HSmall) + ); + + // Update the interface compositions + if (interfaceCompositionModels_.found(key12)) + { + interfaceCompositionModels_[key12]->update(Tf); + } + if (interfaceCompositionModels_.found(key21)) + { + interfaceCompositionModels_[key21]->update(Tf); + } + + Info<< "Tf." << pair.name() + << ": min = " << min(Tf.internalField()) + << ", mean = " << average(Tf.internalField()) + << ", max = " << max(Tf.internalField()) + << endl; + } +} + + +template<class BasePhaseSystem> +bool Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::read() +{ + if (BasePhaseSystem::read()) + { + bool readOK = true; + + // Models ... + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H new file mode 100644 index 00000000000..02ec28e08db --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H @@ -0,0 +1,180 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::HeatAndMassTransferPhaseSystem + +Description + Class which models interfacial heat and mass transfer between a number of + phases. Mass is transferred to or from a phase according to a composition + model at the surface of another phase. Heat is transferred from a phase to + an interfacial temperature. The interface temperature is calculated such + that the net rate at which the heat is transferred to the interface is + equal to the latent heat consumed by the mass transfer. + +SourceFiles + HeatAndMassTransferPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef HeatAndMassTransferPhaseSystem_H +#define HeatAndMassTransferPhaseSystem_H + +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +template <class modelType> +class BlendedInterfacialModel; + +class blendingMethod; +class heatTransferModel; +class massTransferModel; +class interfaceCompositionModel; + +/*---------------------------------------------------------------------------*\ + Class HeatAndMassTransferPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseSystem> +class HeatAndMassTransferPhaseSystem +: + public BasePhaseSystem +{ +protected: + + // Protected typedefs + + typedef HashTable + < + HashTable + < + autoPtr<BlendedInterfacialModel<heatTransferModel> > + >, + phasePairKey, + phasePairKey::hash + > heatTransferModelTable; + + typedef HashTable + < + HashTable + < + autoPtr<BlendedInterfacialModel<massTransferModel> > + >, + phasePairKey, + phasePairKey::hash + > massTransferModelTable; + + typedef HashTable + < + autoPtr<interfaceCompositionModel>, + phasePairKey, + phasePairKey::hash + > interfaceCompositionModelTable; + + + // Protected data + + //- Mass transfer rate + HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash> + dmdt_; + + //- Explicit part of the mass transfer rate + HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash> + dmdtExplicit_; + + //- Interface temperatures + HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash> Tf_; + + // Sub Models + + //- Heat transfer models + heatTransferModelTable heatTransferModels_; + + //- Mass transfer models + massTransferModelTable massTransferModels_; + + //- Interface composition models + interfaceCompositionModelTable interfaceCompositionModels_; + + +public: + + // Constructors + + //- Construct from fvMesh + HeatAndMassTransferPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~HeatAndMassTransferPhaseSystem(); + + + // Member Functions + + //- Return the interfacial mass flow rate + virtual tmp<volScalarField> dmdt + ( + const phasePairKey& key + ) const; + + //- Return the momentum transfer matrices + virtual autoPtr<phaseSystem::momentumTransferTable> momentumTransfer + ( + IOMRFZoneList& mrfZones + ) const; + + //- Return the heat transfer matrices + virtual autoPtr<phaseSystem::heatTransferTable> + heatTransfer() const; + + //- Return the mass transfer matrices + virtual autoPtr<phaseSystem::massTransferTable> + massTransfer() const; + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Read base phaseProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "HeatAndMassTransferPhaseSystem.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C new file mode 100644 index 00000000000..0a5d8a7060b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C @@ -0,0 +1,177 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "HeatTransferPhaseSystem.H" + +#include "BlendedInterfacialModel.H" +#include "heatTransferModel.H" + +#include "HashPtrTable.H" + +#include "fvcDiv.H" +#include "fvmSup.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::HeatTransferPhaseSystem +( + const fvMesh& mesh +) +: + BasePhaseSystem(mesh) +{ + this->generatePairsAndSubModels("heatTransfer", heatTransferModels_); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::~HeatTransferPhaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::dmdt +( + const phasePairKey& key +) const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName + ( + "dmdt", + this->phasePairs_[key]->name() + ), + this->mesh().time().timeName(), + this->mesh().time() + ), + this->mesh(), + dimensionedScalar("zero", dimDensity/dimTime, 0) + ) + ); +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::heatTransferTable> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const +{ + autoPtr<phaseSystem::heatTransferTable> eqnsPtr + ( + new phaseSystem::heatTransferTable() + ); + + phaseSystem::heatTransferTable& eqns = eqnsPtr(); + + forAllConstIter + ( + phaseSystem::phaseModelTable, + this->phaseModels_, + phaseModelIter + ) + { + const phaseModel& phase(phaseModelIter()); + + eqns.insert + ( + phase.name(), + new fvScalarMatrix(phase.thermo().he(), dimEnergy/dimTime) + ); + } + + forAllConstIter + ( + heatTransferModelTable, + heatTransferModels_, + heatTransferModelIter + ) + { + const volScalarField K(heatTransferModelIter()->K()); + + const phasePair& pair(this->phasePairs_[heatTransferModelIter.key()]); + + const phaseModel* phase = &pair.phase1(); + const phaseModel* otherPhase = &pair.phase2(); + + forAllConstIter(phasePair, pair, iter) + { + const volScalarField& he(phase->thermo().he()); + volScalarField Cpv(phase->thermo().Cpv()); + + *eqns[phase->name()] += + K*(otherPhase->thermo().T() - phase->thermo().T() + he/Cpv) + - fvm::Sp(K/Cpv, he); + + Swap(phase, otherPhase); + } + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::massTransferTable> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::massTransfer() const +{ + autoPtr<phaseSystem::massTransferTable> eqnsPtr + ( + new phaseSystem::massTransferTable() + ); + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +bool Foam::HeatTransferPhaseSystem<BasePhaseSystem>::read() +{ + if (BasePhaseSystem::read()) + { + bool readOK = true; + + // Models ... + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H new file mode 100644 index 00000000000..6bb96c90bae --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H @@ -0,0 +1,125 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::HeatTransferPhaseSystem + +Description + Class which models interfacial heat transfer between a number of phases. + +SourceFiles + HeatTransferPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef HeatTransferPhaseSystem_H +#define HeatTransferPhaseSystem_H + +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class blendingMethod; +template <class modelType> class BlendedInterfacialModel; +class heatTransferModel; + +/*---------------------------------------------------------------------------*\ + Class HeatTransferPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseSystem> +class HeatTransferPhaseSystem +: + public BasePhaseSystem +{ +protected: + + // Protected typedefs + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<heatTransferModel> >, + phasePairKey, + phasePairKey::hash + > heatTransferModelTable; + + + // Protected data + + // Sub Models + + //- Heat transfer models + heatTransferModelTable heatTransferModels_; + + +public: + + // Constructors + + //- Construct from fvMesh + HeatTransferPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~HeatTransferPhaseSystem(); + + + // Member Functions + + //- Return the interfacial mass flow rate + virtual tmp<volScalarField> dmdt + ( + const phasePairKey& key + ) const; + + //- Return the heat transfer matrices + virtual autoPtr<phaseSystem::heatTransferTable> + heatTransfer() const; + + //- Return the mass transfer matrices + virtual autoPtr<phaseSystem::massTransferTable> + massTransfer() const; + + //- Read base phaseProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "HeatTransferPhaseSystem.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C new file mode 100644 index 00000000000..083af1fed55 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C @@ -0,0 +1,533 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "MomentumTransferPhaseSystem.H" + +#include "BlendedInterfacialModel.H" +#include "dragModel.H" +#include "virtualMassModel.H" +#include "liftModel.H" +#include "wallLubricationModel.H" +#include "turbulentDispersionModel.H" + +#include "IOMRFZoneList.H" +#include "HashPtrTable.H" + +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvcDiv.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>:: +MomentumTransferPhaseSystem +( + const fvMesh& mesh +) +: + BasePhaseSystem(mesh) +{ + this->generatePairsAndSubModels + ( + "drag", + dragModels_ + ); + + this->generatePairsAndSubModels + ( + "virtualMass", + virtualMassModels_ + ); + + this->generatePairsAndSubModels + ( + "lift", + liftModels_ + ); + + this->generatePairsAndSubModels + ( + "wallLubrication", + wallLubricationModels_ + ); + + this->generatePairsAndSubModels + ( + "turbulentDispersion", + turbulentDispersionModels_ + ); + + forAllConstIter + ( + dragModelTable, + dragModels_, + dragModelIter + ) + { + const phasePair& pair(this->phasePairs_[dragModelIter.key()]); + + Kds_.insert + ( + pair, + new volScalarField + ( + IOobject::groupName("Kd", pair.name()), + dragModelIter()->K() + ) + ); + } + + forAllConstIter + ( + virtualMassModelTable, + virtualMassModels_, + virtualMassModelIter + ) + { + const phasePair& pair(this->phasePairs_[virtualMassModelIter.key()]); + + Vms_.insert + ( + pair, + new volScalarField + ( + IOobject::groupName("Vm", pair.name()), + virtualMassModelIter()->K() + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>:: +~MomentumTransferPhaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Kd +( + const phasePairKey& key +) const +{ + return dragModels_[key]->K(); +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::surfaceScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Kdf +( + const phasePairKey& key +) const +{ + return dragModels_[key]->Kf(); +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Vm +( + const phasePairKey& key +) const +{ + if (virtualMassModels_.found(key)) + { + return virtualMassModels_[key]->K(); + } + else + { + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + virtualMassModel::typeName + ":K", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", virtualMassModel::dimK, 0) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::surfaceScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Vmf +( + const phasePairKey& key +) const +{ + if (virtualMassModels_.found(key)) + { + return virtualMassModels_[key]->Kf(); + } + else + { + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + virtualMassModel::typeName + ":Kf", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", virtualMassModel::dimK, 0) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::volVectorField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::F +( + const phasePairKey& key +) const +{ + if (liftModels_.found(key) && wallLubricationModels_.found(key)) + { + return + liftModels_[key]->template F<vector>() + + wallLubricationModels_[key]->template F<vector>(); + } + else if (liftModels_.found(key)) + { + return liftModels_[key]->template F<vector>(); + } + else if (wallLubricationModels_.found(key)) + { + return wallLubricationModels_[key]->template F<vector>(); + } + else + { + return tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + liftModel::typeName + ":F", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedVector("zero", liftModel::dimF, vector::zero) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::surfaceScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Ff +( + const phasePairKey& key +) const +{ + if (liftModels_.found(key) && wallLubricationModels_.found(key)) + { + return + liftModels_[key]->Ff() + + wallLubricationModels_[key]->Ff(); + } + else if (liftModels_.found(key)) + { + return liftModels_[key]->Ff(); + } + else if (wallLubricationModels_.found(key)) + { + return wallLubricationModels_[key]->Ff(); + } + else + { + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + liftModel::typeName + ":Ff", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", liftModel::dimF*dimArea, 0) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::D +( + const phasePairKey& key +) const +{ + if (turbulentDispersionModels_.found(key)) + { + return turbulentDispersionModels_[key]->D(); + } + else + { + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + turbulentDispersionModel::typeName + ":D", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", turbulentDispersionModel::dimD, 0) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::momentumTransferTable> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer +( + IOMRFZoneList& MRF +) const +{ + // Create a momentum transfer matrix for each phase + autoPtr<phaseSystem::momentumTransferTable> eqnsPtr + ( + new phaseSystem::momentumTransferTable() + ); + + phaseSystem::momentumTransferTable& eqns = eqnsPtr(); + + forAllConstIter + ( + phaseSystem::phaseModelTable, + this->phaseModels_, + phaseModelIter + ) + { + const phaseModel& phase(phaseModelIter()); + + eqns.insert + ( + phase.name(), + new fvVectorMatrix(phase.U(), dimMass*dimVelocity/dimTime) + ); + } + + // Update the drag coefficients + forAllConstIter + ( + dragModelTable, + dragModels_, + dragModelIter + ) + { + *Kds_[dragModelIter.key()] = dragModelIter()->K(); + } + + // Add the implicit part of the drag force + forAllConstIter + ( + phaseSystem::KdTable, + Kds_, + KdIter + ) + { + const volScalarField& K(*KdIter()); + + const phasePair& pair(this->phasePairs_[KdIter.key()]); + + const phaseModel* phase = &pair.phase1(); + const phaseModel* otherPhase = &pair.phase2(); + + forAllConstIter(phasePair, pair, iter) + { + const volVectorField& U(phase->U()); + + *eqns[phase->name()] -= fvm::Sp(K, U); + + Swap(phase, otherPhase); + } + } + + // Update the virtual mass coefficients + forAllConstIter + ( + virtualMassModelTable, + virtualMassModels_, + virtualMassModelIter + ) + { + *Vms_[virtualMassModelIter.key()] = virtualMassModelIter()->K(); + } + + // Add the virtual mass force + forAllConstIter + ( + phaseSystem::VmTable, + Vms_, + VmIter + ) + { + const volScalarField& Vm(*VmIter()); + + const phasePair& pair(this->phasePairs_[VmIter.key()]); + + const phaseModel* phase = &pair.phase1(); + const phaseModel* otherPhase = &pair.phase2(); + + forAllConstIter(phasePair, pair, iter) + { + const volVectorField& U(phase->U()); + const surfaceScalarField& phi(phase->phi()); + + *eqns[phase->name()] += + - Vm + *( + fvm::ddt(U) + + fvm::div(phi, U) + - fvm::Sp(fvc::div(phi), U) + - otherPhase->DUDt() + ) + - MRF.DDt(Vm, U - otherPhase->U()); + + Swap(phase, otherPhase); + } + } + + // Add the lift force + forAllConstIter + ( + liftModelTable, + liftModels_, + liftModelIter + ) + { + const volVectorField F(liftModelIter()->F<vector>()); + + const phasePair& pair(this->phasePairs_[liftModelIter.key()]); + + *eqns[pair.phase1().name()] += F; + *eqns[pair.phase2().name()] -= F; + } + + // Add the wall lubrication force + forAllConstIter + ( + wallLubricationModelTable, + wallLubricationModels_, + wallLubricationModelIter + ) + { + const volVectorField F(wallLubricationModelIter()->F<vector>()); + + const phasePair& + pair(this->phasePairs_[wallLubricationModelIter.key()]); + + *eqns[pair.phase1().name()] += F; + *eqns[pair.phase2().name()] -= F; + } + + // Add the turbulent dispersion force + forAllConstIter + ( + turbulentDispersionModelTable, + turbulentDispersionModels_, + turbulentDispersionModelIter + ) + { + const volVectorField F(turbulentDispersionModelIter()->F<vector>()); + + const phasePair& + pair(this->phasePairs_[turbulentDispersionModelIter.key()]); + + *eqns[pair.phase1().name()] += F; + *eqns[pair.phase2().name()] -= F; + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +bool Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::read() +{ + if (BasePhaseSystem::read()) + { + bool readOK = true; + + // Read models ... + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H new file mode 100644 index 00000000000..87e180cb4ac --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H @@ -0,0 +1,198 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::MomentumTransferPhaseSystem + +Description + Class which models interfacial momenum transfer between a number of phases. + Drag, virtual mass, lift, wall lubrication and turbulent dispersion are all + modelled. The explicit contribution from the drag is omitted from the + transfer matrices, as this forms part of the solution of the pressure + equation. + +SourceFiles + MomentumTransferPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef MomentumTransferPhaseSystem_H +#define MomentumTransferPhaseSystem_H + +#include "phaseSystem.H" +#include "HashPtrTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +template <class modelType> +class BlendedInterfacialModel; + +class blendingMethod; +class dragModel; +class virtualMassModel; +class liftModel; +class wallLubricationModel; +class turbulentDispersionModel; + +/*---------------------------------------------------------------------------*\ + Class MomentumTransferPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseSystem> +class MomentumTransferPhaseSystem +: + public BasePhaseSystem +{ +protected: + + // Protected typedefs + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<dragModel> >, + phasePairKey, + phasePairKey::hash + > dragModelTable; + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<virtualMassModel> >, + phasePairKey, + phasePairKey::hash + > virtualMassModelTable; + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<liftModel> >, + phasePairKey, + phasePairKey::hash + > liftModelTable; + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<wallLubricationModel> >, + phasePairKey, + phasePairKey::hash + > wallLubricationModelTable; + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<turbulentDispersionModel> >, + phasePairKey, + phasePairKey::hash + > turbulentDispersionModelTable; + + +private: + + // Private data + + //- Drag coefficients + phaseSystem::KdTable Kds_; + + //- Virtual mass coefficients + phaseSystem::VmTable Vms_; + + // Sub Models + + //- Drag models + dragModelTable dragModels_; + + //- Virtual mass models + virtualMassModelTable virtualMassModels_; + + //- Lift models + liftModelTable liftModels_; + + //- Wall lubrication models + wallLubricationModelTable wallLubricationModels_; + + //- Turbulent dispersion models + turbulentDispersionModelTable turbulentDispersionModels_; + + +public: + + // Constructors + + //- Construct from fvMesh + MomentumTransferPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~MomentumTransferPhaseSystem(); + + + // Member Functions + + //- Return the drag coefficient + virtual tmp<volScalarField> Kd(const phasePairKey& key) const; + + //- Return the face drag coefficient + virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const; + + //- Return the virtual mass coefficient + virtual tmp<volScalarField> Vm(const phasePairKey& key) const; + + //- Return the face virtual mass coefficient + virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const; + + //- Return the combined force (lift + wall-lubrication) + virtual tmp<volVectorField> F(const phasePairKey& key) const; + + //- Return the combined face-force (lift + wall-lubrication) + virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const; + + //- Return the turbulent diffusivity + // Multiplies the phase-fraction gradient + virtual tmp<volScalarField> D(const phasePairKey& key) const; + + //- Return the momentum transfer matrices + virtual autoPtr<phaseSystem::momentumTransferTable> momentumTransfer + ( + IOMRFZoneList& mrfZones + ) const; + + //- Read base phaseProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "MomentumTransferPhaseSystem.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C new file mode 100644 index 00000000000..4d51d8c43d4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C @@ -0,0 +1,205 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "IATE.H" +#include "IATEsource.H" +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvcDdt.H" +#include "fvcDiv.H" +#include "fvcAverage.H" +#include "fvOptionList.H" +#include "mathematicalConstants.H" +#include "fundamentalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + defineTypeNameAndDebug(IATE, 0); + + addToRunTimeSelectionTable + ( + diameterModel, + IATE, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::IATE::IATE +( + const dictionary& diameterProperties, + const phaseModel& phase +) +: + diameterModel(diameterProperties, phase), + kappai_ + ( + IOobject + ( + IOobject::groupName("kappai", phase.name()), + phase_.time().timeName(), + phase_.mesh(), + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + phase_.mesh() + ), + dMax_("dMax", dimLength, diameterProperties_.lookup("dMax")), + dMin_("dMin", dimLength, diameterProperties_.lookup("dMin")), + residualAlpha_ + ( + "residualAlpha", + dimless, + diameterProperties_.lookup("residualAlpha") + ), + d_ + ( + IOobject + ( + IOobject::groupName("d", phase.name()), + phase_.time().timeName(), + phase_.mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + dsm() + ), + sources_ + ( + diameterProperties_.lookup("sources"), + IATEsource::iNew(*this) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::diameterModels::IATE::~IATE() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATE::dsm() const +{ + return max(6/max(kappai_, 6/dMax_), dMin_); +} + +// Placeholder for the nucleation/condensation model +// Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATE::Rph() const +// { +// const volScalarField& T = phase_thermo().T(); +// const volScalarField& p = phase_.p(); +// +// scalar A, B, C, sigma, vm, Rph; +// +// volScalarField ps(1e5*pow(10, A - B/(T + C))); +// volScalarField Dbc +// ( +// 4*sigma*vm/(constant::physicoChemical::k*T*log(p/ps)) +// ); +// +// return constant::mathematical::pi*sqr(Dbc)*Rph; +// } + +void Foam::diameterModels::IATE::correct() +{ + // Initialise the accumulated source term to the dilatation effect + volScalarField R + ( + ( + (1.0/3.0) + /max + ( + fvc::average(phase_ + phase_.oldTime()), + residualAlpha_ + ) + ) + *(fvc::ddt(phase_) + fvc::div(phase_.alphaPhi())) + ); + + // Accumulate the run-time selectable sources + forAll(sources_, j) + { + R -= sources_[j].R(); + } + + // const_cast needed because the operators and functions of fvOptions + // are currently non-const. + fv::optionList& fvOptions = const_cast<fv::optionList&> + ( + phase_.mesh().lookupObject<fv::optionList>("fvOptions") + ); + + // Construct the interfacial curvature equation + fvScalarMatrix kappaiEqn + ( + fvm::ddt(kappai_) + fvm::div(phase_.phi(), kappai_) + - fvm::Sp(fvc::div(phase_.phi()), kappai_) + == + - fvm::SuSp(R, kappai_) + //+ Rph() // Omit the nucleation/condensation term + + fvOptions(kappai_) + ); + + kappaiEqn.relax(); + + fvOptions.constrain(kappaiEqn); + + kappaiEqn.solve(); + + // Update the Sauter-mean diameter + d_ = dsm(); +} + + +bool Foam::diameterModels::IATE::read(const dictionary& phaseProperties) +{ + diameterModel::read(phaseProperties); + + diameterProperties_.lookup("dMax") >> dMax_; + diameterProperties_.lookup("dMin") >> dMin_; + + // Re-create all the sources updating number, type and coefficients + PtrList<IATEsource> + ( + diameterProperties_.lookup("sources"), + IATEsource::iNew(*this) + ).transfer(sources_); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H new file mode 100644 index 00000000000..5ad850e3f6b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATE + +Description + IATE (Interfacial Area Transport Equation) bubble diameter model. + + Solves for the interfacial curvature per unit volume of the phase rather + than interfacial area per unit volume to avoid stability issues relating to + the consistency requirements between the phase fraction and interfacial area + per unit volume. In every other respect this model is as presented in the + paper: + + \verbatim + "Development of Interfacial Area Transport Equation" + Ishii, M., Kim, S. and Kelly, J., + Nuclear Engineering and Technology, Vol.37 No.6 December 2005 + \endverbatim + +SourceFiles + IATE.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IATE_H +#define IATE_H + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + +// Forward declaration of classes +class IATEsource; + +/*---------------------------------------------------------------------------*\ + Class IATE Declaration +\*---------------------------------------------------------------------------*/ + +class IATE +: + public diameterModel +{ + // Private data + + //- Interfacial curvature (alpha*interfacial area) + volScalarField kappai_; + + //- Maximum diameter used for stabilisation in the limit kappai->0 + dimensionedScalar dMax_; + + //- Minimum diameter used for stabilisation in the limit kappai->inf + dimensionedScalar dMin_; + + //- Residual phase fraction + dimensionedScalar residualAlpha_; + + //- The Sauter-mean diameter of the phase + volScalarField d_; + + //- IATE sources + PtrList<IATEsource> sources_; + + + // Private member functions + + tmp<volScalarField> dsm() const; + + +public: + + friend class IATEsource; + + //- Runtime type information + TypeName("IATE"); + + + // Constructors + + //- Construct from components + IATE + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + //- Destructor + virtual ~IATE(); + + + // Member Functions + + //- Return the interfacial curvature + const volScalarField& kappai() const + { + return kappai_; + } + + //- Return the interfacial area + tmp<volScalarField> a() const + { + return phase_*kappai_; + } + + //- Return the Sauter-mean diameter + virtual tmp<volScalarField> d() const + { + return d_; + } + + //- Correct the diameter field + virtual void correct(); + + //- Read phaseProperties dictionary + virtual bool read(const dictionary& phaseProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C new file mode 100644 index 00000000000..59bf824f56a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C @@ -0,0 +1,148 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "IATEsource.H" +#include "twoPhaseSystem.H" +#include "fvMatrix.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "uniformDimensionedFields.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + defineTypeNameAndDebug(IATEsource, 0); + defineRunTimeSelectionTable(IATEsource, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::diameterModels::IATEsource> +Foam::diameterModels::IATEsource::New +( + const word& type, + const IATE& iate, + const dictionary& dict +) +{ + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(type); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "IATEsource::New" + "(const word& type, const IATE&, const dictionary&)" + ) << "Unknown IATE source type " + << type << nl << nl + << "Valid IATE source types : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr<IATEsource>(cstrIter()(iate, dict)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Ur() const +{ + const uniformDimensionedVectorField& g = + phase().db().lookupObject<uniformDimensionedVectorField>("g"); + + return + sqrt(2.0) + *pow025 + ( + fluid().sigma()*mag(g) + *(otherPhase().rho() - phase().rho()) + /sqr(otherPhase().rho()) + ) + *pow(max(1 - phase(), scalar(0)), 1.75); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Ut() const +{ + return sqrt(2*otherPhase().turbulence().k()); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Re() const +{ + return max(Ur()*phase().d()/otherPhase().nu(), scalar(1.0e-3)); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::CD() const +{ + const volScalarField Eo(this->Eo()); + const volScalarField Re(this->Re()); + + return + max + ( + min + ( + (16/Re)*(1 + 0.15*pow(Re, 0.687)), + 48/Re + ), + 8*Eo/(3*(Eo + 4)) + ); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Mo() const +{ + const uniformDimensionedVectorField& g = + phase().db().lookupObject<uniformDimensionedVectorField>("g"); + + return + mag(g)*pow4(otherPhase().nu())*sqr(otherPhase().rho()) + *(otherPhase().rho() - phase().rho()) + /pow3(fluid().sigma()); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Eo() const +{ + const uniformDimensionedVectorField& g = + phase().db().lookupObject<uniformDimensionedVectorField>("g"); + + return + mag(g)*sqr(phase().d()) + *(otherPhase().rho() - phase().rho()) + /fluid().sigma(); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::We() const +{ + return + otherPhase().rho()*sqr(Ur())*phase().d()/fluid().sigma(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H new file mode 100644 index 00000000000..8c8a68ef638 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H @@ -0,0 +1,193 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsource + +Description + IATE (Interfacial Area Transport Equation) bubble diameter model + run-time selectable sources. + +SourceFiles + IATEsource.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IATEsource_H +#define IATEsource_H + +#include "IATE.H" +#include "twoPhaseSystem.H" +#include "mathematicalConstants.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + +/*---------------------------------------------------------------------------*\ + Class IATEsource Declaration +\*---------------------------------------------------------------------------*/ + +class IATEsource +{ + +protected: + + // Protected data + + //- Reference to the IATE this source applies to + const IATE& iate_; + + +public: + + //- Runtime type information + TypeName("IATEsource"); + + + // Declare run-time constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + IATEsource, + dictionary, + ( + const IATE& iate, + const dictionary& dict + ), + (iate, dict) + ); + + + //- Class used for the read-construction of + // PtrLists of IATE sources + class iNew + { + const IATE& iate_; + + public: + + iNew(const IATE& iate) + : + iate_(iate) + {} + + autoPtr<IATEsource> operator()(Istream& is) const + { + word type(is); + dictionary dict(is); + return IATEsource::New(type, iate_, dict); + } + }; + + + // Constructors + + IATEsource(const IATE& iate) + : + iate_(iate) + {} + + autoPtr<IATEsource> clone() const + { + notImplemented("autoPtr<IATEsource> clone() const"); + return autoPtr<IATEsource>(NULL); + } + + + // Selectors + + static autoPtr<IATEsource> New + ( + const word& type, + const IATE& iate, + const dictionary& dict + ); + + + //- Destructor + virtual ~IATEsource() + {} + + + // Member Functions + + const phaseModel& phase() const + { + return iate_.phase(); + } + + const twoPhaseSystem& fluid() const + { + return refCast<const twoPhaseSystem>(iate_.phase().fluid()); + } + + const phaseModel& otherPhase() const + { + return fluid().otherPhase(phase()); + } + + scalar phi() const + { + return 1.0/(36*constant::mathematical::pi); + } + + //- Return the bubble relative velocity + tmp<volScalarField> Ur() const; + + //- Return the bubble turbulent velocity + tmp<volScalarField> Ut() const; + + //- Return the bubble Reynolds number + tmp<volScalarField> Re() const; + + //- Return the bubble drag coefficient + tmp<volScalarField> CD() const; + + //- Return the bubble Morton number + tmp<volScalarField> Mo() const; + + //- Return the bubble Eotvos number + tmp<volScalarField> Eo() const; + + //- Return the bubble Webber number + tmp<volScalarField> We() const; + + virtual tmp<volScalarField> R() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C new file mode 100644 index 00000000000..d7244b14d4d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C @@ -0,0 +1,66 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "dummy.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + defineTypeNameAndDebug(dummy, 0); + addToRunTimeSelectionTable(IATEsource, dummy, word); +} +} +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::diameterModels::IATEsources::dummy::R() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "R", + iate_.phase().U().time().timeName(), + iate_.phase().mesh() + ), + iate_.phase().U().mesh(), + dimensionedScalar("R", dimless/dimTime, 0) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H new file mode 100644 index 00000000000..e9c6529a97d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsources::dummy + +Description + +SourceFiles + dummy.C + +\*---------------------------------------------------------------------------*/ + +#ifndef dummy_H +#define dummy_H + +#include "IATEsource.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + +/*---------------------------------------------------------------------------*\ + Class dummy Declaration +\*---------------------------------------------------------------------------*/ + +class dummy +: + public IATEsource +{ + +public: + + //- Runtime type information + TypeName("dummy"); + + // Constructors + + dummy + ( + const word& name, + const IATE& iate, + const dictionary& dict + ) + : + IATEsource(iate) + {} + + + //- Destructor + virtual ~dummy() + {} + + + // Member Functions + + virtual tmp<volScalarField> R() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace IATEsources +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C new file mode 100644 index 00000000000..8fde0b70202 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "randomCoalescence.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + defineTypeNameAndDebug(randomCoalescence, 0); + addToRunTimeSelectionTable(IATEsource, randomCoalescence, dictionary); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::IATEsources::randomCoalescence:: +randomCoalescence +( + const IATE& iate, + const dictionary& dict +) +: + IATEsource(iate), + Crc_("Crc", dimless, dict.lookup("Crc")), + C_("C", dimless, dict.lookup("C")), + alphaMax_("alphaMax", dimless, dict.lookup("alphaMax")) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::diameterModels::IATEsources::randomCoalescence::R() const +{ + tmp<volScalarField> tR + ( + new volScalarField + ( + IOobject + ( + "R", + iate_.phase().time().timeName(), + iate_.phase().mesh() + ), + iate_.phase().mesh(), + dimensionedScalar("R", dimless/dimTime, 0) + ) + ); + + volScalarField R = tR(); + + scalar Crc = Crc_.value(); + scalar C = C_.value(); + scalar alphaMax = alphaMax_.value(); + volScalarField Ut(this->Ut()); + const volScalarField& alpha = phase(); + const volScalarField& kappai = iate_.kappai(); + scalar cbrtAlphaMax = cbrt(alphaMax); + + forAll(R, celli) + { + if (alpha[celli] < alphaMax - SMALL) + { + scalar cbrtAlphaMaxMAlpha = cbrtAlphaMax - cbrt(alpha[celli]); + + R[celli] = + (-12)*phi()*kappai[celli]*alpha[celli] + *Crc + *Ut[celli] + *(1 - exp(-C*cbrt(alpha[celli]*alphaMax)/cbrtAlphaMaxMAlpha)) + /(cbrtAlphaMax*cbrtAlphaMaxMAlpha); + } + } + + return tR; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H new file mode 100644 index 00000000000..42dad812501 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsources::randomCoalescence + +Description + Random coalescence IATE source as defined in paper: + + \verbatim + "Development of Interfacial Area Transport Equation" + Ishii, M., Kim, S. and Kelly, J., + Nuclear Engineering and Technology, Vol.37 No.6 December 2005 + \endverbatim + + +SourceFiles + randomCoalescence.C + +\*---------------------------------------------------------------------------*/ + +#ifndef randomCoalescence_H +#define randomCoalescence_H + +#include "IATEsource.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + +/*---------------------------------------------------------------------------*\ + Class randomCoalescence Declaration +\*---------------------------------------------------------------------------*/ + +class randomCoalescence +: + public IATEsource +{ + // Private data + + dimensionedScalar Crc_; + dimensionedScalar C_; + dimensionedScalar alphaMax_; + + +public: + + //- Runtime type information + TypeName("randomCoalescence"); + + // Constructors + + randomCoalescence + ( + const IATE& iate, + const dictionary& dict + ); + + + //- Destructor + virtual ~randomCoalescence() + {} + + + // Member Functions + + virtual tmp<volScalarField> R() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace IATEsources +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C new file mode 100644 index 00000000000..334369f40f1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "turbulentBreakUp.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + defineTypeNameAndDebug(turbulentBreakUp, 0); + addToRunTimeSelectionTable(IATEsource, turbulentBreakUp, dictionary); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::IATEsources::turbulentBreakUp:: +turbulentBreakUp +( + const IATE& iate, + const dictionary& dict +) +: + IATEsource(iate), + Cti_("Cti", dimless, dict.lookup("Cti")), + WeCr_("WeCr", dimless, dict.lookup("WeCr")) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::diameterModels::IATEsources::turbulentBreakUp::R() const +{ + tmp<volScalarField> tR + ( + new volScalarField + ( + IOobject + ( + "R", + iate_.phase().time().timeName(), + iate_.phase().mesh() + ), + iate_.phase().mesh(), + dimensionedScalar("R", dimless/dimTime, 0) + ) + ); + + volScalarField R = tR(); + + scalar Cti = Cti_.value(); + scalar WeCr = WeCr_.value(); + volScalarField Ut(this->Ut()); + volScalarField We(this->We()); + const volScalarField& d(iate_.d()()); + + forAll(R, celli) + { + if (We[celli] > WeCr) + { + R[celli] = + (1.0/3.0) + *Cti/d[celli] + *Ut[celli] + *sqrt(1 - WeCr/We[celli]) + *exp(-WeCr/We[celli]); + } + } + + return tR; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H new file mode 100644 index 00000000000..d2040379c3b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsources::turbulentBreakUp + +Description + Turbulence-induced break-up IATE source as defined in paper: + + \verbatim + "Development of Interfacial Area Transport Equation" + Ishii, M., Kim, S. and Kelly, J., + Nuclear Engineering and Technology, Vol.37 No.6 December 2005 + \endverbatim + +SourceFiles + turbulentBreakUp.C + +\*---------------------------------------------------------------------------*/ + +#ifndef turbulentBreakUp_H +#define turbulentBreakUp_H + +#include "IATEsource.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + +/*---------------------------------------------------------------------------*\ + Class turbulentBreakUp Declaration +\*---------------------------------------------------------------------------*/ + +class turbulentBreakUp +: + public IATEsource +{ + // Private data + + dimensionedScalar Cti_; + dimensionedScalar WeCr_; + + +public: + + //- Runtime type information + TypeName("turbulentBreakUp"); + + // Constructors + + turbulentBreakUp + ( + const IATE& iate, + const dictionary& dict + ); + + + //- Destructor + virtual ~turbulentBreakUp() + {} + + + // Member Functions + + virtual tmp<volScalarField> R() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace IATEsources +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C new file mode 100644 index 00000000000..a015be5f76a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C @@ -0,0 +1,72 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "wakeEntrainmentCoalescence.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + defineTypeNameAndDebug(wakeEntrainmentCoalescence, 0); + addToRunTimeSelectionTable + ( + IATEsource, + wakeEntrainmentCoalescence, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence:: +wakeEntrainmentCoalescence +( + const IATE& iate, + const dictionary& dict +) +: + IATEsource(iate), + Cwe_("Cwe", dimless, dict.lookup("Cwe")) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence::R() const +{ + return (-12)*phi()*Cwe_*cbrt(CD())*iate_.a()*Ur(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H new file mode 100644 index 00000000000..ed18bbc9b3c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence + +Description + Bubble coalescence due to wake entrainment IATE source as defined in paper: + + \verbatim + "Development of Interfacial Area Transport Equation" + Ishii, M., Kim, S. and Kelly, J., + Nuclear Engineering and Technology, Vol.37 No.6 December 2005 + \endverbatim + +SourceFiles + wakeEntrainmentCoalescence.C + +\*---------------------------------------------------------------------------*/ + +#ifndef wakeEntrainmentCoalescence_H +#define wakeEntrainmentCoalescence_H + +#include "IATEsource.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + +/*---------------------------------------------------------------------------*\ + Class wakeEntrainmentCoalescence Declaration +\*---------------------------------------------------------------------------*/ + +class wakeEntrainmentCoalescence +: + public IATEsource +{ + // Private data + + dimensionedScalar Cwe_; + + +public: + + //- Runtime type information + TypeName("wakeEntrainmentCoalescence"); + + // Constructors + + wakeEntrainmentCoalescence + ( + const IATE& iate, + const dictionary& dict + ); + + + //- Destructor + virtual ~wakeEntrainmentCoalescence() + {} + + + // Member Functions + + virtual tmp<volScalarField> R() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace IATEsources +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C new file mode 100644 index 00000000000..4cd500fa36d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantDiameter.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + defineTypeNameAndDebug(constant, 0); + + addToRunTimeSelectionTable + ( + diameterModel, + constant, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::constant::constant +( + const dictionary& diameterProperties, + const phaseModel& phase +) +: + diameterModel(diameterProperties, phase), + d_("d", dimLength, diameterProperties_.lookup("d")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::diameterModels::constant::~constant() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::constant::d() const +{ + return tmp<Foam::volScalarField> + ( + new volScalarField + ( + IOobject + ( + "d", + phase_.time().timeName(), + phase_.mesh() + ), + phase_.mesh(), + d_ + ) + ); +} + + +bool Foam::diameterModels::constant::read(const dictionary& phaseProperties) +{ + diameterModel::read(phaseProperties); + + diameterProperties_.lookup("d") >> d_; + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H new file mode 100644 index 00000000000..239c8c1fee8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::constant + +Description + Constant dispersed-phase particle diameter model. + +SourceFiles + constant.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constant_H +#define constant_H + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + +/*---------------------------------------------------------------------------*\ + Class constant Declaration +\*---------------------------------------------------------------------------*/ + +class constant +: + public diameterModel +{ + // Private data + + //- The constant diameter of the phase + dimensionedScalar d_; + + +public: + + //- Runtime type information + TypeName("constant"); + + + // Constructors + + //- Construct from components + constant + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + //- Destructor + virtual ~constant(); + + + // Member Functions + + //- Return the diameter as a field + virtual tmp<volScalarField> d() const; + + //- Read diameterProperties dictionary + virtual bool read(const dictionary& diameterProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C new file mode 100644 index 00000000000..a956565b471 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(diameterModel, 0); + defineRunTimeSelectionTable(diameterModel, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModel::diameterModel +( + const dictionary& diameterProperties, + const phaseModel& phase +) +: + diameterProperties_(diameterProperties), + phase_(phase) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::diameterModel::~diameterModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::diameterModel::correct() +{} + + +bool Foam::diameterModel::read(const dictionary& phaseProperties) +{ + diameterProperties_ = phaseProperties.subDict(type() + "Coeffs"); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H new file mode 100644 index 00000000000..19551f2d3c3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H @@ -0,0 +1,139 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModel + +Description + A2stract base-class for dispersed-phase particle diameter models. + +SourceFiles + diameterModel.C + newDiameterModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef diameterModel_H +#define diameterModel_H + +#include "dictionary.H" +#include "phaseModel.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class diameterModel Declaration +\*---------------------------------------------------------------------------*/ + +class diameterModel +{ + +protected: + + // Protected data + + dictionary diameterProperties_; + const phaseModel& phase_; + + +public: + + //- Runtime type information + TypeName("diameterModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + diameterModel, + dictionary, + ( + const dictionary& diameterProperties, + const phaseModel& phase + ), + (diameterProperties, phase) + ); + + + // Constructors + + diameterModel + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + //- Destructor + virtual ~diameterModel(); + + + // Selectors + + static autoPtr<diameterModel> New + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + // Member Functions + + //- Return the phase diameter properties dictionary + const dictionary& diameterProperties() const + { + return diameterProperties_; + } + + //- Return the phase + const phaseModel& phase() const + { + return phase_; + } + + //- Return the phase mean diameter field + virtual tmp<volScalarField> d() const = 0; + + //- Correct the diameter field + virtual void correct(); + + //- Read phaseProperties dictionary + virtual bool read(const dictionary& phaseProperties) = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C new file mode 100644 index 00000000000..8db37d2bf02 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C @@ -0,0 +1,63 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::diameterModel> Foam::diameterModel::New +( + const dictionary& dict, + const phaseModel& phase +) +{ + word diameterModelType + ( + dict.lookup("diameterModel") + ); + + Info << "Selecting diameterModel for phase " + << phase.name() + << ": " + << diameterModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(diameterModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("diameterModel::New") + << "Unknown diameterModelType type " + << diameterModelType << endl << endl + << "Valid diameterModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict.subDict(diameterModelType + "Coeffs"), phase); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C new file mode 100644 index 00000000000..9fc5a48874f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C @@ -0,0 +1,91 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "isothermalDiameter.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + defineTypeNameAndDebug(isothermal, 0); + + addToRunTimeSelectionTable + ( + diameterModel, + isothermal, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::isothermal::isothermal +( + const dictionary& diameterProperties, + const phaseModel& phase +) +: + diameterModel(diameterProperties, phase), + d0_("d0", dimLength, diameterProperties_.lookup("d0")), + p0_("p0", dimPressure, diameterProperties_.lookup("p0")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::diameterModels::isothermal::~isothermal() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::isothermal::d() const +{ + const volScalarField& p = phase_.db().lookupObject<volScalarField> + ( + "p" + ); + + return d0_*pow(p0_/p, 1.0/3.0); +} + + +bool Foam::diameterModels::isothermal::read(const dictionary& phaseProperties) +{ + diameterModel::read(phaseProperties); + + diameterProperties_.lookup("d0") >> d0_; + diameterProperties_.lookup("p0") >> p0_; + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H new file mode 100644 index 00000000000..96e718e827c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::isothermal + +Description + Isothermal dispersed-phase particle diameter model. + +SourceFiles + isothermal.C + +\*---------------------------------------------------------------------------*/ + +#ifndef isothermal_H +#define isothermal_H + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + +/*---------------------------------------------------------------------------*\ + Class isothermal Declaration +\*---------------------------------------------------------------------------*/ + +class isothermal +: + public diameterModel +{ + // Private data + + //- Reference diameter for the isothermal expansion + dimensionedScalar d0_; + + //- Reference pressure for the isothermal expansion + dimensionedScalar p0_; + + +public: + + //- Runtime type information + TypeName("isothermal"); + + + // Constructors + + //- Construct from components + isothermal + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + //- Destructor + virtual ~isothermal(); + + + // Member Functions + + //- Return the diameter field + virtual tmp<volScalarField> d() const; + + //- Read phaseProperties dictionary + virtual bool read(const dictionary& phaseProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C new file mode 100644 index 00000000000..d62af01b539 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C @@ -0,0 +1,123 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "AnisothermalPhaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::AnisothermalPhaseModel<BasePhaseModel>::AnisothermalPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName), + K_ + ( + IOobject + ( + IOobject::groupName("K", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedScalar("K", sqr(dimVelocity), scalar(0)) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::AnisothermalPhaseModel<BasePhaseModel>::~AnisothermalPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +void Foam::AnisothermalPhaseModel<BasePhaseModel>::correctKinematics() +{ + BasePhaseModel::correctKinematics(); + K_ = 0.5*magSqr(this->U()); +} + + +template<class BasePhaseModel> +void Foam::AnisothermalPhaseModel<BasePhaseModel>::correctThermo() +{ + BasePhaseModel::correctThermo(); + + this->thermo_->correct(); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::AnisothermalPhaseModel<BasePhaseModel>::heEqn() +{ + const volScalarField& alpha = *this; + const surfaceScalarField& alphaPhi = this->alphaPhi(); + const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi(); + + const volScalarField& contErr(this->continuityError()); + + const volScalarField alphaEff + ( + this->thermo_->alphaEff(this->turbulence().mut()) + ); + + volScalarField& he = this->thermo_->he(); + + return + ( + fvm::ddt(alpha, this->rho(), he) + fvm::div(alphaRhoPhi, he) + - fvm::Sp(contErr, he) + + + fvc::ddt(alpha, this->rho(), K_) + fvc::div(alphaRhoPhi, K_) + - contErr*K_ + + - fvm::laplacian + ( + fvc::interpolate(alpha) + *fvc::interpolate(alphaEff), + he + ) + + + ( + he.name() == this->thermo_->phasePropertyName("e") + ? fvc::ddt(alpha)*this->thermo().p() + + fvc::div(alphaPhi, this->thermo().p()) + : -alpha*this->fluid().dpdt() + ) + == + this->Sh() + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H new file mode 100644 index 00000000000..a9c39535437 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H @@ -0,0 +1,99 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::AnisothermalPhaseModel + +Description + Class which represents a phase for which the temperature (strictly energy) + varies. Returns the energy equation and corrects the thermodynamic model. + +SourceFiles + AnisothermalPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef AnisothermalPhaseModel_H +#define AnisothermalPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class AnisothermalPhaseModel +: + public BasePhaseModel +{ + // Private data + + //- Kinetic energy + volScalarField K_; + + +public: + + // Constructors + + AnisothermalPhaseModel(const phaseSystem& fluid, const word& phaseName); + + + //- Destructor + virtual ~AnisothermalPhaseModel(); + + + // Member Functions + + //- Correct the kinematics + virtual void correctKinematics(); + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Return the enthalpy equation + virtual tmp<fvScalarMatrix> heEqn(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "AnisothermalPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C new file mode 100644 index 00000000000..909a5418b92 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "InertPhaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::InertPhaseModel<BasePhaseModel>::InertPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::InertPhaseModel<BasePhaseModel>::~InertPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::InertPhaseModel<BasePhaseModel>::R +( + volScalarField& Yi +) const +{ + return tmp<fvScalarMatrix> + ( + new fvScalarMatrix(Yi, dimMass/dimTime) + ); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::volScalarField> +Foam::InertPhaseModel<BasePhaseModel>::Sh() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName("Sh", this->name()), + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0), + zeroGradientFvPatchScalarField::typeName + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H new file mode 100644 index 00000000000..c74088eaa50 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::InertPhaseModel + +Description + Class which represents an inert phase, with no reactions. Returns zero + reaction rate and heat. + +SourceFiles + InertPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef InertPhaseModel_H +#define InertPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class InertPhaseModel +: + public BasePhaseModel +{ +public: + + // Constructors + + InertPhaseModel(const phaseSystem& fluid, const word& phaseName); + + + //- Destructor + virtual ~InertPhaseModel(); + + + // Member Functions + + // Thermo + + //- Return the fuel consumption rate matrix + virtual tmp<fvScalarMatrix> R + ( + volScalarField& Yi + ) const; + + //- Return the reaction heat source + virtual tmp<volScalarField> Sh() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "InertPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C new file mode 100644 index 00000000000..07f99c5a5d2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C @@ -0,0 +1,64 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "IsothermalPhaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::IsothermalPhaseModel<BasePhaseModel>::IsothermalPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::IsothermalPhaseModel<BasePhaseModel>::~IsothermalPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +void Foam::IsothermalPhaseModel<BasePhaseModel>::correctThermo() +{} + + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::IsothermalPhaseModel<BasePhaseModel>::heEqn() +{ + return tmp<fvScalarMatrix>(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H new file mode 100644 index 00000000000..d43a1a6119b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H @@ -0,0 +1,91 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::IsothermalPhaseModel + +Description + Class which represents a phase for which the temperature (strictly energy) + remains constant. Returns an empty energy equation and does nothing when + correctThermo is called. + +SourceFiles + IsothermalPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IsothermalPhaseModel_H +#define IsothermalPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class IsothermalPhaseModel +: + public BasePhaseModel +{ +public: + + // Constructors + + IsothermalPhaseModel(const phaseSystem& fluid, const word& phaseName); + + + //- Destructor + virtual ~IsothermalPhaseModel(); + + + // Member Functions + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Return the enthalpy equation + virtual tmp<fvScalarMatrix> heEqn(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "IsothermalPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C new file mode 100644 index 00000000000..61658e249ca --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C @@ -0,0 +1,361 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "MovingPhaseModel.H" +#include "phaseSystem.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "fixedValueFvPatchFields.H" +#include "slipFvPatchFields.H" +#include "partialSlipFvPatchFields.H" + +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvcDdt.H" +#include "fvcDiv.H" +#include "surfaceInterpolate.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::tmp<Foam::surfaceScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::generatePhi +( + const word& phiName, + const volVectorField& U +) const +{ + IOobject phiHeader + ( + phiName, + U.mesh().time().timeName(), + U.mesh(), + IOobject::NO_READ + ); + + if (phiHeader.headerOk()) + { + Info<< "Reading face flux field " << phiName << endl; + + return + tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + phiName, + U.mesh().time().timeName(), + U.mesh(), + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + U.mesh() + ) + ); + } + else + { + Info<< "Calculating face flux field " << phiName << endl; + + wordList phiTypes + ( + U.boundaryField().size(), + calculatedFvPatchScalarField::typeName + ); + + forAll(U.boundaryField(), i) + { + if + ( + isA<fixedValueFvPatchVectorField>(U.boundaryField()[i]) + || isA<slipFvPatchVectorField>(U.boundaryField()[i]) + || isA<partialSlipFvPatchVectorField>(U.boundaryField()[i]) + ) + { + phiTypes[i] = fixedValueFvPatchScalarField::typeName; + } + } + + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + phiName, + U.mesh().time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + fvc::interpolate(U) & U.mesh().Sf(), + phiTypes + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::MovingPhaseModel<BasePhaseModel>::MovingPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName), + U_ + ( + IOobject + ( + IOobject::groupName("U", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh(), + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + fluid.mesh() + ), + phi_ + ( + generatePhi + ( + IOobject::groupName("phi", this->name()), + U_ + ) + ), + alphaPhi_ + ( + IOobject + ( + IOobject::groupName("alphaPhi", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0) + ), + alphaRhoPhi_ + ( + IOobject + ( + IOobject::groupName("alphaRhoPhi", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedScalar("0", dimensionSet(1, 0, -1, 0, 0), 0) + ), + DUDt_ + ( + IOobject + ( + IOobject::groupName("DUDt", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedVector("0", dimAcceleration, vector::zero) + ), + turbulence_ + ( + PhaseCompressibleTurbulenceModel<phaseModel>::New + ( + *this, + this->thermo().rho(), + U_, + alphaRhoPhi_, + phi_, + *this + ) + ), + continuityError_ + ( + IOobject + ( + IOobject::groupName("continuityError", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedScalar("0", dimDensity/dimTime, 0) + ) +{ + correctKinematics(); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::MovingPhaseModel<BasePhaseModel>::~MovingPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +void Foam::MovingPhaseModel<BasePhaseModel>::correct() +{ + BasePhaseModel::correct(); + + continuityError_ = + fvc::ddt(*this, this->thermo().rho()) + fvc::div(alphaRhoPhi_); +} + + +template<class BasePhaseModel> +void Foam::MovingPhaseModel<BasePhaseModel>::correctKinematics() +{ + BasePhaseModel::correctKinematics(); + + DUDt_ = fvc::ddt(U_) + fvc::div(phi_, U_) - fvc::div(phi_)*U_; +} + + +template<class BasePhaseModel> +void Foam::MovingPhaseModel<BasePhaseModel>::correctTurbulence() +{ + BasePhaseModel::correctTurbulence(); + + turbulence_->correct(); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::fvVectorMatrix> +Foam::MovingPhaseModel<BasePhaseModel>::UEqn() +{ + return + ( + fvm::ddt(*this, this->thermo().rho(), U_) + + fvm::div(alphaRhoPhi_, U_) + - fvm::Sp(continuityError_, U_) + + turbulence_->divDevRhoReff(U_) + ); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::volVectorField> +Foam::MovingPhaseModel<BasePhaseModel>::U() const +{ + return U_; +} + + +template<class BasePhaseModel> +Foam::volVectorField& +Foam::MovingPhaseModel<BasePhaseModel>::U() +{ + return U_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::volVectorField> +Foam::MovingPhaseModel<BasePhaseModel>::DUDt() const +{ + return DUDt_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::volScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::continuityError() const +{ + return continuityError_; +} + + +template<class BasePhaseModel> +Foam::volScalarField& +Foam::MovingPhaseModel<BasePhaseModel>::continuityError() +{ + return continuityError_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::surfaceScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::phi() const +{ + return phi_; +} + + +template<class BasePhaseModel> +Foam::surfaceScalarField& +Foam::MovingPhaseModel<BasePhaseModel>::phi() +{ + return phi_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::surfaceScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::alphaPhi() const +{ + return alphaPhi_; +} + + +template<class BasePhaseModel> +Foam::surfaceScalarField& +Foam::MovingPhaseModel<BasePhaseModel>::alphaPhi() +{ + return alphaPhi_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::surfaceScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::alphaRhoPhi() const +{ + return alphaRhoPhi_; +} + + +template<class BasePhaseModel> +Foam::surfaceScalarField& +Foam::MovingPhaseModel<BasePhaseModel>::alphaRhoPhi() +{ + return alphaRhoPhi_; +} + + +template<class BasePhaseModel> +const Foam::PhaseCompressibleTurbulenceModel<Foam::phaseModel>& +Foam::MovingPhaseModel<BasePhaseModel>::turbulence() const +{ + return turbulence_; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H new file mode 100644 index 00000000000..b92f2599356 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H @@ -0,0 +1,189 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::MovingPhaseModel + +Description + Class which represents a moving fluid phase. Holds the velocity, fluxes and + turbulence model. Provides access to the turbulent quantities. + + Possible future extensions include separating the turbulent fuctionality + into another layer. It should also be possible to replace this layer with a + stationary phase model, in order to model packed beds or simple porous + media. This would probably require extra functionality, such as returning + the inputs into the general pressure equation (A, HbyA, etc ...). + + Note that this class does not return the turbulence model, it just provides + indirect access to the turbulent data. This is so a layer without + turbulence modelling (such as a stationary model) could be substituted. + +SourceFiles + MovingPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef MovingPhaseModel_H +#define MovingPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +template<class TransportModel> +class PhaseCompressibleTurbulenceModel; + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class MovingPhaseModel +: + public BasePhaseModel +{ + // Private data + + //- Velocity field + volVectorField U_; + + //- Flux + surfaceScalarField phi_; + + //- Volumetric flux + surfaceScalarField alphaPhi_; + + //- Mass flux + surfaceScalarField alphaRhoPhi_; + + //- Lagrangian acceleration field (needed for virtual-mass) + volVectorField DUDt_; + + //- Turbulence model + autoPtr<PhaseCompressibleTurbulenceModel<phaseModel> > turbulence_; + + //- Continuity error + volScalarField continuityError_; + + + // Private static member functions + + //- Generate the flux field + tmp<surfaceScalarField> generatePhi + ( + const word& phiName, + const volVectorField& U + ) const; + + +public: + + // Constructors + + MovingPhaseModel + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + //- Destructor + virtual ~MovingPhaseModel(); + + + // Member Functions + + //- Correct the phase properties other than the thermo and turbulence + virtual void correct(); + + //- Correct the kinematics + virtual void correctKinematics(); + + //- Correct the turbulence + virtual void correctTurbulence(); + + //- Return the momentum equation + virtual tmp<fvVectorMatrix> UEqn(); + + // Momentum + + //- Constant access the velocity + virtual tmp<volVectorField> U() const; + + //- Access the velocity + virtual volVectorField& U(); + + //- Return the substantive acceleration + virtual tmp<volVectorField> DUDt() const; + + //- Constant access the continuity error + virtual tmp<volScalarField> continuityError() const; + + //- Access the continuity error + virtual volScalarField& continuityError(); + + //- Constant access the volumetric flux + virtual tmp<surfaceScalarField> phi() const; + + //- Access the volumetric flux + virtual surfaceScalarField& phi(); + + //- Constant access the volumetric flux of the phase + virtual tmp<surfaceScalarField> alphaPhi() const; + + //- Access the volumetric flux of the phase + virtual surfaceScalarField& alphaPhi(); + + //- Constant access the mass flux of the phase + virtual tmp<surfaceScalarField> alphaRhoPhi() const; + + //- Access the mass flux of the phase + virtual surfaceScalarField& alphaRhoPhi(); + + + // Turbulence + + //- Return the turbulence model + virtual const PhaseCompressibleTurbulenceModel<phaseModel>& + turbulence() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "MovingPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C new file mode 100644 index 00000000000..3d34d8cfe0f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C @@ -0,0 +1,190 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "MultiComponentPhaseModel.H" + +#include "phaseSystem.H" + +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvmLaplacian.H" +#include "fvcDdt.H" +#include "fvcDiv.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::MultiComponentPhaseModel<BasePhaseModel>::MultiComponentPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName), + Sc_ + ( + "Sc", + dimless, + fluid.subDict(phaseName).lookup("Sc") + ), + residualAlpha_ + ( + "residualAlpha", + dimless, + fluid.mesh().solverDict("Yi").lookup("residualAlpha") + ), + inertIndex_(-1) +{ + const word inertSpecie + ( + this->thermo_->lookupOrDefault("inertSpecie", word::null) + ); + + if (inertSpecie != word::null) + { + inertIndex_ = this->thermo_->composition().species()[inertSpecie]; + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::MultiComponentPhaseModel<BasePhaseModel>::~MultiComponentPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +void Foam::MultiComponentPhaseModel<BasePhaseModel>::correctThermo() +{ + volScalarField Yt + ( + IOobject + ( + IOobject::groupName("Yt", this->name()), + this->fluid().mesh().time().timeName(), + this->fluid().mesh() + ), + this->fluid().mesh(), + dimensionedScalar("zero", dimless, 0) + ); + + PtrList<volScalarField>& Yi = Y(); + + forAll(Yi, i) + { + if (i != inertIndex_) + { + Yt += Yi[i]; + } + } + + if (inertIndex_ != -1) + { + Yi[inertIndex_] = scalar(1) - Yt; + Yi[inertIndex_].max(0); + } + else + { + forAll(Yi, i) + { + Yi[i] /= Yt; + Yi[i].max(0); + } + } + + BasePhaseModel::correctThermo(); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::MultiComponentPhaseModel<BasePhaseModel>::YiEqn +( + volScalarField& Yi +) +{ + if + ( + (inertIndex_ != -1) + && ( + Yi.name() + == IOobject::groupName + ( + this->thermo_->composition().species()[inertIndex_], + this->name() + ) + ) + ) + { + return tmp<fvScalarMatrix>(); + } + + const volScalarField& alpha = *this; + const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi(); + const volScalarField& rho = this->rho(); + + return + ( + fvm::ddt(alpha, rho, Yi) + + fvm::div(alphaRhoPhi, Yi, "div(" + alphaRhoPhi.name() + ",Yi)") + - fvm::Sp(this->continuityError(), Yi) + + - fvm::laplacian + ( + fvc::interpolate(alpha) + *fvc::interpolate(this->turbulence().nut()*rho/Sc_), + Yi + ) + == + this->R(Yi) + + + fvc::ddt(residualAlpha_*rho, Yi) + - fvm::ddt(residualAlpha_*rho, Yi) + ); +} + + +template<class BasePhaseModel> +const Foam::PtrList<Foam::volScalarField>& +Foam::MultiComponentPhaseModel<BasePhaseModel>::Y() const +{ + return this->thermo_->composition().Y(); +} + + +template<class BasePhaseModel> +Foam::PtrList<Foam::volScalarField>& +Foam::MultiComponentPhaseModel<BasePhaseModel>::Y() +{ + return this->thermo_->composition().Y(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H new file mode 100644 index 00000000000..272e520eeb3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::MultiComponentPhaseModel + +Description + Class which represents a phase with multiple species. Returns the species' + mass fractions, and their governing equations. + +SourceFiles + MultiComponentPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef MultiComponentPhaseModel_H +#define MultiComponentPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class MultiComponentPhaseModel +: + public BasePhaseModel +{ +protected: + + // Protected data + + //- Schmidt number + dimensionedScalar Sc_; + + //- Residual phase fraction + dimensionedScalar residualAlpha_; + + //- Inert species index + label inertIndex_; + + +public: + + // Constructors + + MultiComponentPhaseModel + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + //- Destructor + virtual ~MultiComponentPhaseModel(); + + + // Member Functions + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Return the species fraction equation + virtual tmp<fvScalarMatrix> YiEqn + ( + volScalarField& Yi + ); + + //- Constant access the species mass fractions + virtual const PtrList<volScalarField>& Y() const; + + //- Access the species mass fractions + virtual PtrList<volScalarField>& Y(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "MultiComponentPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C new file mode 100644 index 00000000000..c3e1831158a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "PurePhaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::PurePhaseModel<BasePhaseModel>::PurePhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::PurePhaseModel<BasePhaseModel>::~PurePhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::PurePhaseModel<BasePhaseModel>::YiEqn +( + volScalarField& Yi +) +{ + notImplemented + ( + "template<class BasePhaseModel> " + "Foam::tmp<Foam::fvScalarMatrix> " + "Foam::PurePhaseModel<BasePhaseModel>::YiEqn" + "(volScalarField& Yi) const" + ); + + return tmp<fvScalarMatrix>(); +} + + +template<class BasePhaseModel> +const Foam::PtrList<Foam::volScalarField>& +Foam::PurePhaseModel<BasePhaseModel>::Y() const +{ + return Y_; +} + + +template<class BasePhaseModel> +Foam::PtrList<Foam::volScalarField>& +Foam::PurePhaseModel<BasePhaseModel>::Y() +{ + return Y_; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H new file mode 100644 index 00000000000..f17c60cb6f8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::PurePhaseModel + +Description + Class which represents pure phases, i.e. without any species. Returns an + empty list of mass fractions. + +SourceFiles + PurePhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef PurePhaseModel_H +#define PurePhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class PurePhaseModel +: + public BasePhaseModel +{ +protected: + + // Protected data + + //- Empty mass fraction field list + PtrList<volScalarField> Y_; + + +public: + + // Constructors + + PurePhaseModel(const phaseSystem& fluid, const word& phaseName); + + + //- Destructor + virtual ~PurePhaseModel(); + + + // Member Functions + + //- Return the species fraction equation + virtual tmp<fvScalarMatrix> YiEqn(volScalarField& Yi); + + + // Thermo + + //- Return the species mass fractions + virtual const PtrList<volScalarField>& Y() const; + + //- Access the species mass fractions + virtual PtrList<volScalarField>& Y(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "PurePhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C new file mode 100644 index 00000000000..a6ab32d2fcb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C @@ -0,0 +1,108 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "ReactingPhaseModel.H" +#include "phaseSystem.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ReactionType> +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::ReactingPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName, false), + reaction_ + ( + ReactionType::New(fluid.mesh(), phaseName) + ) +{ + this->thermo_ = &reaction_->thermo(); + + this->thermo_->validate + ( + IOobject::groupName(phaseModel::typeName, this->name()), + "h", + "e" + ); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ReactionType> +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::~ReactingPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ReactionType> +void Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::correctThermo() +{ + reaction_->setTurbulence + ( + const_cast<compressibleTurbulenceModel&> + ( + this->mesh().template lookupObject<compressibleTurbulenceModel> + ( + IOobject::groupName + ( + turbulenceModel::propertiesName, + this->name() + ) + ) + ) + ); + + BasePhaseModel::correctThermo(); + + reaction_->correct(); +} + + +template<class BasePhaseModel, class ReactionType> +Foam::tmp<Foam::fvScalarMatrix> +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::R +( + volScalarField& Yi +) const +{ + return reaction_->R(Yi); +} + + +template<class BasePhaseModel, class ReactionType> +Foam::tmp<Foam::volScalarField> +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::Sh() const +{ + return reaction_->Sh(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H new file mode 100644 index 00000000000..988674d55c8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H @@ -0,0 +1,108 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::ReactingPhaseModel + +Description + Class which represents phases with volumetric reactions. Returns the + reaction rate and heat. + +SourceFiles + ReactingPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef ReactingPhaseModel_H +#define ReactingPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel, class ReactionType> +class ReactingPhaseModel +: + public BasePhaseModel +{ +protected: + + // Protected data + + //- Reaction model + autoPtr<ReactionType> reaction_; + + +public: + + // Constructors + + ReactingPhaseModel + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + //- Destructor + virtual ~ReactingPhaseModel(); + + + // Member Functions + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Return the species fraction equation + virtual tmp<fvScalarMatrix> R + ( + volScalarField& Yi + ) const; + + //- Return the reacton heat source + virtual tmp<volScalarField> Sh() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "ReactingPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C new file mode 100644 index 00000000000..2befe1585af --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C @@ -0,0 +1,158 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "ThermoPhaseModel.H" + +#include "phaseSystem.H" + +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvmLaplacian.H" +#include "fvcDdt.H" +#include "fvcDiv.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ThermoType> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::ThermoPhaseModel +( + const phaseSystem& fluid, + const word& phaseName, + const bool createThermo +) +: + BasePhaseModel(fluid, phaseName) +{ + if (createThermo) + { + thermoPtr_.set + ( + ThermoType::New(fluid.mesh(), phaseName).ptr() + ); + + thermo_ = thermoPtr_.ptr(); + + thermo_->validate + ( + IOobject::groupName(phaseModel::typeName, this->name()), + "h", + "e" + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ThermoType> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::~ThermoPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ThermoType> +const Foam::rhoThermo& +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::thermo() const +{ + return *thermo_; +} + + +template<class BasePhaseModel, class ThermoType> +Foam::rhoThermo& +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::thermo() +{ + return *thermo_; +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::volScalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::rho() const +{ + return thermo_->rho(); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::volScalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::mu() const +{ + return thermo_->mu(); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::scalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::mu +( + const label patchI +) const +{ + return thermo_->mu(patchI); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::volScalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::nu() const +{ + return thermo_->nu(); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::scalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::nu +( + const label patchI +) const +{ + return thermo_->nu(patchI); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::volScalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappa() const +{ + return thermo_->kappa(); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::scalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappa +( + const label patchI +) const +{ + return thermo_->kappa(patchI); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H new file mode 100644 index 00000000000..0c2b243a83c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H @@ -0,0 +1,138 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::ThermoPhaseModel + +Description + Class which represents a phase with a thermodynamic model. Provides access + to the thermodynamic variables. Note that the thermo model itself is not + returned as this class could be substituted in the hierarcy for one which + mirrors the functionality, but does not include a thermo model; an + incompressible phase model, for example. + +SourceFiles + ThermoPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef ThermoPhaseModel_H +#define ThermoPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class rhoThermo; + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel, class ThermoType> +class ThermoPhaseModel +: + public BasePhaseModel +{ +protected: + + // Protected data + + //- Thermophysical model + autoPtr<ThermoType> thermoPtr_; + + //- Thermophysical model + ThermoType* thermo_; + + +public: + + // Constructors + + ThermoPhaseModel + ( + const phaseSystem& fluid, + const word& phaseName, + const bool createThermo = true + ); + + + //- Destructor + virtual ~ThermoPhaseModel(); + + + // Member Functions + + // Thermo + + //- Return const access to the thermophysical model + virtual const rhoThermo& thermo() const; + + //- Return non-const access to the thermophysical model + // for correction + virtual rhoThermo& thermo(); + + //- Return the density field + virtual tmp<volScalarField> rho() const; + + + // Transport + + //- Return the laminar dynamic viscosity + virtual tmp<volScalarField> mu() const; + + //- Access the laminar dynamic viscosity + virtual tmp<scalarField> mu(const label patchI) const; + + //- Return the laminar kinematic viscosity + virtual tmp<volScalarField> nu() const; + + //- Access the laminar kinematic viscosity + virtual tmp<scalarField> nu(const label patchI) const; + + //- Return the laminar thermal conductivity + virtual tmp<volScalarField> kappa() const; + + //- Access the laminar thermal conductivity + virtual tmp<scalarField> kappa(const label patchI) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "ThermoPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C new file mode 100644 index 00000000000..f2686cedb5c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::phaseModel> Foam::phaseModel::New +( + const phaseSystem& fluid, + const word& phaseName +) +{ + word phaseModelType(fluid.subDict(phaseName).lookup("type")); + + Info<< "Selecting phaseModel for " + << phaseName << ": " << phaseModelType << endl; + + phaseSystemConstructorTable::iterator cstrIter = + phaseSystemConstructorTablePtr_->find(phaseModelType); + + if (cstrIter == phaseSystemConstructorTablePtr_->end()) + { + FatalErrorIn("phaseModel::New") + << "Unknown phaseModelType type " + << phaseModelType << endl << endl + << "Valid phaseModel types are : " << endl + << phaseSystemConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(fluid, phaseName); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C new file mode 100644 index 00000000000..35186501904 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phaseModel.H" +#include "phaseSystem.H" +#include "diameterModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(phaseModel, 0); + defineRunTimeSelectionTable(phaseModel, phaseSystem); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phaseModel::phaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + volScalarField + ( + IOobject + ( + IOobject::groupName("alpha", phaseName), + fluid.mesh().time().timeName(), + fluid.mesh(), + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + fluid.mesh(), + dimensionedScalar("alpha", dimless, 0) + ), + + fluid_(fluid), + name_(phaseName), + residualAlpha_ + ( + "residualAlpha", + dimless, + fluid.subDict(phaseName).lookup("residualAlpha") + ), + alphaMax_(fluid.subDict(phaseName).lookupOrDefault("alphaMax", 1.0)) +{ + diameterModel_ = diameterModel::New(fluid.subDict(phaseName), *this); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phaseModel::~phaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +const Foam::word& Foam::phaseModel::name() const +{ + return name_; +} + + +const Foam::phaseSystem& Foam::phaseModel::fluid() const +{ + return fluid_; +} + + +const Foam::dimensionedScalar& Foam::phaseModel::residualAlpha() const +{ + return residualAlpha_; +} + + +Foam::scalar Foam::phaseModel::alphaMax() const +{ + return alphaMax_; +} + + +Foam::tmp<Foam::volScalarField> Foam::phaseModel::d() const +{ + return diameterModel_().d(); +} + + +void Foam::phaseModel::correct() +{ + diameterModel_->correct(); +} + + +void Foam::phaseModel::correctKinematics() +{} + + +void Foam::phaseModel::correctThermo() +{} + + +void Foam::phaseModel::correctTurbulence() +{} + + +bool Foam::phaseModel::read() +{ + return diameterModel_->read(fluid_.subDict(name_)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H new file mode 100644 index 00000000000..0afb9f78550 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H @@ -0,0 +1,258 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::phaseModel + +SourceFiles + phaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phaseModel_H +#define phaseModel_H + +#include "dictionary.H" +#include "dimensionedScalar.H" +#include "volFields.H" +#include "surfaceFields.H" +#include "fvMatricesFwd.H" +#include "rhoThermo.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phaseSystem; +class diameterModel; + +template<class TransportModel> +class PhaseCompressibleTurbulenceModel; + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +class phaseModel +: + public volScalarField +{ + // Private data + + //- Reference to the phaseSystem to which this phase belongs + const phaseSystem& fluid_; + + //- Name of phase + word name_; + + //- Return the residual phase-fraction for given phase + // Used to stabilize the phase momentum as the phase-fraction -> 0 + dimensionedScalar residualAlpha_; + + //- Optional maximum phase-fraction (e.g. packing limit) + scalar alphaMax_; + + //- Diameter model + autoPtr<diameterModel> diameterModel_; + + +public: + + //- Runtime type information + ClassName("phaseModel"); + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + phaseModel, + phaseSystem, + ( + const phaseSystem& fluid, + const word& phaseName + ), + (fluid, phaseName) + ); + + + // Constructors + + phaseModel + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + //- Destructor + virtual ~phaseModel(); + + + // Selectors + + static autoPtr<phaseModel> New + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + // Member Functions + + //- Return the name of this phase + const word& name() const; + + //- Return the system to which this phase belongs + const phaseSystem& fluid() const; + + //- Return the residual phase-fraction for given phase + // Used to stabilize the phase momentum as the phase-fraction -> 0 + const dimensionedScalar& residualAlpha() const; + + //- Return the maximum phase-fraction (e.g. packing limit) + scalar alphaMax() const; + + //- Return the Sauter-mean diameter + tmp<volScalarField> d() const; + + //- Correct the phase properties + virtual void correct(); + + //- Correct the kinematics + virtual void correctKinematics(); + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Correct the turbulence + virtual void correctTurbulence(); + + //- Return the momentum equation + virtual tmp<fvVectorMatrix> UEqn() = 0; + + //- Return the enthalpy equation + virtual tmp<fvScalarMatrix> heEqn() = 0; + + //- Return the species fraction equation + virtual tmp<fvScalarMatrix> YiEqn(volScalarField& Yi) = 0; + + //- Read phase properties dictionary + virtual bool read(); + + + // Thermo + + //- Return const access to the thermophysical model + virtual const rhoThermo& thermo() const = 0; + + //- Return non-const access to the thermophysical model + // for correction + virtual rhoThermo& thermo() = 0; + + //- Return the density field + virtual tmp<volScalarField> rho() const = 0; + + //- Constant access the species mass fractions + virtual const PtrList<volScalarField>& Y() const = 0; + + //- Access the species mass fractions + virtual PtrList<volScalarField>& Y() = 0; + + + // Momentum + + //- Constant access the velocity + virtual tmp<volVectorField> U() const = 0; + + //- Access the velocity + virtual volVectorField& U() = 0; + + //- Return the substantive acceleration + virtual tmp<volVectorField> DUDt() const = 0; + + //- Constant access the continuity error + virtual tmp<volScalarField> continuityError() const = 0; + + //- Access the continuity error + virtual volScalarField& continuityError() = 0; + + //- Constant access the volumetric flux + virtual tmp<surfaceScalarField> phi() const = 0; + + //- Access the volumetric flux + virtual surfaceScalarField& phi() = 0; + + //- Constant access the volumetric flux of the phase + virtual tmp<surfaceScalarField> alphaPhi() const = 0; + + //- Access the volumetric flux of the phase + virtual surfaceScalarField& alphaPhi() = 0; + + //- Constant access the mass flux of the phase + virtual tmp<surfaceScalarField> alphaRhoPhi() const = 0; + + //- Access the mass flux of the phase + virtual surfaceScalarField& alphaRhoPhi() = 0; + + + // Transport + + //- Return the laminar dynamic viscosity + virtual tmp<volScalarField> mu() const = 0; + + //- Return the laminar dynamic viscosity on a patch + virtual tmp<scalarField> mu(const label patchI) const = 0; + + //- Return the laminar kinematic viscosity + virtual tmp<volScalarField> nu() const = 0; + + //- Return the laminar kinematic viscosity on a patch + virtual tmp<scalarField> nu(const label patchI) const = 0; + + //- Return the laminar thermal conductivity + virtual tmp<volScalarField> kappa() const = 0; + + //- Return the laminar thermal conductivity on a patch + virtual tmp<scalarField> kappa(const label patchI) const = 0; + + + // Turbulence + + //- Return the turbulence model + virtual const PhaseCompressibleTurbulenceModel<phaseModel>& + turbulence() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C new file mode 100644 index 00000000000..45fe19295c0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C @@ -0,0 +1,145 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "addToRunTimeSelectionTable.H" + +#include "rhoThermo.H" +#include "rhoReactionThermo.H" + +#include "rhoCombustionModel.H" + +#include "phaseModel.H" +#include "ThermoPhaseModel.H" +#include "IsothermalPhaseModel.H" +#include "AnisothermalPhaseModel.H" +#include "PurePhaseModel.H" +#include "MultiComponentPhaseModel.H" +#include "InertPhaseModel.H" +#include "ReactingPhaseModel.H" +#include "MovingPhaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef + MovingPhaseModel + < + AnisothermalPhaseModel + < + PurePhaseModel + < + InertPhaseModel + < + ThermoPhaseModel<phaseModel, rhoThermo> + > + > + > + > + purePhaseModel; + + addNamedToRunTimeSelectionTable + ( + phaseModel, + purePhaseModel, + phaseSystem, + purePhaseModel + ); + + typedef + MovingPhaseModel + < + IsothermalPhaseModel + < + PurePhaseModel + < + InertPhaseModel + < + ThermoPhaseModel<phaseModel, rhoThermo> + > + > + > + > + pureIsothermalPhaseModel; + + addNamedToRunTimeSelectionTable + ( + phaseModel, + pureIsothermalPhaseModel, + phaseSystem, + pureIsothermalPhaseModel + ); + + typedef + MovingPhaseModel + < + AnisothermalPhaseModel + < + MultiComponentPhaseModel + < + InertPhaseModel + < + ThermoPhaseModel<phaseModel, rhoReactionThermo> + > + > + > + > + multiComponentPhaseModel; + + addNamedToRunTimeSelectionTable + ( + phaseModel, + multiComponentPhaseModel, + phaseSystem, + multiComponentPhaseModel + ); + + typedef + MovingPhaseModel + < + AnisothermalPhaseModel + < + MultiComponentPhaseModel + < + ReactingPhaseModel + < + ThermoPhaseModel<phaseModel, rhoReactionThermo>, + combustionModels::rhoCombustionModel + > + > + > + > + reactingPhaseModel; + + addNamedToRunTimeSelectionTable + ( + phaseModel, + reactingPhaseModel, + phaseSystem, + reactingPhaseModel + ); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C new file mode 100644 index 00000000000..8c2bb470add --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C @@ -0,0 +1,88 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "orderedPhasePair.H" +#include "aspectRatioModel.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::orderedPhasePair::orderedPhasePair +( + const phaseModel& dispersed, + const phaseModel& continuous +) +: + phasePair + ( + dispersed, + continuous, + true + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::orderedPhasePair::~orderedPhasePair() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +const Foam::phaseModel& Foam::orderedPhasePair::dispersed() const +{ + return phase1(); +} + + +const Foam::phaseModel& Foam::orderedPhasePair::continuous() const +{ + return phase2(); +} + + +Foam::word Foam::orderedPhasePair::name() const +{ + word namec(second()); + namec[0] = toupper(namec[0]); + return first() + "In" + namec; +} + + +Foam::tmp<Foam::volScalarField> Foam::orderedPhasePair::E() const +{ + return + phase1().mesh().lookupObject<aspectRatioModel> + ( + IOobject::groupName + ( + aspectRatioModel::typeName, + orderedPhasePair::name() + ) + ).E(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H new file mode 100644 index 00000000000..4779fd333d2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::orderedPhasePair + +Description + +SourceFiles + orderedPhasePair.C + +\*---------------------------------------------------------------------------*/ + +#ifndef orderedPhasePair_H +#define orderedPhasePair_H + +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class aspectRatioModel; + +/*---------------------------------------------------------------------------*\ + Class orderedPhasePair Declaration +\*---------------------------------------------------------------------------*/ + +class orderedPhasePair +: + public phasePair +{ + // Private data + + //- Aspect ratio model + autoPtr<aspectRatioModel> aspectRatio_; + + + // Private member functions + + //- Set the aspect ratio model, if there is one + void setAspectRatioModel(const dictTable aspectRatioTable); + + +public: + + // Constructors + + //- Construct from two phases and gravity + orderedPhasePair + ( + const phaseModel& dispersed, + const phaseModel& continuous + ); + + + //- Destructor + virtual ~orderedPhasePair(); + + + // Member Functions + + //- Dispersed phase + virtual const phaseModel& dispersed() const; + + //- Continuous phase + virtual const phaseModel& continuous() const; + + //- Pair name + virtual word name() const; + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C new file mode 100644 index 00000000000..16478646d7d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C @@ -0,0 +1,202 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phasePair.H" +#include "surfaceTensionModel.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH +( + const volScalarField& d +) const +{ + return + mag(dispersed().rho() - continuous().rho()) + *mag(g()) + *sqr(d) + /sigma(); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phasePair::phasePair +( + const phaseModel& phase1, + const phaseModel& phase2, + const bool ordered +) +: + phasePairKey(phase1.name(), phase2.name(), ordered), + phase1_(phase1), + phase2_(phase2), + g_(phase1.mesh().lookupObject<uniformDimensionedVectorField>("g")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phasePair::~phasePair() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +const Foam::phaseModel& Foam::phasePair::dispersed() const +{ + FatalErrorIn("Foam::phasePair::dispersed() const") + << "Requested dispersed phase from an unordered pair." + << exit(FatalError); + + return phase1_; +} + + +const Foam::phaseModel& Foam::phasePair::continuous() const +{ + FatalErrorIn("Foam::phasePair::dispersed() const") + << "Requested continuous phase from an unordered pair." + << exit(FatalError); + + return phase1_; +} + + +Foam::word Foam::phasePair::name() const +{ + word name2(second()); + name2[0] = toupper(name2[0]); + return first() + "And" + name2; +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::rho() const +{ + return phase1()*phase1().rho() + phase2()*phase2().rho(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::magUr() const +{ + return mag(phase1().U() - phase2().U()); +} + + +Foam::tmp<Foam::volVectorField> Foam::phasePair::Ur() const +{ + return dispersed().U() - continuous().U(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Re() const +{ + return magUr()*dispersed().d()/continuous().nu(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Pr() const +{ + return + continuous().nu() + *continuous().thermo().Cpv() + *continuous().rho() + /continuous().kappa(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Eo() const +{ + return EoH(dispersed().d()); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH1() const +{ + return + EoH + ( + dispersed().d() + *cbrt(1 + 0.163*pow(Eo(), 0.757)) + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH2() const +{ + return + EoH + ( + dispersed().d() + /cbrt(E()) + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::sigma() const +{ + return + phase1().mesh().lookupObject<surfaceTensionModel> + ( + IOobject::groupName + ( + surfaceTensionModel::typeName, + phasePair::name() + ) + ).sigma(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Mo() const +{ + return + mag(g()) + *continuous().nu() + *pow3 + ( + continuous().nu() + *continuous().rho() + /sigma() + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Ta() const +{ + return Re()*pow(Mo(), 0.23); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::E() const +{ + FatalErrorIn("Foam::phasePair::E() const") + << "Requested aspect ratio of the dispersed phase in an unordered pair" + << exit(FatalError); + + return phase1(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H new file mode 100644 index 00000000000..4ee9eefbc19 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H @@ -0,0 +1,176 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::phasePair + +Description + +SourceFiles + phasePair.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phasePair_H +#define phasePair_H + +#include "phaseModel.H" +#include "phasePairKey.H" +#include "uniformDimensionedFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phasePair Declaration +\*---------------------------------------------------------------------------*/ + +class phasePair +: + public phasePairKey +{ +public: + + // Hash table types + + //- Dictionary hash table + typedef HashTable<dictionary, phasePairKey, phasePairKey::hash> + dictTable; + + //- Scalar hash table + typedef HashTable<scalar, phasePairKey, phasePairKey::hash> + scalarTable; + + +private: + + // Private data + + //- Phase 1 + const phaseModel& phase1_; + + //- Phase 2 + const phaseModel& phase2_; + + //- Gravitational acceleration + const uniformDimensionedVectorField& g_; + + + // Private member functions + + // Etvos number for given diameter + tmp<volScalarField> EoH(const volScalarField& d) const; + + +public: + + // Constructors + + //- Construct from two phases and gravity + phasePair + ( + const phaseModel& phase1, + const phaseModel& phase2, + const bool ordered = false + ); + + + //- Destructor + virtual ~phasePair(); + + + // Member Functions + + //- Dispersed phase + virtual const phaseModel& dispersed() const; + + //- Continuous phase + virtual const phaseModel& continuous() const; + + //- Pair name + virtual word name() const; + + //- Average density + tmp<volScalarField> rho() const; + + //- Relative velocity magnitude + tmp<volScalarField> magUr() const; + + //- Relative velocity + tmp<volVectorField> Ur() const; + + //- Reynolds number + tmp<volScalarField> Re() const; + + //- Prandtl number + tmp<volScalarField> Pr() const; + + //- Eotvos number + tmp<volScalarField> Eo() const; + + //- Eotvos number based on hydraulic diameter type 1 + tmp<volScalarField> EoH1() const; + + //- Eotvos number based on hydraulic diameter type 2 + tmp<volScalarField> EoH2() const; + + //- Surface tension coefficient + tmp<volScalarField> sigma() const; + + //- Morton Number + tmp<volScalarField> Mo() const; + + //- Takahashi Number + tmp<volScalarField> Ta() const; + + //- Aspect ratio + virtual tmp<volScalarField> E() const; + + // Access + + // Phase 1 + inline const phaseModel& phase1() const; + + // Phase 2 + inline const phaseModel& phase2() const; + + // Gravitation acceleration + inline const uniformDimensionedVectorField& g() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "phasePairI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H new file mode 100644 index 00000000000..c461b7d9182 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H @@ -0,0 +1,46 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline const Foam::phaseModel& Foam::phasePair::phase1() const +{ + return phase1_; +} + + +inline const Foam::phaseModel& Foam::phasePair::phase2() const +{ + return phase2_; +} + + +inline const Foam::uniformDimensionedVectorField& Foam::phasePair::g() const +{ + return g_; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C new file mode 100644 index 00000000000..13ae288f089 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C @@ -0,0 +1,172 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phasePairKey.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phasePairKey::hash::hash() +{} + + +Foam::phasePairKey::phasePairKey() +{} + + +Foam::phasePairKey::phasePairKey +( + const word& name1, + const word& name2, + const bool ordered +) +: + Pair<word>(name1, name2), + ordered_(ordered) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phasePairKey::~phasePairKey() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +bool Foam::phasePairKey::ordered() const +{ + return ordered_; +} + + +// * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * // + +Foam::label Foam::phasePairKey::hash::operator() +( + const phasePairKey& key +) const +{ + if (key.ordered_) + { + return + word::hash() + ( + key.first(), + word::hash()(key.second()) + ); + } + else + { + return + word::hash()(key.first()) + + word::hash()(key.second()); + } +} + + +// * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * // + +bool Foam::operator== +( + const phasePairKey& a, + const phasePairKey& b +) +{ + const label c = Pair<word>::compare(a,b); + + return + (a.ordered_ == b.ordered_) + && ( + (a.ordered_ && (c == 1)) + || (!a.ordered_ && (c != 0)) + ); +} + + +bool Foam::operator!= +( + const phasePairKey& a, + const phasePairKey& b +) +{ + return !(a == b); +} + + +// * * * * * * * * * * * * * * Istream Operator * * * * * * * * * * * * * * // + +Foam::Istream& Foam::operator>>(Istream& is, phasePairKey& key) +{ + const FixedList<word, 3> temp(is); + + key.first() = temp[0]; + + if (temp[1] == "and") + { + key.ordered_ = false; + } + else if(temp[1] == "in") + { + key.ordered_ = true; + } + else + { + FatalErrorIn + ( + "friend Istream& operator>>" + "(" + "Istream& is, " + "phasePairKey& key" + ")" + ) << "Phase pair type is not recognised. " + << temp + << "Use (phaseDispersed in phaseContinuous) for an ordered" + << "pair, or (phase1 and pase2) for an unordered pair." + << exit(FatalError); + } + + key.second() = temp[2]; + + return is; +} + + +// * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const phasePairKey& key) +{ + os << token::BEGIN_LIST + << key.first() + << token::SPACE + << (key.ordered_ ? "in" : "and") + << token::SPACE + << key.second() + << token::END_LIST; + + return os; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H new file mode 100644 index 00000000000..b5d6acf07be --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::phasePairKey + +Description + +SourceFiles + +\*---------------------------------------------------------------------------*/ + +#ifndef phasePairKey_H +#define phasePairKey_H + +#include "Pair.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phasePairKey Declaration +\*---------------------------------------------------------------------------*/ + +class phasePairKey +: + public Pair<word> +{ +public: + + class hash + : + public Hash<phasePairKey> + { + public: + + // Constructors + + // Construct null + hash(); + + + // Member operators + + // Generate a hash from a phase pair key + label operator()(const phasePairKey& key) const; + }; + + +private: + + // Private data + + //- Flag to indicate whether ordering is important + bool ordered_; + + +public: + + // Constructors + + //- Construct null + phasePairKey(); + + //- Construct from names and the ordering flag + phasePairKey + ( + const word& name1, + const word& name2, + const bool ordered = false + ); + + + // Destructor + virtual ~phasePairKey(); + + + // Access + + //- Return the ordered flag + bool ordered() const; + + + // Friend Operators + + //- Test if keys are equal + friend bool operator==(const phasePairKey& a, const phasePairKey& b); + + //- Test if keys are unequal + friend bool operator!=(const phasePairKey& a, const phasePairKey& b); + + //- Read from stdin + friend Istream& operator>>(Istream& is, phasePairKey& key); + + //- Write to stdout + friend Ostream& operator<<(Ostream& os, const phasePairKey& key); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C new file mode 100644 index 00000000000..9144093db5a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C @@ -0,0 +1,370 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phaseSystem.H" +#include "surfaceTensionModel.H" +#include "aspectRatioModel.H" +#include "surfaceInterpolate.H" +#include "fvcDdt.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(phaseSystem, 0); +} + +const Foam::word Foam::phaseSystem::propertiesName("phaseProperties"); + + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +Foam::phaseSystem::phaseModelTable +Foam::phaseSystem::generatePhaseModels(const wordList& phaseNames) const +{ + phaseModelTable phaseModels; + + forAllConstIter(wordList, phaseNames, phaseNameIter) + { + phaseModels.insert + ( + *phaseNameIter, + phaseModel::New + ( + *this, + *phaseNameIter + ) + ); + } + + // normalise ? + + return phaseModels; +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::phaseSystem::generatePhi +( + const phaseModelTable& phaseModels +) const +{ + phaseModelTable::const_iterator phaseModelIter = phaseModels.begin(); + + tmp<surfaceScalarField> tmpPhi + ( + new surfaceScalarField + ( + "phi", + fvc::interpolate(phaseModelIter()())*phaseModelIter()->phi() + ) + ); + + ++phaseModelIter; + + for (; phaseModelIter != phaseModels.end(); ++ phaseModelIter) + { + tmpPhi() += + fvc::interpolate(phaseModelIter()()) + *phaseModelIter()->phi(); + } + + return tmpPhi; +} + + +void Foam::phaseSystem::generatePairs +( + const dictTable& modelDicts +) +{ + forAllConstIter(dictTable, modelDicts, iter) + { + const phasePairKey& key = iter.key(); + + // pair already exists + if (phasePairs_.found(key)) + { + // do nothing ... + } + + // new ordered pair + else if (key.ordered()) + { + phasePairs_.insert + ( + key, + autoPtr<phasePair> + ( + new orderedPhasePair + ( + phaseModels_[key.first()], + phaseModels_[key.second()] + ) + ) + ); + } + + // new unordered pair + else + { + phasePairs_.insert + ( + key, + autoPtr<phasePair> + ( + new phasePair + ( + phaseModels_[key.first()], + phaseModels_[key.second()] + ) + ) + ); + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phaseSystem::phaseSystem +( + const fvMesh& mesh +) +: + IOdictionary + ( + IOobject + ( + "phaseProperties", + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) + ), + + mesh_(mesh), + + phaseNames_(lookup("phases")), + + phaseModels_(generatePhaseModels(phaseNames_)), + + phi_(generatePhi(phaseModels_)), + + dpdt_ + ( + IOobject + ( + "dpdt", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("dpdt", dimPressure/dimTime, 0) + ), + + dgdt_ + ( + IOobject + ( + "dgdt", + mesh.time().timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + mesh, + dimensionedScalar("dgdt", dimless/dimTime, 0) + ) +{ + // Blending methods + forAllConstIter(dictionary, subDict("blending"), iter) + { + blendingMethods_.insert + ( + iter().dict().dictName(), + blendingMethod::New + ( + iter().dict(), + wordList(lookup("phases")) + ) + ); + } + + // Sub-models + generatePairsAndSubModels("surfaceTension", surfaceTensionModels_); + generatePairsAndSubModels("aspectRatio", aspectRatioModels_); + + correctKinematics(); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phaseSystem::~phaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::phaseSystem::rho() const +{ + phaseModelTable::const_iterator phaseModelIter = phaseModels_.begin(); + + tmp<volScalarField> tmpRho + ( + phaseModelIter()()*phaseModelIter()->rho() + ); + + for (; phaseModelIter != phaseModels_.end(); ++ phaseModelIter) + { + tmpRho() += phaseModelIter()()*phaseModelIter()->rho(); + } + + return tmpRho; +} + + +Foam::tmp<Foam::volVectorField> Foam::phaseSystem::U() const +{ + phaseModelTable::const_iterator phaseModelIter = phaseModels_.begin(); + + tmp<volVectorField> tmpU + ( + phaseModelIter()()*phaseModelIter()->U() + ); + + for (; phaseModelIter != phaseModels_.end(); ++ phaseModelIter) + { + tmpU() += phaseModelIter()()*phaseModelIter()->U(); + } + + return tmpU; +} + + +Foam::tmp<Foam::volScalarField> +Foam::phaseSystem::sigma(const phasePairKey& key) const +{ + if (surfaceTensionModels_.found(key)) + { + return surfaceTensionModels_[key]->sigma(); + } + else + { + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + surfaceTensionModel::typeName + ":sigma", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", surfaceTensionModel::dimSigma, 0) + ) + ); + } +} + + +void Foam::phaseSystem::solve() +{} + + +void Foam::phaseSystem::correct() +{ + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + phaseModelIter()->correct(); + } +} + + +void Foam::phaseSystem::correctKinematics() +{ + bool updateDpdt = false; + + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + phaseModelIter()->correctKinematics(); + + updateDpdt = updateDpdt || phaseModelIter()->thermo().dpdt(); + } + + // Update the pressure time-derivative if required + if (updateDpdt) + { + dpdt_ = fvc::ddt(phaseModels_.begin()()().thermo().p()); + } +} + + +void Foam::phaseSystem::correctThermo() +{ + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + phaseModelIter()->correctThermo(); + } +} + + +void Foam::phaseSystem::correctTurbulence() +{ + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + phaseModelIter()->correctTurbulence(); + } +} + + +bool Foam::phaseSystem::read() +{ + if (regIOobject::read()) + { + bool readOK = true; + + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + readOK &= phaseModelIter()->read(); + } + + // models ... + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H new file mode 100644 index 00000000000..d7d21c430de --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H @@ -0,0 +1,407 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::phaseSystem + +Description + Class to represent a system of phases and model interfacial transfers + between them. + +SourceFiles + phaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phaseSystem_H +#define phaseSystem_H + +#include "IOdictionary.H" + +#include "phaseModel.H" +#include "phasePair.H" +#include "orderedPhasePair.H" + +#include "volFields.H" +#include "surfaceFields.H" +#include "fvMatricesFwd.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class blendingMethod; +template <class modelType> class BlendedInterfacialModel; +class surfaceTensionModel; +class aspectRatioModel; +class IOMRFZoneList; + +/*---------------------------------------------------------------------------*\ + Class phaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +class phaseSystem +: + public IOdictionary +{ +public: + + // Public typedefs + + typedef + HashPtrTable + < + volScalarField, + phasePairKey, + phasePairKey::hash + > + KdTable; + + typedef + HashPtrTable + < + volScalarField, + phasePairKey, + phasePairKey::hash + > + VmTable; + + typedef + HashPtrTable + < + fvVectorMatrix, + word, + string::hash + > + momentumTransferTable; + + typedef + HashPtrTable + < + fvScalarMatrix, + word, + string::hash + > + heatTransferTable; + + typedef + HashPtrTable + < + fvScalarMatrix, + word, + string::hash + > + massTransferTable; + + +protected: + + // Protected typedefs + + typedef + HashTable<autoPtr<phaseModel>, word, word::hash> + phaseModelTable; + + typedef + HashTable<dictionary, phasePairKey, phasePairKey::hash> + dictTable; + + typedef + HashTable<autoPtr<phasePair>, phasePairKey, phasePairKey::hash> + phasePairTable; + + typedef + HashTable<autoPtr<blendingMethod>, word, word::hash> + blendingMethodTable; + + typedef + HashTable + < + autoPtr<surfaceTensionModel>, + phasePairKey, + phasePairKey::hash + > + surfaceTensionModelTable; + + typedef + HashTable + < + autoPtr<aspectRatioModel>, + phasePairKey, + phasePairKey::hash + > + aspectRatioModelTable; + + + // Protected data + + //- Reference to the mesh + const fvMesh& mesh_; + + //- Phase names + wordList phaseNames_; + + //- Phase models + phaseModelTable phaseModels_; + + //- Phase pairs + phasePairTable phasePairs_; + + //- Total volumetric flux + surfaceScalarField phi_; + + //- Rate of change of pressure + volScalarField dpdt_; + + //- Dilatation + volScalarField dgdt_; + + //- Blending methods + blendingMethodTable blendingMethods_; + + + // Sub Models + + //- Surface tension models + surfaceTensionModelTable surfaceTensionModels_; + + //- Aspect ratio models + aspectRatioModelTable aspectRatioModels_; + + + // Protected member functions + + //- Generate the phases + HashTable<autoPtr<phaseModel> > generatePhaseModels + ( + const wordList& names + ) const; + + //- Generate the mixture flux + tmp<surfaceScalarField> generatePhi + ( + const HashTable<autoPtr<phaseModel> >& phaseModels + ) const; + + //- Generate pairs + void generatePairs + ( + const dictTable& modelDicts + ); + + //- Generate pairs and sub-model tables + template<class modelType> + void createSubModels + ( + const dictTable& modelDicts, + HashTable + < + autoPtr<modelType>, + phasePairKey, + phasePairKey::hash + >& models + ); + + //- Generate pairs and sub-model tables + template<class modelType> + void generatePairsAndSubModels + ( + const word& modelName, + HashTable + < + autoPtr<modelType>, + phasePairKey, + phasePairKey::hash + >& models + ); + + //- Generate pairs and blended sub-model tables + template<class modelType> + void generatePairsAndSubModels + ( + const word& modelName, + HashTable + < + autoPtr<BlendedInterfacialModel<modelType> >, + phasePairKey, + phasePairKey::hash + >& models + ); + + //- Generate pairs and per-phase sub-model tables + template<class modelType> + void generatePairsAndSubModels + ( + const word& modelName, + HashTable + < + HashTable<autoPtr<modelType> >, + phasePairKey, + phasePairKey::hash + >& models + ); + + +public: + + //- Runtime type information + TypeName("phaseSystem"); + + //- Default name of the phase properties dictionary + static const word propertiesName; + + + // Constructors + + //- Construct from fvMesh + phaseSystem(const fvMesh& mesh); + + + //- Destructor + virtual ~phaseSystem(); + + + // Member Functions + + //- Return the mixture density + tmp<volScalarField> rho() const; + + //- Return the mixture velocity + tmp<volVectorField> U() const; + + //- Return the surface tension coefficient + tmp<volScalarField> sigma(const phasePairKey& key) const; + + //- Return the drag coefficient + virtual tmp<volScalarField> Kd(const phasePairKey& key) const = 0; + + //- Return the face drag coefficient + virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const = 0; + + //- Return the virtual mass coefficient + virtual tmp<volScalarField> Vm(const phasePairKey& key) const = 0; + + //- Return the face virtual mass coefficient + virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const = 0; + + //- Return the combined force (lift + wall-lubrication) + virtual tmp<volVectorField> F(const phasePairKey& key) const = 0; + + //- Return the combined face-force (lift + wall-lubrication) + virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const = 0; + + //- Return the turbulent diffusivity + // Multiplies the phase-fraction gradient + virtual tmp<volScalarField> D(const phasePairKey& key) const = 0; + + //- Return the interfacial mass flow rate + virtual tmp<volScalarField> dmdt(const phasePairKey& key) const = 0; + + //- Return the momentum transfer matrices + virtual autoPtr<momentumTransferTable> momentumTransfer + ( + IOMRFZoneList& MRF + ) const = 0; + + //- Return the heat transfer matrices + virtual autoPtr<heatTransferTable> heatTransfer() const = 0; + + //- Return the mass transfer matrices + virtual autoPtr<massTransferTable> massTransfer() const = 0; + + //- Solve for the phase fractions + virtual void solve(); + + //- Correct the fluid properties other than the thermo and turbulence + virtual void correct(); + + //- Correct the kinematics + virtual void correctKinematics(); + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Correct the turbulence + virtual void correctTurbulence(); + + //- Read base phaseProperties dictionary + virtual bool read(); + + + // Access + + //- Constant access the mesh + inline const fvMesh& mesh() const; + + //- Constant access the mixture flux + inline const surfaceScalarField& phi() const; + + //- Access the mixture flux + inline surfaceScalarField& phi(); + + //- Constant access the rate of change of the pressure + inline const volScalarField& dpdt() const; + + //- Access the rate of change of the pressure + inline volScalarField& dpdt(); + + //- Constant access the dilatation parameter + inline const volScalarField& dgdt() const; + + //- Access the dilatation parameter + inline volScalarField& dgdt(); + + //- Access a sub model between a phase pair + template <class modelType> + const modelType& lookupSubModel(const phasePair& key) const; + + //- Access a sub model between two phases + template <class modelType> + const modelType& lookupSubModel + ( + const phaseModel& dispersed, + const phaseModel& continuous + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "phaseSystemI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "phaseSystemTemplates.H" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H new file mode 100644 index 00000000000..4095e3739f9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline const Foam::fvMesh& Foam::phaseSystem::mesh() const +{ + return mesh_; +} + + +inline const Foam::surfaceScalarField& Foam::phaseSystem::phi() const +{ + return phi_; +} + + +inline Foam::surfaceScalarField& Foam::phaseSystem::phi() +{ + return phi_; +} + + +inline const Foam::volScalarField& Foam::phaseSystem::dpdt() const +{ + return dpdt_; +} + + +inline Foam::volScalarField& Foam::phaseSystem::dpdt() +{ + return dpdt_; +} + +inline const Foam::volScalarField& Foam::phaseSystem::dgdt() const +{ + return dgdt_; +} + + +inline Foam::volScalarField& Foam::phaseSystem::dgdt() +{ + return dgdt_; +} + + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H new file mode 100644 index 00000000000..2f3185b9d1e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H @@ -0,0 +1,210 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "BlendedInterfacialModel.H" + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +template<class modelType> +void Foam::phaseSystem::createSubModels +( + const dictTable& modelDicts, + HashTable + < + autoPtr<modelType>, + phasePairKey, + phasePairKey::hash + >& models +) +{ + forAllConstIter(dictTable, modelDicts, iter) + { + const phasePairKey& key = iter.key(); + + models.insert + ( + key, + modelType::New + ( + *iter, + phasePairs_[key] + ) + ); + } +} + + +template<class modelType> +void Foam::phaseSystem::generatePairsAndSubModels +( + const word& modelName, + HashTable + < + autoPtr<modelType>, + phasePairKey, + phasePairKey::hash + >& models +) +{ + dictTable modelDicts(lookup(modelName)); + + generatePairs(modelDicts); + + createSubModels(modelDicts, models); +} + + +template<class modelType> +void Foam::phaseSystem::generatePairsAndSubModels +( + const word& modelName, + HashTable + < + autoPtr<BlendedInterfacialModel<modelType> >, + phasePairKey, + phasePairKey::hash + >& models +) +{ + typedef + HashTable<autoPtr<modelType>, phasePairKey, phasePairKey::hash> + modelTypeTable; + + modelTypeTable tempModels; + generatePairsAndSubModels(modelName, tempModels); + + const blendingMethod& blending + ( + blendingMethods_.found(modelName) + ? blendingMethods_[modelName] + : blendingMethods_["default"] + ); + + autoPtr<modelType> noModel(NULL); + + forAllConstIter(typename modelTypeTable, tempModels, iter) + { + if (!iter().valid()) + { + continue; + } + + Info<< "iter.key() " << iter.key() << endl; + const phasePairKey key(iter.key().first(), iter.key().second()); + const phasePairKey key1In2(key.first(), key.second(), true); + const phasePairKey key2In1(key.second(), key.first(), true); + + Info<< "key " << key << endl; + + models.insert + ( + key, + autoPtr<BlendedInterfacialModel<modelType> > + ( + new BlendedInterfacialModel<modelType> + ( + phaseModels_[key.first()], + phaseModels_[key.second()], + blending, + tempModels.found(key ) ? tempModels[key ] : noModel, + tempModels.found(key1In2) ? tempModels[key1In2] : noModel, + tempModels.found(key2In1) ? tempModels[key2In1] : noModel + ) + ) + ); + } +} + + +template<class modelType> +void Foam::phaseSystem::generatePairsAndSubModels +( + const word& modelName, + HashTable + < + HashTable<autoPtr<modelType> >, + phasePairKey, + phasePairKey::hash + >& models +) +{ + typedef + HashTable<autoPtr<modelType>, phasePairKey, phasePairKey::hash> + modelTypeTable; + + forAllConstIter(wordList, phaseNames_, phaseNameIter) + { + modelTypeTable tempModels; + generatePairsAndSubModels + ( + IOobject::groupName(modelName, *phaseNameIter), + tempModels + ); + + forAllConstIter(typename modelTypeTable, tempModels, tempModelIter) + { + const phasePairKey key(tempModelIter.key()); + + if (!models.found(key)) + { + models.insert + ( + key, + HashTable<autoPtr<modelType> >() + ); + } + + models[tempModelIter.key()].insert + ( + *phaseNameIter, + *tempModelIter + ); + } + } +} + +template <class modelType> +const modelType& Foam::phaseSystem::lookupSubModel(const phasePair& key) const +{ + return + mesh().lookupObject<modelType> + ( + IOobject::groupName(modelType::typeName, key.name()) + ); +} + + +template <class modelType> +const modelType& Foam::phaseSystem::lookupSubModel +( + const phaseModel& dispersed, + const phaseModel& continuous +) const +{ + return lookupSubModel<modelType>(orderedPhasePair(dispersed, continuous)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C new file mode 100644 index 00000000000..0324fb2f565 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::twoPhaseSystem> Foam::twoPhaseSystem::New +( + const fvMesh& mesh +) +{ + const word twoPhaseSystemType + ( + IOdictionary + ( + IOobject + ( + propertiesName, + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE, + false + ) + ).lookup("type") + ); + + Info<< "Selecting twoPhaseSystem " + << twoPhaseSystemType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(twoPhaseSystemType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("twoPhaseSystem::New") + << "Unknown twoPhaseSystemType type " + << twoPhaseSystemType << endl << endl + << "Valid twoPhaseSystem types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(mesh); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C new file mode 100644 index 00000000000..114f7416331 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C @@ -0,0 +1,378 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "twoPhaseSystem.H" +#include "dragModel.H" +#include "virtualMassModel.H" + +#include "MULES.H" +#include "subCycle.H" + +#include "fvcDdt.H" +#include "fvcDiv.H" +#include "fvcSnGrad.H" +#include "fvcFlux.H" +#include "fvcSup.H" + +#include "fvmDdt.H" +#include "fvmLaplacian.H" +#include "fvmSup.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(twoPhaseSystem, 0); + defineRunTimeSelectionTable(twoPhaseSystem, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::twoPhaseSystem::twoPhaseSystem +( + const fvMesh& mesh +) +: + phaseSystem(mesh), + phase1_(phaseModels_[phaseNames_[0]]()), + phase2_(phaseModels_[phaseNames_[1]]()) +{ + phase2_.volScalarField::operator=(scalar(1) - phase1_); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::twoPhaseSystem::~twoPhaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::sigma() const +{ + return sigma + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::Kd() const +{ + return Kd + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::twoPhaseSystem::Kdf() const +{ + return Kdf + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::Vm() const +{ + return Vm + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::twoPhaseSystem::Vmf() const +{ + return Vmf + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volVectorField> +Foam::twoPhaseSystem::F() const +{ + return F + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::twoPhaseSystem::Ff() const +{ + return Ff + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::D() const +{ + return D + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::dmdt() const +{ + return dmdt + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +void Foam::twoPhaseSystem::solve() +{ + const fvMesh& mesh = this->mesh(); + const Time& runTime = mesh.time(); + + volScalarField& alpha1 = phase1_; + volScalarField& alpha2 = phase2_; + + const surfaceScalarField& phi = this->phi(); + const surfaceScalarField& phi1 = phase1_.phi(); + const surfaceScalarField& phi2 = phase2_.phi(); + + const volScalarField& dgdt = this->dgdt(); + + const dictionary& alphaControls = mesh.solverDict(alpha1.name()); + + label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles"))); + label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr"))); + + word alphaScheme("div(phi," + alpha1.name() + ')'); + word alpharScheme("div(phir," + alpha1.name() + ')'); + + alpha1.correctBoundaryConditions(); + + + surfaceScalarField phic("phic", phi); + surfaceScalarField phir("phir", phi1 - phi2); + + surfaceScalarField alpha1f(fvc::interpolate(max(alpha1, scalar(0)))); + + if (pPrimeByA_.valid()) + { + surfaceScalarField phiP + ( + pPrimeByA_()*fvc::snGrad(alpha1, "bounded")*mesh_.magSf() + ); + + phic += alpha1f*phiP; + phir += phiP; + } + + for (int acorr=0; acorr<nAlphaCorr; acorr++) + { + volScalarField::DimensionedInternalField Sp + ( + IOobject + ( + "Sp", + runTime.timeName(), + mesh + ), + mesh, + dimensionedScalar("Sp", dgdt.dimensions(), 0.0) + ); + + volScalarField::DimensionedInternalField Su + ( + IOobject + ( + "Su", + runTime.timeName(), + mesh + ), + // Divergence term is handled explicitly to be + // consistent with the explicit transport solution + fvc::div(phi)*min(alpha1, scalar(1)) + ); + + forAll(dgdt, celli) + { + if (dgdt[celli] > 0.0) + { + Sp[celli] -= dgdt[celli]/max(1.0 - alpha1[celli], 1e-4); + Su[celli] += dgdt[celli]/max(1.0 - alpha1[celli], 1e-4); + } + else if (dgdt[celli] < 0.0) + { + Sp[celli] += dgdt[celli]/max(alpha1[celli], 1e-4); + } + } + + surfaceScalarField alphaPhic1 + ( + fvc::flux + ( + phic, + alpha1, + alphaScheme + ) + + fvc::flux + ( + -fvc::flux(-phir, scalar(1) - alpha1, alpharScheme), + alpha1, + alpharScheme + ) + ); + + // Ensure that the flux at inflow BCs is preserved + forAll(alphaPhic1.boundaryField(), patchi) + { + fvsPatchScalarField& alphaPhic1p = + alphaPhic1.boundaryField()[patchi]; + + if (!alphaPhic1p.coupled()) + { + const scalarField& phi1p = phi1.boundaryField()[patchi]; + const scalarField& alpha1p = alpha1.boundaryField()[patchi]; + + forAll(alphaPhic1p, facei) + { + if (phi1p[facei] < 0) + { + alphaPhic1p[facei] = alpha1p[facei]*phi1p[facei]; + } + } + } + } + + if (nAlphaSubCycles > 1) + { + for + ( + subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles); + !(++alphaSubCycle).end(); + ) + { + surfaceScalarField alphaPhic10(alphaPhic1); + + MULES::explicitSolve + ( + geometricOneField(), + alpha1, + phi, + alphaPhic10, + (alphaSubCycle.index()*Sp)(), + (Su - (alphaSubCycle.index() - 1)*Sp*alpha1)(), + phase1_.alphaMax(), + 0 + ); + + if (alphaSubCycle.index() == 1) + { + phase1_.alphaPhi() = alphaPhic10; + } + else + { + phase1_.alphaPhi() += alphaPhic10; + } + } + + phase1_.alphaPhi() /= nAlphaSubCycles; + } + else + { + MULES::explicitSolve + ( + geometricOneField(), + alpha1, + phi, + alphaPhic1, + Sp, + Su, + phase1_.alphaMax(), + 0 + ); + + phase1_.alphaPhi() = alphaPhic1; + } + + if (pPrimeByA_.valid()) + { + fvScalarMatrix alpha1Eqn + ( + fvm::ddt(alpha1) - fvc::ddt(alpha1) + - fvm::laplacian(alpha1f*pPrimeByA_(), alpha1, "bounded") + ); + + alpha1Eqn.relax(); + alpha1Eqn.solve(); + + phase1_.alphaPhi() += alpha1Eqn.flux(); + } + + phase1_.alphaRhoPhi() = + fvc::interpolate(phase1_.rho())*phase1_.alphaPhi(); + + phase2_.alphaPhi() = phi - phase1_.alphaPhi(); + alpha2 = scalar(1) - alpha1; + phase2_.alphaRhoPhi() = + fvc::interpolate(phase2_.rho())*phase2_.alphaPhi(); + + Info<< alpha1.name() << " volume fraction = " + << alpha1.weightedAverage(mesh.V()).value() + << " Min(alpha1) = " << min(alpha1).value() + << " Max(alpha1) = " << max(alpha1).value() + << endl; + } +} + + +const Foam::dragModel& Foam::twoPhaseSystem::drag(const phaseModel& phase) const +{ + return lookupSubModel<dragModel>(phase, otherPhase(phase)); +} + + +const Foam::virtualMassModel& +Foam::twoPhaseSystem::virtualMass(const phaseModel& phase) const +{ + return lookupSubModel<virtualMassModel>(phase, otherPhase(phase)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H new file mode 100644 index 00000000000..55b7378f4bc --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H @@ -0,0 +1,194 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::twoPhaseSystem + +Description + Class which solves the volume fraction equations for two phases. + +SourceFiles + twoPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef twoPhaseSystem_H +#define twoPhaseSystem_H + +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class dragModel; +class virtualMassModel; + +/*---------------------------------------------------------------------------*\ + Class twoPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +class twoPhaseSystem +: + public phaseSystem +{ +protected: + + // Protected data + + //- Phase model 1 + phaseModel& phase1_; + + //- Phase model 2 + phaseModel& phase2_; + + //- Optional dispersion diffusivity + tmp<surfaceScalarField> pPrimeByA_; + + +public: + + //- Runtime type information + TypeName("twoPhaseSystem"); + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + twoPhaseSystem, + dictionary, + ( + const fvMesh& mesh + ), + (mesh) + ); + + + // Constructors + + //- Construct from fvMesh + twoPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~twoPhaseSystem(); + + + // Selectors + + static autoPtr<twoPhaseSystem> New + ( + const fvMesh& mesh + ); + + + // Member Functions + + //- Solve for the phase fractions + virtual void solve(); + + using phaseSystem::sigma; + using phaseSystem::Kd; + using phaseSystem::Kdf; + using phaseSystem::Vm; + using phaseSystem::Vmf; + using phaseSystem::F; + using phaseSystem::Ff; + using phaseSystem::D; + using phaseSystem::dmdt; + + //- Return the surface tension coefficient + tmp<volScalarField> sigma() const; + + //- Return the drag coefficient + tmp<volScalarField> Kd() const; + + //- Return the face drag coefficient + tmp<surfaceScalarField> Kdf() const; + + //- Return the virtual mass coefficient + tmp<volScalarField> Vm() const; + + //- Return the face virtual mass coefficient + tmp<surfaceScalarField> Vmf() const; + + //- Return the combined force (lift + wall-lubrication) + tmp<volVectorField> F() const; + + //- Return the combined face-force (lift + wall-lubrication) + tmp<surfaceScalarField> Ff() const; + + //- Return the turbulent diffusivity + // Multiplies the phase-fraction gradient + tmp<volScalarField> D() const; + + //- Return the interfacial mass flow rate + tmp<volScalarField> dmdt() const; + + + // Access + + //- Constant access phase model 1 + const phaseModel& phase1() const; + + //- Access phase model 1 + phaseModel& phase1(); + + //- Constant access phase model 2 + const phaseModel& phase2() const; + + //- Access phase model 2 + phaseModel& phase2(); + + //- Constant access the phase not given as an argument + const phaseModel& otherPhase + ( + const phaseModel& phase + ) const; + + //- Return the drag model for the given phase + const dragModel& drag(const phaseModel& phase) const; + + //- Return the virtual mass model for the given phase + const virtualMassModel& virtualMass(const phaseModel& phase) const; + + //- Return non-const access to the dispersion diffusivity + inline tmp<surfaceScalarField>& pPrimeByA(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "twoPhaseSystemI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H new file mode 100644 index 00000000000..6a30bc73a38 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline const Foam::phaseModel& Foam::twoPhaseSystem::phase1() const +{ + return phase1_; +} + + +inline Foam::phaseModel& Foam::twoPhaseSystem::phase1() +{ + return phase1_; +} + + +inline const Foam::phaseModel& Foam::twoPhaseSystem::phase2() const +{ + return phase2_; +} + + +inline Foam::phaseModel& Foam::twoPhaseSystem::phase2() +{ + return phase2_; +} + + +inline const Foam::phaseModel& Foam::twoPhaseSystem::otherPhase +( + const phaseModel& phase +) const +{ + if (&phase == &phase1_) + { + return phase2_; + } + else + { + return phase1_; + } +} + + +inline Foam::tmp<Foam::surfaceScalarField>& Foam::twoPhaseSystem::pPrimeByA() +{ + return pPrimeByA_; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C new file mode 100644 index 00000000000..6b649afb641 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "addToRunTimeSelectionTable.H" + +#include "phaseSystem.H" +#include "twoPhaseSystem.H" +#include "MomentumTransferPhaseSystem.H" +#include "HeatTransferPhaseSystem.H" +#include "HeatAndMassTransferPhaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef + HeatTransferPhaseSystem + < + MomentumTransferPhaseSystem<twoPhaseSystem> + > + heatAndMomentumTransferTwoPhaseSystem; + + addNamedToRunTimeSelectionTable + ( + twoPhaseSystem, + heatAndMomentumTransferTwoPhaseSystem, + dictionary, + heatAndMomentumTransferTwoPhaseSystem + ); + + typedef + HeatAndMassTransferPhaseSystem + < + MomentumTransferPhaseSystem<twoPhaseSystem> + > + heatMassAndMomentumTransferTwoPhaseSystem; + + addNamedToRunTimeSelectionTable + ( + twoPhaseSystem, + heatMassAndMomentumTransferTwoPhaseSystem, + dictionary, + heatMassAndMomentumTransferTwoPhaseSystem + ); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C new file mode 100644 index 00000000000..5925fc4e24c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C @@ -0,0 +1,136 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Application + twoPhaseEulerFoam + +Description + Solver for a system of 2 compressible fluid phases with a common pressure, + but otherwise separate properties. The type of phase model is run time + selectable and can optionally represent multiple species and in-phase + reactions. The phase system is also run time selectable and can optionally + represent different types of momentun, heat and mass transfer. + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "twoPhaseSystem.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "pimpleControl.H" +#include "fvIOoptionList.H" +#include "fixedFluxPressureFvPatchScalarField.H" +#include "HashPtrTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + #include "setRootCase.H" + + #include "createTime.H" + #include "createMesh.H" + + pimpleControl pimple(mesh); + + #include "createFields.H" + #include "createMRF.H" + #include "createFvOptions.H" + #include "initContinuityErrs.H" + #include "readTimeControls.H" + #include "CourantNos.H" + #include "setInitialDeltaT.H" + + Switch faceMomentum + ( + pimple.dict().lookupOrDefault<Switch>("faceMomentum", false) + ); + + Switch implicitPhasePressure + ( + mesh.solverDict(alpha1.name()).lookupOrDefault<Switch> + ( + "implicitPhasePressure", false + ) + ); + + #include "pUf/createDDtU.H" + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + Info<< "\nStarting time loop\n" << endl; + + while (runTime.run()) + { + #include "readTimeControls.H" + #include "CourantNos.H" + #include "setDeltaT.H" + + runTime++; + Info<< "Time = " << runTime.timeName() << nl << endl; + + // --- Pressure-velocity PIMPLE corrector loop + while (pimple.loop()) + { + fluid.solve(); + fluid.correct(); + + #include "correctContErrs.H" + + #include "YEqns.H" + + if (faceMomentum) + { + #include "pUf/UEqns.H" + #include "EEqns.H" + #include "pUf/pEqn.H" + #include "pUf/DDtU.H" + } + else + { + #include "pU/UEqns.H" + #include "EEqns.H" + #include "pU/pEqn.H" + } + + fluid.correctKinematics(); + + if (pimple.turbCorr()) + { + fluid.correctTurbulence(); + } + } + + #include "write.H" + + Info<< "ExecutionTime = " + << runTime.elapsedCpuTime() + << " s\n\n" << endl; + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H new file mode 100644 index 00000000000..303661beb64 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H @@ -0,0 +1,17 @@ + if (runTime.outputTime()) + { + volVectorField Ur + ( + IOobject + ( + "Ur", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + U1 - U2 + ); + + runTime.write(); + } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air new file mode 100644 index 00000000000..f704d27aa32 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water new file mode 100644 index 00000000000..3c62df75d0c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta new file mode 100644 index 00000000000..e45304b8346 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1.0e-7; + } + + outlet + { + type inletOutlet; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; + } + + walls + { + type zeroGradient; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air new file mode 100644 index 00000000000..e81fffac061 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water new file mode 100644 index 00000000000..aab00fd78bb --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air new file mode 100644 index 00000000000..1b1a35684a0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org new file mode 100644 index 00000000000..4472b0c6359 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air new file mode 100644 index 00000000000..ed94c59d53a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water new file mode 100644 index 00000000000..1cd27e448b4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air new file mode 100644 index 00000000000..b4dd7631087 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water new file mode 100644 index 00000000000..3381282f9ca --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air new file mode 100644 index 00000000000..475091edaa9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water new file mode 100644 index 00000000000..475091edaa9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p new file mode 100644 index 00000000000..961771c7279 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh new file mode 100644 index 00000000000..c816028aaf3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g new file mode 100644 index 00000000000..0cc222ca345 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties new file mode 100644 index 00000000000..db138464eda --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties @@ -0,0 +1,163 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-6; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary new file mode 100644 index 00000000000..4564ccc46a6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air new file mode 100644 index 00000000000..befc0aeae44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water new file mode 100644 index 00000000000..c44c005d3b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 18; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Cp 4195; + Hf 0; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air new file mode 100644 index 00000000000..93118858651 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air @@ -0,0 +1,34 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType LES; + +LES +{ + LESModel continuousGasKEqn; //Smagorinsky; + + turbulence on; + printCoeffs on; + + delta cubeRootVol; + + cubeRootVolCoeffs + { + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water new file mode 100644 index 00000000000..9ca26ce033f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water @@ -0,0 +1,34 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType LES; + +LES +{ + LESModel NicenoKEqn; //SmagorinskyZhang; + + turbulence on; + printCoeffs on; + + delta cubeRootVol; + + cubeRootVolCoeffs + { + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict new file mode 100644 index 00000000000..d03967afdc2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict new file mode 100644 index 00000000000..26877364f24 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.005; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.air + { + mean on; + prime2Mean off; + base time; + } + + U.water + { + mean on; + prime2Mean off; + base time; + } + + alpha.air + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes new file mode 100644 index 00000000000..09bfa9fabf4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes @@ -0,0 +1,68 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,k.*\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution new file mode 100644 index 00000000000..de1aecacf93 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution @@ -0,0 +1,91 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + alpha.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "e.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + minIter 1; + } + + "(k|epsilon|Theta).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict new file mode 100644 index 00000000000..93d742ba74a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.air 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air new file mode 100644 index 00000000000..f704d27aa32 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water new file mode 100644 index 00000000000..3c62df75d0c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta new file mode 100644 index 00000000000..e45304b8346 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1.0e-7; + } + + outlet + { + type inletOutlet; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; + } + + walls + { + type zeroGradient; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air new file mode 100644 index 00000000000..e81fffac061 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water new file mode 100644 index 00000000000..aab00fd78bb --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air new file mode 100644 index 00000000000..1b1a35684a0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org new file mode 100644 index 00000000000..4472b0c6359 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air new file mode 100644 index 00000000000..ee103be57f5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilon.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water new file mode 100644 index 00000000000..cf8ea7bda76 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilon.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm new file mode 100644 index 00000000000..a3139ddbc1f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilonm; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phim; + inletValue $internalField; + value $internalField; + } + + walls + { + type zeroGradient; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air new file mode 100644 index 00000000000..3b5244d4a3c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water new file mode 100644 index 00000000000..7cec6e66d0c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km new file mode 100644 index 00000000000..f6f89f41672 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object km; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phim; + inletValue $internalField; + value $internalField; + } + + walls + { + type zeroGradient; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air new file mode 100644 index 00000000000..e3ce09a2cb1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nut.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water new file mode 100644 index 00000000000..376ed3f7943 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nut.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p new file mode 100644 index 00000000000..961771c7279 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh new file mode 100644 index 00000000000..c816028aaf3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g new file mode 100644 index 00000000000..0cc222ca345 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties new file mode 100644 index 00000000000..db138464eda --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties @@ -0,0 +1,163 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-6; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary new file mode 100644 index 00000000000..4564ccc46a6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air new file mode 100644 index 00000000000..befc0aeae44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water new file mode 100644 index 00000000000..c44c005d3b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 18; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Cp 4195; + Hf 0; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air new file mode 100644 index 00000000000..fe69aba1ead --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air @@ -0,0 +1,34 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel mixtureKEpsilon; //continuousGasKEpsilon; + + turbulence on; + printCoeffs on; + + // mixtureKEpsilonCoeffs + // { + // Cp 1; + // C3 1; + // } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water new file mode 100644 index 00000000000..b82e81c0cbc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel mixtureKEpsilon; //LaheyKEpsilon; + + turbulence on; + printCoeffs on; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict new file mode 100644 index 00000000000..d03967afdc2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict new file mode 100644 index 00000000000..26877364f24 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.005; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.air + { + mean on; + prime2Mean off; + base time; + } + + U.water + { + mean on; + prime2Mean off; + base time; + } + + alpha.air + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes new file mode 100644 index 00000000000..ad383605624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes @@ -0,0 +1,70 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(alphaRhoPhi.*,(k|epsilon).*\)" Gauss limitedLinear 1; + "div\(phim,(k|epsilon)m\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution new file mode 100644 index 00000000000..f6f72076f0b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution @@ -0,0 +1,91 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + alpha.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 0; + minIter 1; + } + + "e.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 0; + minIter 1; + } + + "(k|epsilon|Theta).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict new file mode 100644 index 00000000000..93d742ba74a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.air 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas new file mode 100644 index 00000000000..50dd609bc09 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object AIR.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.9; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid new file mode 100644 index 00000000000..21d6b06a426 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object AIR.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas new file mode 100644 index 00000000000..3241a1ab52a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CO.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.1; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas new file mode 100644 index 00000000000..4c75b369281 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2O.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid new file mode 100644 index 00000000000..c7ad1c1c75e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2O.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas new file mode 100644 index 00000000000..7c14c5ec5f5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 400; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid new file mode 100644 index 00000000000..6f27c82d328 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 400; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + inlet + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas new file mode 100644 index 00000000000..48fc136a2df --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + location "0"; + object U.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.gas; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid new file mode 100644 index 00000000000..b041afd0078 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + location "0"; + object U.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.liquid; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault new file mode 100644 index 00000000000..cc22bdff91c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object Ydefault; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas new file mode 100644 index 00000000000..2d4796c4338 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org new file mode 100644 index 00000000000..093bcdab073 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid new file mode 100644 index 00000000000..60143dd5336 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +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 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org new file mode 100644 index 00000000000..4ba98f325e8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas new file mode 100644 index 00000000000..c85600904b9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type epsilonWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas new file mode 100644 index 00000000000..a2a79829f33 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type kqRWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas new file mode 100644 index 00000000000..634a29a38b5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type nutkWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p new file mode 100644 index 00000000000..961771c7279 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh new file mode 100644 index 00000000000..c816028aaf3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas new file mode 100644 index 00000000000..0e9eb6b63b9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object chemistryProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +chemistryType +{ + chemistrySolver EulerImplicit; + chemistryThermo rho; +} + +chemistry on; + +initialChemicalTimeStep 1e-07; + +EulerImplicitCoeffs +{ + cTauChem 1; + equilibriumRateLimiter off; +} + +odeCoeffs +{ + solver Rosenbrock43; + absTol 1e-12; + relTol 0.01; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas new file mode 100644 index 00000000000..94555a9a7b2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object combustionProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +combustionModel PaSR<rhoChemistryCombustion>; + +active true; + +laminarCoeffs +{ +} + +noCombustionCoeffs +{ +} + +PaSRCoeffs +{ + Cmix 1.0; + turbulentReaction yes; + useReactionRate true; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g new file mode 100644 index 00000000000..0cc222ca345 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties new file mode 100644 index 00000000000..80179162ba1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties @@ -0,0 +1,219 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatMassAndMomentumTransferTwoPhaseSystem; + +phases (gas liquid); + +gas +{ + type reactingPhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + Sc 0.7; + + residualAlpha 1e-6; +} + +liquid +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.gas 0.5; + minFullyContinuousAlpha.liquid 0.7; + minPartlyContinuousAlpha.liquid 0.5; + } + + heatTransfer + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } + + massTransfer + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (gas in liquid) + { + type constant; + E0 1.0; + } + + (liquid in gas) + { + type constant; + E0 1.0; + } +); + +drag +( + (gas in liquid) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (liquid in gas) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } + + (liquid in gas) + { + type constantCoefficient; + Cvm 0.5; + } +); + +interfaceComposition +( + (gas in liquid) + { + type Saturated; + species ( H2O ); + Le 1.0; + saturationPressure + { + type ArdenBuck; + } + } +); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +massTransfer.gas +( + (gas in liquid) + { + type spherical; + Le 1.0; + } + + (liquid in gas) + { + type Frossling; + Le 1.0; + } +); + +massTransfer.liquid +( +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary new file mode 100644 index 00000000000..4564ccc46a6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas new file mode 100644 index 00000000000..a99cb12d887 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas @@ -0,0 +1,22 @@ +species +( + CO + CO2 + H2 + H2O + AIR +); + +reactions +{ + waterGasShift + { + type reversibleArrheniusReaction; + + reaction "CO^0.93 + H2O^0.24 = CO2^0.69 + H2^1"; + + A 1e8; + beta 0.86; + Ta 1e4; + } +} diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas new file mode 100644 index 00000000000..dde77f08718 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas @@ -0,0 +1,109 @@ +CO +{ + specie + { + nMoles 1; + molWeight 28.0106; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.71519 0.00206253 -9.98826e-07 2.30053e-10 -2.03648e-14 -14151.9 7.81869 ); + lowCpCoeffs ( 3.57953 -0.000610354 1.01681e-06 9.07006e-10 -9.04424e-13 -14344.1 3.50841 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +CO2 +{ + specie + { + nMoles 1; + molWeight 44.01; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.85746 0.00441437 -2.21481e-06 5.2349e-10 -4.72084e-14 -48759.2 2.27164 ); + lowCpCoeffs ( 2.35677 0.0089846 -7.12356e-06 2.45919e-09 -1.437e-13 -48372 9.90105 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +H2 +{ + specie + { + nMoles 1; + molWeight 2.01594; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.33728 -4.94025e-05 4.99457e-07 -1.79566e-10 2.00255e-14 -950.159 -3.20502 ); + lowCpCoeffs ( 2.34433 0.00798052 -1.94782e-05 2.01572e-08 -7.37612e-12 -917.935 0.68301 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +H2O +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.03399 0.00217692 -1.64073e-07 -9.7042e-11 1.68201e-14 -30004.3 4.96677 ); + lowCpCoeffs ( 4.19864 -0.00203643 6.5204e-06 -5.48797e-09 1.77198e-12 -30293.7 -0.849032 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +AIR +{ + specie + { + nMoles 1; + molWeight 28.9596; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 ); + lowCpCoeffs ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas new file mode 100644 index 00000000000..a06d0f8ddb5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas @@ -0,0 +1,38 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture reactingMixture; + transport sutherland; + thermo janaf; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +inertSpecie AIR; + +chemistryReader foamChemistryReader; + +foamChemistryFile "$FOAM_CASE/constant/reactions.gas"; + +foamChemistryThermoFile "$FOAM_CASE/constant/thermo.gas"; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid new file mode 100644 index 00000000000..90073f75ef8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid @@ -0,0 +1,86 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +species +( + AIR + H2O +); + +inertSpecie H2O; + +"(mixture|H2O)" +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf -1.5879e+07; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + +AIR +{ + specie + { + nMoles 1; + molWeight 28.9; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf 0; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas new file mode 100644 index 00000000000..fc0ab32ee84 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kEpsilon; + + turbulence on; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid new file mode 100644 index 00000000000..8a2a00b53a8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict new file mode 100644 index 00000000000..d03967afdc2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict new file mode 100644 index 00000000000..3414324b79e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.001; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 10; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict new file mode 100644 index 00000000000..c98c387d4e6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 6; + +method hierarchical; + +hierarchicalCoeffs +{ + n (1 6 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes new file mode 100644 index 00000000000..295452d6001 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes @@ -0,0 +1,76 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + "div\(phi,alpha.*\)" Gauss vanLeer; + "div\(phir,alpha.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,Yi\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(alphaRhoPhi.*,(k|epsilon).*\)" Gauss limitedLinear 1; + "div\(phim,(k|epsilon)m\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + +wallDist +{ + method meshWave; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution new file mode 100644 index 00000000000..a629762abaf --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution @@ -0,0 +1,101 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.*" + { + nAlphaCorr 1; + nAlphaSubCycles 3; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-11; + relTol 0.001; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + "(e|h).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + "(k|epsilon|Theta).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + Yi + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + residualAlpha 1e-8; + } +} + +PIMPLE +{ + nOuterCorrectors 5; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict new file mode 100644 index 00000000000..8afdc29c84e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.gas 1 + volScalarFieldValue alpha.liquid 0 +); + +regions +( + boxToCell + { + box (0 0 0) (0.15 0.501 0.1); + fieldValues + ( + volScalarFieldValue alpha.gas 0.01 + volScalarFieldValue alpha.liquid 0.99 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air new file mode 100644 index 00000000000..de0ac66f780 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 300; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 300; + value uniform 300; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles new file mode 100644 index 00000000000..58313dfb2b5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles new file mode 100644 index 00000000000..c9b385ccd8b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Theta.particles; +} +// ************************************************************************* // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0; + +referenceLevel 1e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1e-4; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air new file mode 100644 index 00000000000..a9af55993e2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.25 0); + +boundaryField +{ + inlet + { + type interstitialInletVelocity; + inletVelocity uniform (0 0.25 0); + alpha alpha.air; + value $internalField; + } + + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles new file mode 100644 index 00000000000..fa0397ae355 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value uniform (0 0 0); + } + + outlet + { + type fixedValue; + value uniform (0 0 0); + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air new file mode 100644 index 00000000000..288160cdf0c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air @@ -0,0 +1,6047 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +6000 +( +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org new file mode 100644 index 00000000000..6292e5ffc08 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles new file mode 100644 index 00000000000..cf55161b4a5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles @@ -0,0 +1,6047 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +6000 +( +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +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 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org new file mode 100644 index 00000000000..b28a5a97d9b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air new file mode 100644 index 00000000000..0b5f62a356b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilon.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 10; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air new file mode 100644 index 00000000000..307a3495c93 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air new file mode 100644 index 00000000000..dcb65148ae4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nut.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles new file mode 100644 index 00000000000..6264a273f79 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nut.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p new file mode 100644 index 00000000000..b318305599b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh new file mode 100644 index 00000000000..383649e640b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + + outlet + { + type fixedValue; + value $internalField; + } + + walls + { + type fixedFluxPressure; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g new file mode 100644 index 00000000000..e0ac2653b5b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value ( 0 -9.81 0 ); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties new file mode 100644 index 00000000000..39a5e3d5df6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties @@ -0,0 +1,114 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferTwoPhaseSystem; + +phases (particles air); + +particles +{ + type purePhaseModel; + + diameterModel constant; + constantCoeffs + { + d 3e-4; + } + + alphaMax 0.62; + residualAlpha 1e-6; +} + +air +{ + type purePhaseModel; + + diameterModel constant; + constantCoeffs + { + d 1; + } + + residualAlpha 0; +} + +blending +{ + default + { + type none; + continuousPhase air; + } +} + +surfaceTension +( + (air and particles) + { + type constant; + sigma 0; + } +); + + +aspectRatio +( +); + +drag +( + (particles in air) + { + type GidaspowErgunWenYu; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( +); + +heatTransfer +( + (particles in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary new file mode 100644 index 00000000000..cda7f49514c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 30; + startFace 11770; + } + outlet + { + type patch; + nFaces 30; + startFace 11800; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 400; + startFace 11830; + } + frontAndBackPlanes + { + type empty; + inGroups 1(empty); + nFaces 12000; + startFace 12230; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air new file mode 100644 index 00000000000..befc0aeae44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles new file mode 100644 index 00000000000..7508b70aa31 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState rhoConst; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 100; + } + equationOfState + { + rho 2500; + } + thermodynamics + { + Cp 6000; + Hf 0; + } + transport + { + mu 0; + Pr 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air new file mode 100644 index 00000000000..d702f90d3b0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kEpsilon; + + turbulence on; + printCoeffs on; +} + +LES +{ + LESModel Smagorinsky; + + turbulence on; + printCoeffs on; + + delta cubeRootVol; + + cubeRootVolCoeffs + { + deltaCoeff 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles new file mode 100644 index 00000000000..6a26e64e586 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles @@ -0,0 +1,62 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kineticTheory; + + turbulence on; + printCoeffs on; + + kineticTheoryCoeffs + { + equilibrium off; + + e 0.8; + alphaMax 0.62; + alphaMinFriction 0.5; + residualAlpha 1e-4; + + viscosityModel Gidaspow; + conductivityModel Gidaspow; + granularPressureModel Lun; + frictionalStressModel JohnsonJackson; + radialModel SinclairJackson; + + JohnsonJacksonCoeffs + { + Fr 0.05; + eta 2; + p 5; + phi 28.5; + alphaDeltaMin 0.05; + } + } + + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict new file mode 100644 index 00000000000..900f5a585b8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict @@ -0,0 +1,66 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 -0.01) + (0.15 0 -0.01) + (0.15 1 -0.01) + (0 1 -0.01) + (0 0 0.01) + (0.15 0 0.01) + (0.15 1 0.01) + (0 1 0.01) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (30 200 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) + empty frontAndBackPlanes + ( + (0 3 2 1) + (4 5 6 7) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict new file mode 100644 index 00000000000..fbbdb761cad --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 2; + +deltaT 0.0002; + +writeControl runTime; + +writeInterval 0.01; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable on; + +adjustTimeStep no; + +maxCo 0.9; + +maxDeltaT 1e-05; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.particles + { + mean on; + prime2Mean off; + base time; + } + + U.air + { + mean on; + prime2Mean off; + base time; + } + + alpha.particles + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes new file mode 100644 index 00000000000..e859411a19e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes @@ -0,0 +1,81 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + "div\(phi,alpha.*\)" Gauss vanLeer; + "div\(phir,alpha.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + div(alphaRhoPhi.particles,Theta.particles) Gauss limitedLinear 1; + + "div\(alphaRhoPhi.*,(k|epsilon).*\)" Gauss limitedLinear 1; + + div((((alpha.air*thermo:rho.air)*nuEff.air)*dev2(T(grad(U.air))))) Gauss linear; + + div((((thermo:rho.particles*nut.particles)*dev2(T(grad(U.particles))))+(((thermo:rho.particles*lambda.particles)*div(phi.particles))*I))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + bounded Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; + bounded uncorrected; +} + +fluxRequired +{ + default no; + p_rgh ; + alpha.particles; +} + +wallDist +{ + method meshWave; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution new file mode 100644 index 00000000000..0965029f85a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution @@ -0,0 +1,108 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.*" + { + nAlphaCorr 1; + nAlphaSubCycles 2; + implicitPhasePressure yes; + + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-9; + relTol 0; + minIter 1; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0.01; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "(h|e).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + } + + "Theta.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + } + + "(k|epsilon).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + faceMomentum yes; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict new file mode 100644 index 00000000000..da4c6ee6f2b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.air 1 + volScalarFieldValue alpha.particles 0 +); + +regions +( + boxToCell + { + box ( 0 0 -0.1 ) ( 0.15 0.5 0.1 ); + fieldValues + ( + volScalarFieldValue alpha.air 0.45 + volScalarFieldValue alpha.particles 0.55 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air new file mode 100644 index 00000000000..9c0fd4206c1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Tair; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water new file mode 100644 index 00000000000..e592c501d54 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Twater; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta new file mode 100644 index 00000000000..e45304b8346 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1.0e-7; + } + + outlet + { + type inletOutlet; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; + } + + walls + { + type zeroGradient; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air new file mode 100644 index 00000000000..e81fffac061 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water new file mode 100644 index 00000000000..aab00fd78bb --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air new file mode 100644 index 00000000000..1b1a35684a0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org new file mode 100644 index 00000000000..4472b0c6359 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p new file mode 100644 index 00000000000..961771c7279 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh new file mode 100644 index 00000000000..c816028aaf3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g new file mode 100644 index 00000000000..0cc222ca345 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties new file mode 100644 index 00000000000..3f7a06fbc5b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties @@ -0,0 +1,166 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-6; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary new file mode 100644 index 00000000000..4564ccc46a6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air new file mode 100644 index 00000000000..befc0aeae44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water new file mode 100644 index 00000000000..c44c005d3b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 18; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Cp 4195; + Hf 0; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air new file mode 100644 index 00000000000..1296429b72a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water new file mode 100644 index 00000000000..7f0d75a82fc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict new file mode 100644 index 00000000000..d03967afdc2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict new file mode 100644 index 00000000000..26877364f24 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.005; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.air + { + mean on; + prime2Mean off; + base time; + } + + U.water + { + mean on; + prime2Mean off; + base time; + } + + alpha.air + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes new file mode 100644 index 00000000000..2c05f079b62 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution new file mode 100644 index 00000000000..350b0c0c1fe --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution @@ -0,0 +1,82 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + alpha.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "e.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict new file mode 100644 index 00000000000..93d742ba74a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.air 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas new file mode 100644 index 00000000000..3241a1ab52a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CO.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.1; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas new file mode 100644 index 00000000000..4c75b369281 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2O.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid new file mode 100644 index 00000000000..c7ad1c1c75e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2O.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas new file mode 100644 index 00000000000..db51372765d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid new file mode 100644 index 00000000000..1e5699a4cd0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + inlet + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas new file mode 100644 index 00000000000..48fc136a2df --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + location "0"; + object U.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.gas; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid new file mode 100644 index 00000000000..b041afd0078 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + location "0"; + object U.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.liquid; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault new file mode 100644 index 00000000000..cc22bdff91c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object Ydefault; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas new file mode 100644 index 00000000000..a97658d602c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object air.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.9; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid new file mode 100644 index 00000000000..dc181ed87a7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object air.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas new file mode 100644 index 00000000000..2d4796c4338 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org new file mode 100644 index 00000000000..093bcdab073 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid new file mode 100644 index 00000000000..60143dd5336 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +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 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org new file mode 100644 index 00000000000..4ba98f325e8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p new file mode 100644 index 00000000000..961771c7279 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh new file mode 100644 index 00000000000..c816028aaf3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g new file mode 100644 index 00000000000..0cc222ca345 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties new file mode 100644 index 00000000000..7fd6f0c6c2e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties @@ -0,0 +1,230 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatMassAndMomentumTransferTwoPhaseSystem; + +phases (gas liquid); + +gas +{ + type multiComponentPhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + Sc 0.7; + + residualAlpha 1e-6; +} + +liquid +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minPartlyContinuousAlpha.gas 0.5; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.liquid 0.5; + minFullyContinuousAlpha.liquid 0.7; + } + + heatTransferModel + { + type linear; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.liquid 0; + minFullyContinuousAlpha.liquid 1; + } + + massTransferModel + { + type linear; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.liquid 0; + minFullyContinuousAlpha.liquid 1; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (gas in liquid) + { + type constant; + E0 1.0; + } + + (liquid in gas) + { + type constant; + E0 1.0; + } +); + +drag +( + (gas in liquid) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (liquid in gas) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } + + (liquid in gas) + { + type constantCoefficient; + Cvm 0.5; + } +); + +interfaceComposition +( + (gas in liquid) + { + type Saturated; + species ( H2O ); + Le 1.0; + saturationPressure + { + type ArdenBuck; + } + } +); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +massTransfer.gas +( + (gas in liquid) + { + type spherical; + Le 1.0; + } + + (liquid in gas) + { + type Frossling; + Le 1.0; + } +); + +massTransfer.liquid +( + (gas in liquid) + { + type Frossling; + Le 1.0; + } + + (liquid in gas) + { + type spherical; + Le 1.0; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary new file mode 100644 index 00000000000..4564ccc46a6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas new file mode 100644 index 00000000000..0bfc34018d2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas @@ -0,0 +1,82 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture multiComponentMixture; + transport sutherland; + thermo janaf; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +inertSpecie air; + +species +( + air + H2O +); + +H2O +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.03399 0.00217692 -1.64073e-07 -9.7042e-11 1.68201e-14 -30004.3 4.96677 ); + lowCpCoeffs ( 4.19864 -0.00203643 6.5204e-06 -5.48797e-09 1.77198e-12 -30293.7 -0.849032 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +air +{ + specie + { + nMoles 1; + molWeight 28.9596; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 ); + lowCpCoeffs ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid new file mode 100644 index 00000000000..2f486f8bea8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid @@ -0,0 +1,86 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +species +( + air + H2O +); + +inertSpecie H2O; + +"(mixture|H2O)" +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf -1.5879e+07; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + +air +{ + specie + { + nMoles 1; + molWeight 28.9; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf 0; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas new file mode 100644 index 00000000000..1db1a267016 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid new file mode 100644 index 00000000000..8a2a00b53a8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict new file mode 100644 index 00000000000..d03967afdc2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions new file mode 100644 index 00000000000..04b7acab203 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +inletMassFlowRate +{ + type faceSource; + functionObjectLibs ("libfieldFunctionObjects.so"); + + fields + ( + alphaRhoPhi.gas + alphaRhoPhi.liquid + ); + + valueOutput false; + log true; + surfaceFormat null; + + source patch; + sourceName inlet; + + operation sum; + + outputControl timeStep; +} + +outletMassFlowRate +{ + type faceSource; + functionObjectLibs ("libfieldFunctionObjects.so"); + + fields + ( + alphaRhoPhi.gas + alphaRhoPhi.liquid + ); + + valueOutput false; + log true; + surfaceFormat null; + + source patch; + sourceName outlet; + + operation sum; + + outputControl timeStep; +} + +totalMass +{ + type coded; + functionObjectLibs ("libutilityFunctionObjects.so"); + redirectType error; + + code + #{ + const volScalarField& alphaGas = + mesh().lookupObject<volScalarField>("alpha.gas"); + const volScalarField& alphaLiquid = + mesh().lookupObject<volScalarField>("alpha.liquid"); + + const volScalarField& rhoGas = + mesh().lookupObject<volScalarField>("thermo:rho.gas"); + const volScalarField& rhoLiquid = + mesh().lookupObject<volScalarField>("thermo:rho.liquid"); + + const volScalarField& dmdt = + mesh().lookupObject<volScalarField>("dmdt.gasAndLiquid"); + + const scalarField& v = mesh().V(); + + Info<< "coded totalMass output:" << endl + << " volIntegrate(all) for alpha.gas*rho.gas = " + << gSum(alphaGas*rhoGas*v) << endl + << " volIntegrate(all) for alpha.liquid*rho.liquid = " + << gSum(alphaLiquid*rhoLiquid*v) << endl + << " volIntegrate(all) for dmdt = " + << gSum(dmdt*v) << endl + << endl; + #}; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict new file mode 100644 index 00000000000..b6cb44bf837 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict @@ -0,0 +1,59 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.0025; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 10; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + +functions +{ + //#include "continuityFunctions" +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict new file mode 100644 index 00000000000..c98c387d4e6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 6; + +method hierarchical; + +hierarchicalCoeffs +{ + n (1 6 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes new file mode 100644 index 00000000000..2eb455d3e03 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes @@ -0,0 +1,68 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + "div\(phi,alpha.*\)" Gauss vanLeer; + "div\(phir,alpha.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,Yi\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution new file mode 100644 index 00000000000..323c361051c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution @@ -0,0 +1,92 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.*" + { + nAlphaCorr 1; + nAlphaSubCycles 3; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-11; + relTol 0.001; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + "(e|h).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + Yi + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + residualAlpha 1e-8; + } +} + +PIMPLE +{ + nOuterCorrectors 5; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict new file mode 100644 index 00000000000..8afdc29c84e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.gas 1 + volScalarFieldValue alpha.liquid 0 +); + +regions +( + boxToCell + { + box (0 0 0) (0.15 0.501 0.1); + fieldValues + ( + volScalarFieldValue alpha.gas 0.01 + volScalarFieldValue alpha.liquid 0.99 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas new file mode 100644 index 00000000000..1da050a2b20 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid new file mode 100644 index 00000000000..8a681a590b2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + inlet + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas new file mode 100644 index 00000000000..4f37ea90bf2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.gas; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid new file mode 100644 index 00000000000..c70b49719c7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.liquid; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas new file mode 100644 index 00000000000..2e6c5de3ba8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object air.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid new file mode 100644 index 00000000000..dc181ed87a7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object air.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas new file mode 100644 index 00000000000..5169dec6f86 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid new file mode 100644 index 00000000000..2fc0873d4f4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +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 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p new file mode 100644 index 00000000000..961771c7279 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh new file mode 100644 index 00000000000..c816028aaf3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas new file mode 100644 index 00000000000..4bb3d7f79b2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object water.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid new file mode 100644 index 00000000000..51e7d02eb1b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object water.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g new file mode 100644 index 00000000000..0cc222ca345 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties new file mode 100644 index 00000000000..9ac25e45131 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties @@ -0,0 +1,238 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatMassAndMomentumTransferTwoPhaseSystem; + +phases (gas liquid); + +gas +{ + type multiComponentPhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + Sc 0.7; + + residualAlpha 1e-6; +} + +liquid +{ + type multiComponentPhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + Sc 0.7; + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.gas 0.5; + minFullyContinuousAlpha.liquid 0.7; + minPartlyContinuousAlpha.liquid 0.5; + } + + heatTransferModel + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } + + massTransferModel + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (gas in liquid) + { + type constant; + E0 1.0; + } + + (liquid in gas) + { + type constant; + E0 1.0; + } +); + +drag +( + (gas in liquid) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (liquid in gas) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } + + (liquid in gas) + { + type constantCoefficient; + Cvm 0.5; + } +); + +interfaceComposition +( + (gas in liquid) + { + type Saturated; + species ( water ); + Le 1.0; + saturationPressure + { + type ArdenBuck; + } + } + + (liquid in gas) + { + type Henry; + species ( air ); + k ( 1.492e-2 ); + Le 1.0; + } +); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +massTransfer.gas +( + (gas in liquid) + { + type spherical; + Le 1.0; + } + + (liquid in gas) + { + type Frossling; + Le 1.0; + } +); + +massTransfer.liquid +( + (gas in liquid) + { + type Frossling; + Le 1.0; + } + + (liquid in gas) + { + type spherical; + Le 1.0; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary new file mode 100644 index 00000000000..4564ccc46a6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas new file mode 100644 index 00000000000..8b813293286 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas @@ -0,0 +1,76 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture multiComponentMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +species +( + air + water +); + +inertSpecie air; + +"(mixture|air)" +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Hf 0; + Cp 1012.5; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + +water +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + thermodynamics + { + Hf -1.3435e+07; + Cp 1857.8; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid new file mode 100644 index 00000000000..22a48eded3b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid @@ -0,0 +1,86 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture multiComponentMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +species +( + air + water +); + +inertSpecie water; + +"(mixture|water)" +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf -1.5879e+07; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + +air +{ + specie + { + nMoles 1; + molWeight 28.9; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf 0; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas new file mode 100644 index 00000000000..1db1a267016 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid new file mode 100644 index 00000000000..8a2a00b53a8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict new file mode 100644 index 00000000000..d03967afdc2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict new file mode 100644 index 00000000000..d24ddcc3662 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.0025; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 10; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes new file mode 100644 index 00000000000..fd4e48c43da --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes @@ -0,0 +1,68 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + "div\(phi,alpha.*\)" Gauss vanLeer; + "div\(phir,alpha.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,Yi\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.**thermo:rho.*\)*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution new file mode 100644 index 00000000000..8f0f1704581 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution @@ -0,0 +1,92 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.*" + { + nAlphaCorr 1; + nAlphaSubCycles 3; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-12; + relTol 0.001; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + "(e|h).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + Yi + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + residualAlpha 1e-8; + } +} + +PIMPLE +{ + nOuterCorrectors 5; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict new file mode 100644 index 00000000000..facd52f351b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.gas 1 + volScalarFieldValue alpha.liquid 0 +); + +regions +( + boxToCell + { + box (0 0 0) (0.15 0.501 0.1); + fieldValues + ( + volScalarFieldValue alpha.gas 0 + volScalarFieldValue alpha.liquid 1 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air new file mode 100644 index 00000000000..9c0fd4206c1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Tair; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water new file mode 100644 index 00000000000..1cfd38f9265 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Twater; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.water; + inletValue uniform 300; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta new file mode 100644 index 00000000000..e45304b8346 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1.0e-7; + } + + outlet + { + type inletOutlet; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; + } + + walls + { + type zeroGradient; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air new file mode 100644 index 00000000000..e81fffac061 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water new file mode 100644 index 00000000000..aab00fd78bb --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air new file mode 100644 index 00000000000..1b1a35684a0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org new file mode 100644 index 00000000000..4472b0c6359 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air new file mode 100644 index 00000000000..cd5560fb91c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object kappai.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 -1 0 0 0 0 0]; + +internalField uniform 2000; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p new file mode 100644 index 00000000000..961771c7279 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh new file mode 100644 index 00000000000..c816028aaf3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g new file mode 100644 index 00000000000..0cc222ca345 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties new file mode 100644 index 00000000000..e46eefe3172 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties @@ -0,0 +1,186 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + + diameterModel IATE; + + IATECoeffs + { + dMax 1e-2; + dMin 1e-4; + residualAlpha 1e-6; + + sources + ( + wakeEntrainmentCoalescence + { + Cwe 0.002; + } + randomCoalescence + { + Crc 0.04; + C 3; + alphaMax 0.75; + } + turbulentBreakUp + { + Cti 0.085; + WeCr 6; + } + ); + } + + residualAlpha 1e-6; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + residualAlpha 1e-6; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary new file mode 100644 index 00000000000..4564ccc46a6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air new file mode 100644 index 00000000000..befc0aeae44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water new file mode 100644 index 00000000000..c44c005d3b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 18; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Cp 4195; + Hf 0; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air new file mode 100644 index 00000000000..1296429b72a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water new file mode 100644 index 00000000000..7f0d75a82fc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict new file mode 100644 index 00000000000..d03967afdc2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict new file mode 100644 index 00000000000..26877364f24 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.005; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.air + { + mean on; + prime2Mean off; + base time; + } + + U.water + { + mean on; + prime2Mean off; + base time; + } + + alpha.air + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes new file mode 100644 index 00000000000..e17b4cee526 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + div(phi.air,kappai.air) Gauss vanLeer; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.**thermo:rho.*\)*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution new file mode 100644 index 00000000000..171537ad317 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution @@ -0,0 +1,82 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + alpha.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0.01; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "(U|kappai).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "e.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict new file mode 100644 index 00000000000..85996cf9667 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha1 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alphaair 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air new file mode 100644 index 00000000000..de0ac66f780 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 300; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 300; + value uniform 300; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles new file mode 100644 index 00000000000..5762b51bd8e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type inletOutlet; + phi phi.particles; + inletValue uniform 300; + value uniform 300; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles new file mode 100644 index 00000000000..c9b385ccd8b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Theta.particles; +} +// ************************************************************************* // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0; + +referenceLevel 1e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1e-4; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air new file mode 100644 index 00000000000..a9af55993e2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.25 0); + +boundaryField +{ + inlet + { + type interstitialInletVelocity; + inletVelocity uniform (0 0.25 0); + alpha alpha.air; + value $internalField; + } + + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles new file mode 100644 index 00000000000..fa0397ae355 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value uniform (0 0 0); + } + + outlet + { + type fixedValue; + value uniform (0 0 0); + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles new file mode 100644 index 00000000000..cf55161b4a5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles @@ -0,0 +1,6047 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +6000 +( +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +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 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org new file mode 100644 index 00000000000..b28a5a97d9b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air new file mode 100644 index 00000000000..0b5f62a356b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object epsilon.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 10; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air new file mode 100644 index 00000000000..307a3495c93 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air new file mode 100644 index 00000000000..dcb65148ae4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nut.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles new file mode 100644 index 00000000000..6264a273f79 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nut.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p new file mode 100644 index 00000000000..b318305599b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh new file mode 100644 index 00000000000..383649e640b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + + outlet + { + type fixedValue; + value $internalField; + } + + walls + { + type fixedFluxPressure; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g new file mode 100644 index 00000000000..e0ac2653b5b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value ( 0 -9.81 0 ); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties new file mode 100644 index 00000000000..140b966aee2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties @@ -0,0 +1,116 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferTwoPhaseSystem; + +phases (particles air); + +particles +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 3e-4; + } + + alphaMax 0.62; + residualAlpha 1e-6; +} + +air +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1; + } + + residualAlpha 0; +} + +blending +{ + default + { + type none; + continuousPhase air; + } +} + +surfaceTension +( + (particles and air) + { + type constant; + sigma 0; + } +); + +aspectRatio +( +); + +drag +( + (particles in air) + { + type GidaspowErgunWenYu; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (particles in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (particles in air) + { + type RanzMarshall; + residualAlpha 1e-3; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary new file mode 100644 index 00000000000..cda7f49514c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 30; + startFace 11770; + } + outlet + { + type patch; + nFaces 30; + startFace 11800; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 400; + startFace 11830; + } + frontAndBackPlanes + { + type empty; + inGroups 1(empty); + nFaces 12000; + startFace 12230; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air new file mode 100644 index 00000000000..befc0aeae44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles new file mode 100644 index 00000000000..7508b70aa31 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState rhoConst; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 100; + } + equationOfState + { + rho 2500; + } + thermodynamics + { + Cp 6000; + Hf 0; + } + transport + { + mu 0; + Pr 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air new file mode 100644 index 00000000000..1296429b72a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles new file mode 100644 index 00000000000..08671cc51ea --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel phasePressure; + + turbulence on; + printCoeffs on; + + kineticTheoryCoeffs + { + equilibrium on; + + e 0.8; + alphaMax 0.62; + alphaMinFriction 0.5; + + viscosityModel Gidaspow; + conductivityModel Gidaspow; + granularPressureModel Lun; + frictionalStressModel JohnsonJackson; + radialModel SinclairJackson; + + JohnsonJacksonCoeffs + { + Fr 0.05; + eta 2; + p 5; + phi 28.5; + alphaDeltaMin 0.05; + } + } + + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict new file mode 100644 index 00000000000..900f5a585b8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict @@ -0,0 +1,66 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 -0.01) + (0.15 0 -0.01) + (0.15 1 -0.01) + (0 1 -0.01) + (0 0 0.01) + (0.15 0 0.01) + (0.15 1 0.01) + (0 1 0.01) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (30 200 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) + empty frontAndBackPlanes + ( + (0 3 2 1) + (4 5 6 7) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict new file mode 100644 index 00000000000..9718ec32348 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 2; + +deltaT 2e-4; + +writeControl runTime; + +writeInterval 0.01; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable on; + +adjustTimeStep no; + +maxCo 0.9; + +maxDeltaT 1e-05; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.particles + { + mean on; + prime2Mean off; + base time; + } + + U.air + { + mean on; + prime2Mean off; + base time; + } + + alpha.particles + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes new file mode 100644 index 00000000000..62ff44d8e74 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes @@ -0,0 +1,70 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + "div\(phi,alpha.*\)" Gauss vanLeer; + "div\(phir,alpha.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + div((((alpha.air*thermo:rho.air)*nuEff.air)*dev2(T(grad(U.air))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + bounded Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; + bounded uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; + alpha.particles; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution new file mode 100644 index 00000000000..0081c93776b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution @@ -0,0 +1,109 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.*" + { + nAlphaCorr 1; + nAlphaSubCycles 2; + + smoothLimiter 0.1; + + implicitPhasePressure yes; + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-9; + relTol 0; + minIter 1; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "(h|e).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + } + + "Theta.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + } + + "(k|epsilon).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict new file mode 100644 index 00000000000..da4c6ee6f2b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.air 1 + volScalarFieldValue alpha.particles 0 +); + +regions +( + boxToCell + { + box ( 0 0 -0.1 ) ( 0.15 0.5 0.1 ); + fieldValues + ( + volScalarFieldValue alpha.air 0.45 + volScalarFieldValue alpha.particles 0.55 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air new file mode 100644 index 00000000000..94edcc59427 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water new file mode 100644 index 00000000000..36476e1e298 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + outlet + { + type inletOutlet; + phi phi.water; + inletValue uniform 300; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air new file mode 100644 index 00000000000..2a2f95b7409 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water new file mode 100644 index 00000000000..407b341dbe3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air new file mode 100644 index 00000000000..1b1a35684a0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org new file mode 100644 index 00000000000..6832d99db23 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p new file mode 100644 index 00000000000..ae586321875 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p @@ -0,0 +1,35 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh new file mode 100644 index 00000000000..0d154f2bd87 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + outlet + { + type prghPressure; + p $internalField; + value $internalField; + } + + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions new file mode 100644 index 00000000000..5bc7e7ef873 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions @@ -0,0 +1,81 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object fvOptions; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +injector1 +{ + timeStart 0.1; + duration 5; + selectionMode points; + points + ( + (0.075 0.2 0.05) + ); +} + +options +{ + massSource1 + { + type scalarSemiImplicitSource; + + scalarSemiImplicitSourceCoeffs + { + $injector1; + + volumeMode absolute; + injectionRateSuSp + { + thermo:rho.air (1e-3 0); // kg/s + } + } + } + + momentumSource1 + { + type vectorSemiImplicitSource; + + vectorSemiImplicitSourceCoeffs + { + $injector1; + + volumeMode absolute; + injectionRateSuSp + { + U.air ((0 -1e-2 0) 0); // kg*m/s^2 + } + } + } + + energySource1 + { + type scalarSemiImplicitSource; + + scalarSemiImplicitSourceCoeffs + { + $injector1; + + volumeMode absolute; + injectionRateSuSp + { + e.air (500 0); // kg*m^2/s^3 + } + } + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g new file mode 100644 index 00000000000..0cc222ca345 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties new file mode 100644 index 00000000000..efcc993537f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties @@ -0,0 +1,164 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-4; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-4; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + residualAlpha 1e-4; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-3; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-3; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary new file mode 100644 index 00000000000..47889c5cc1a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +3 +( + outlet + { + type patch; + nFaces 25; + startFace 3650; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 175; + startFace 3675; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air new file mode 100644 index 00000000000..befc0aeae44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water new file mode 100644 index 00000000000..c44c005d3b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 18; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Cp 4195; + Hf 0; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air new file mode 100644 index 00000000000..1296429b72a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water new file mode 100644 index 00000000000..7f0d75a82fc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict new file mode 100644 index 00000000000..7d811b77b31 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (1 5 4 0) + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict new file mode 100644 index 00000000000..9855241d112 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 10; + +deltaT 0.005; + +writeControl runTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes new file mode 100644 index 00000000000..ad0ccde96fd --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution new file mode 100644 index 00000000000..350b0c0c1fe --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution @@ -0,0 +1,82 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + alpha.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "e.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict new file mode 100644 index 00000000000..93d742ba74a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.air 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air new file mode 100644 index 00000000000..610cfff17ec --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T1; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + rotor + { + type zeroGradient; + } + + stator + { + type zeroGradient; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water new file mode 100644 index 00000000000..c2ea64d776b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 500; + +boundaryField +{ + rotor + { + type zeroGradient; + } + + stator + { + type zeroGradient; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta new file mode 100644 index 00000000000..b18d202df89 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + rotor + { + type zeroGradient; + } + + stator + { + type zeroGradient; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air new file mode 100644 index 00000000000..7a88b384782 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U1; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + rotor + { + type fixedValue; + value uniform (0 0 0); + } + + stator + { + type fixedValue; + value uniform (0 0 0); + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water new file mode 100644 index 00000000000..b93b8d870de --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + rotor + { + type fixedValue; + value uniform (0 0 0); + } + + stator + { + type fixedValue; + value uniform (0 0 0); + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air new file mode 100644 index 00000000000..b995d77c168 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.5; + +boundaryField +{ + rotor + { + type zeroGradient; + } + + stator + { + type zeroGradient; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p new file mode 100644 index 00000000000..f8b3deba004 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + rotor + { + type calculated; + value $internalField; + } + + stator + { + type calculated; + value $internalField; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh new file mode 100644 index 00000000000..3267f0a6f35 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + rotor + { + type fixedFluxPressure; + value $internalField; + } + + stator + { + type fixedFluxPressure; + value $internalField; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun new file mode 100755 index 00000000000..349ea685ea5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun @@ -0,0 +1,12 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +application=`getApplication` + +runApplication ./makeMesh +runApplication $application + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties new file mode 100644 index 00000000000..c604aa7e2c4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties @@ -0,0 +1,31 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object MRFProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +MRF1 +{ + cellZone rotor; + active yes; + + // Fixed patches (by default they 'move' with the MRF zone) + nonRotatingPatches (); + + origin (0 0 0); + axis (0 0 1); + omega constant 10.472; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g new file mode 100644 index 00000000000..508d6584943 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 0 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties new file mode 100644 index 00000000000..e374b02851d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties @@ -0,0 +1,163 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-4; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-4; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-3; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-3; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary new file mode 100644 index 00000000000..5c2a6cf99c5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + rotor + { + type wall; + inGroups 1(wall); + nFaces 192; + startFace 5952; + } + stator + { + type wall; + inGroups 1(wall); + nFaces 192; + startFace 6144; + } + front + { + type empty; + inGroups 1(empty); + nFaces 3072; + startFace 6336; + } + back + { + type empty; + inGroups 1(empty); + nFaces 3072; + startFace 9408; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air new file mode 100644 index 00000000000..befc0aeae44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water new file mode 100644 index 00000000000..c44c005d3b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 18; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Cp 4195; + Hf 0; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air new file mode 100644 index 00000000000..1296429b72a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water new file mode 100644 index 00000000000..7f0d75a82fc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh new file mode 100755 index 00000000000..4d667956a0a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh @@ -0,0 +1,6 @@ +#!/bin/sh + +m4 < system/blockMeshDict.m4 > system/blockMeshDict +blockMesh +topoSet +setsToZones -noFlipMap diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict new file mode 100644 index 00000000000..0c15d766142 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict @@ -0,0 +1,818 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// General macros to create 2D/extruded-2D meshes + + + + + + + + + + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +// Hub radius + + +// Impeller-tip radius + + +// Baffle-tip radius + + +// Tank radius + + +// MRF region radius + + +// Thickness of 2D slab + + +// Base z + + +// Top z + + +// Number of cells radially between hub and impeller tip + + +// Number of cells radially in each of the two regions between +// impeller and baffle tips + + +// Number of cells radially between baffle tip and tank + + +// Number of cells azimuthally in each of the 8 blocks + + +// Number of cells in the thickness of the slab + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +vertices +( + (0.2 0 0) // Vertex r0b = 0 + (0.2 0 0) // Vertex r0sb = 1 + (0.141421356364228 -0.141421356110391 0) // Vertex r1b = 2 + (3.58979347393082e-10 -0.2 0) // Vertex r2b = 3 + (3.58979347393082e-10 -0.2 0) // Vertex r2sb = 4 + (-0.141421355856554 -0.141421356618065 0) // Vertex r3b = 5 + (-0.2 7.17958694786164e-10 0) // Vertex r4b = 6 + (-0.2 7.17958694786164e-10 0) // Vertex r4sb = 7 + (-0.141421355856554 0.141421356618065 0) // Vertex r5b = 8 + (3.58979347393082e-10 0.2 0) // Vertex r6b = 9 + (3.58979347393082e-10 0.2 0) // Vertex r6sb = 10 + (0.141421356364228 0.141421356110391 0) // Vertex r7b = 11 + + (0.5 0 0) // Vertex rb0b = 12 + (0.353553390910569 -0.353553390275978 0) // Vertex rb1b = 13 + (8.97448368482705e-10 -0.5 0) // Vertex rb2b = 14 + (-0.353553389641386 -0.353553391545162 0) // Vertex rb3b = 15 + (-0.5 1.79489673696541e-09 0) // Vertex rb4b = 16 + (-0.353553389641386 0.353553391545162 0) // Vertex rb5b = 17 + (8.97448368482705e-10 0.5 0) // Vertex rb6b = 18 + (0.353553390910569 0.353553390275978 0) // Vertex rb7b = 19 + + (0.6 0 0) // Vertex ri0b = 20 + (0.424264069092683 -0.424264068331174 0) // Vertex ri1b = 21 + (1.07693804217925e-09 -0.6 0) // Vertex ri2b = 22 + (-0.424264067569663 -0.424264069854194 0) // Vertex ri3b = 23 + (-0.6 2.15387608435849e-09 0) // Vertex ri4b = 24 + (-0.424264067569663 0.424264069854194 0) // Vertex ri5b = 25 + (1.07693804217925e-09 0.6 0) // Vertex ri6b = 26 + (0.424264069092683 0.424264068331174 0) // Vertex ri7b = 27 + + (0.7 0 0) // Vertex Rb0b = 28 + (0.494974747274797 -0.494974746386369 0) // Vertex Rb1b = 29 + (1.25642771587579e-09 -0.7 0) // Vertex Rb2b = 30 + (-0.49497474549794 -0.494974748163226 0) // Vertex Rb3b = 31 + (-0.7 2.51285543175157e-09 0) // Vertex Rb4b = 32 + (-0.49497474549794 0.494974748163226 0) // Vertex Rb5b = 33 + (1.25642771587579e-09 0.7 0) // Vertex Rb6b = 34 + (0.494974747274797 0.494974746386369 0) // Vertex Rb7b = 35 + + (1 0 0) // Vertex R0b = 36 + (0.707106781821139 -0.707106780551956 0) // Vertex R1b = 37 + (0.707106781821139 -0.707106780551956 0) // Vertex R1sb = 38 + (1.79489673696541e-09 -1 0) // Vertex R2b = 39 + (-0.707106779282772 -0.707106783090323 0) // Vertex R3b = 40 + (-0.707106779282772 -0.707106783090323 0) // Vertex R3sb = 41 + (-1 3.58979347393082e-09 0) // Vertex R4b = 42 + (-0.707106779282772 0.707106783090323 0) // Vertex R5b = 43 + (-0.707106779282772 0.707106783090323 0) // Vertex R5sb = 44 + (1.79489673696541e-09 1 0) // Vertex R6b = 45 + (0.707106781821139 0.707106780551956 0) // Vertex R7b = 46 + (0.707106781821139 0.707106780551956 0) // Vertex R7sb = 47 + + (0.2 0 0.1) // Vertex r0t = 48 + (0.2 0 0.1) // Vertex r0st = 49 + (0.141421356364228 -0.141421356110391 0.1) // Vertex r1t = 50 + (3.58979347393082e-10 -0.2 0.1) // Vertex r2t = 51 + (3.58979347393082e-10 -0.2 0.1) // Vertex r2st = 52 + (-0.141421355856554 -0.141421356618065 0.1) // Vertex r3t = 53 + (-0.2 7.17958694786164e-10 0.1) // Vertex r4t = 54 + (-0.2 7.17958694786164e-10 0.1) // Vertex r4st = 55 + (-0.141421355856554 0.141421356618065 0.1) // Vertex r5t = 56 + (3.58979347393082e-10 0.2 0.1) // Vertex r6t = 57 + (3.58979347393082e-10 0.2 0.1) // Vertex r6st = 58 + (0.141421356364228 0.141421356110391 0.1) // Vertex r7t = 59 + + (0.5 0 0.1) // Vertex rb0t = 60 + (0.353553390910569 -0.353553390275978 0.1) // Vertex rb1t = 61 + (8.97448368482705e-10 -0.5 0.1) // Vertex rb2t = 62 + (-0.353553389641386 -0.353553391545162 0.1) // Vertex rb3t = 63 + (-0.5 1.79489673696541e-09 0.1) // Vertex rb4t = 64 + (-0.353553389641386 0.353553391545162 0.1) // Vertex rb5t = 65 + (8.97448368482705e-10 0.5 0.1) // Vertex rb6t = 66 + (0.353553390910569 0.353553390275978 0.1) // Vertex rb7t = 67 + + (0.6 0 0.1) // Vertex ri0t = 68 + (0.424264069092683 -0.424264068331174 0.1) // Vertex ri1t = 69 + (1.07693804217925e-09 -0.6 0.1) // Vertex ri2t = 70 + (-0.424264067569663 -0.424264069854194 0.1) // Vertex ri3t = 71 + (-0.6 2.15387608435849e-09 0.1) // Vertex ri4t = 72 + (-0.424264067569663 0.424264069854194 0.1) // Vertex ri5t = 73 + (1.07693804217925e-09 0.6 0.1) // Vertex ri6t = 74 + (0.424264069092683 0.424264068331174 0.1) // Vertex ri7t = 75 + + (0.7 0 0.1) // Vertex Rb0t = 76 + (0.494974747274797 -0.494974746386369 0.1) // Vertex Rb1t = 77 + (1.25642771587579e-09 -0.7 0.1) // Vertex Rb2t = 78 + (-0.49497474549794 -0.494974748163226 0.1) // Vertex Rb3t = 79 + (-0.7 2.51285543175157e-09 0.1) // Vertex Rb4t = 80 + (-0.49497474549794 0.494974748163226 0.1) // Vertex Rb5t = 81 + (1.25642771587579e-09 0.7 0.1) // Vertex Rb6t = 82 + (0.494974747274797 0.494974746386369 0.1) // Vertex Rb7t = 83 + + (1 0 0.1) // Vertex R0t = 84 + (0.707106781821139 -0.707106780551956 0.1) // Vertex R1t = 85 + (0.707106781821139 -0.707106780551956 0.1) // Vertex R1st = 86 + (1.79489673696541e-09 -1 0.1) // Vertex R2t = 87 + (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3t = 88 + (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3st = 89 + (-1 3.58979347393082e-09 0.1) // Vertex R4t = 90 + (-0.707106779282772 0.707106783090323 0.1) // Vertex R5t = 91 + (-0.707106779282772 0.707106783090323 0.1) // Vertex R5st = 92 + (1.79489673696541e-09 1 0.1) // Vertex R6t = 93 + (0.707106781821139 0.707106780551956 0.1) // Vertex R7t = 94 + (0.707106781821139 0.707106780551956 0.1) // Vertex R7st = 95 +); + +blocks +( + // block0 + hex (0 2 13 12 48 50 61 60) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block1 + hex (2 4 14 13 50 52 62 61) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block2 + hex (3 5 15 14 51 53 63 62) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block3 + hex (5 7 16 15 53 55 64 63) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block4 + hex (6 8 17 16 54 56 65 64) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block5 + hex (8 10 18 17 56 58 66 65) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block6 + hex (9 11 19 18 57 59 67 66) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block7 + hex (11 1 12 19 59 49 60 67) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block0 + hex (12 13 21 20 60 61 69 68) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block1 + hex (13 14 22 21 61 62 70 69) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block2 + hex (14 15 23 22 62 63 71 70) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block3 + hex (15 16 24 23 63 64 72 71) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block4 + hex (16 17 25 24 64 65 73 72) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block5 + hex (17 18 26 25 65 66 74 73) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block6 + hex (18 19 27 26 66 67 75 74) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block7 + hex (19 12 20 27 67 60 68 75) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block0 + hex (20 21 29 28 68 69 77 76) + (12 4 1) + simpleGrading (1 1 1) + + // block1 + hex (21 22 30 29 69 70 78 77) + (12 4 1) + simpleGrading (1 1 1) + + // block2 + hex (22 23 31 30 70 71 79 78) + (12 4 1) + simpleGrading (1 1 1) + + // block3 + hex (23 24 32 31 71 72 80 79) + (12 4 1) + simpleGrading (1 1 1) + + // block4 + hex (24 25 33 32 72 73 81 80) + (12 4 1) + simpleGrading (1 1 1) + + // block5 + hex (25 26 34 33 73 74 82 81) + (12 4 1) + simpleGrading (1 1 1) + + // block6 + hex (26 27 35 34 74 75 83 82) + (12 4 1) + simpleGrading (1 1 1) + + // block7 + hex (27 20 28 35 75 68 76 83) + (12 4 1) + simpleGrading (1 1 1) + + // block0 + hex (28 29 38 36 76 77 86 84) + (12 12 1) + simpleGrading (1 1 1) + + // block1 + hex (29 30 39 37 77 78 87 85) + (12 12 1) + simpleGrading (1 1 1) + + // block2 + hex (30 31 41 39 78 79 89 87) + (12 12 1) + simpleGrading (1 1 1) + + // block3 + hex (31 32 42 40 79 80 90 88) + (12 12 1) + simpleGrading (1 1 1) + + // block4 + hex (32 33 44 42 80 81 92 90) + (12 12 1) + simpleGrading (1 1 1) + + // block5 + hex (33 34 45 43 81 82 93 91) + (12 12 1) + simpleGrading (1 1 1) + + // block6 + hex (34 35 47 45 82 83 95 93) + (12 12 1) + simpleGrading (1 1 1) + + // block7 + hex (35 28 36 46 83 76 84 94) + (12 12 1) + simpleGrading (1 1 1) +); + +edges +( + arc 0 2 (0.184775906536601 -0.0765366863901046 0) + arc 2 4 (0.0765366867217582 -0.184775906399226 0) + arc 3 5 (-0.0765366860584508 -0.184775906673977 0) + arc 5 7 (-0.18477590626185 -0.0765366870534118 0) + arc 6 8 (-0.18477590626185 0.0765366870534118 0) + arc 8 10 (-0.0765366860584508 0.184775906673977 0) + arc 9 11 (0.0765366867217582 0.184775906399226 0) + arc 11 1 (0.184775906536601 0.0765366863901046 0) + + arc 12 13 (0.461939766341503 -0.191341715975262 0) + arc 13 14 (0.191341716804395 -0.461939765998065 0) + arc 14 15 (-0.191341715146127 -0.461939766684942 0) + arc 15 16 (-0.461939765654626 -0.19134171763353 0) + arc 16 17 (-0.461939765654626 0.19134171763353 0) + arc 17 18 (-0.191341715146127 0.461939766684942 0) + arc 18 19 (0.191341716804395 0.461939765998065 0) + arc 19 12 (0.461939766341503 0.191341715975262 0) + + arc 20 21 (0.554327719609804 -0.229610059170314 0) + arc 21 22 (0.229610060165275 -0.554327719197677 0) + arc 22 23 (-0.229610058175352 -0.55432772002193 0) + arc 23 24 (-0.554327718785551 -0.229610061160235 0) + arc 24 25 (-0.554327718785551 0.229610061160235 0) + arc 25 26 (-0.229610058175352 0.55432772002193 0) + arc 26 27 (0.229610060165275 0.554327719197677 0) + arc 27 20 (0.554327719609804 0.229610059170314 0) + + arc 28 29 (0.646715672878104 -0.267878402365366 0) + arc 29 30 (0.267878403526154 -0.64671567239729 0) + arc 30 31 (-0.267878401204578 -0.646715673358918 0) + arc 31 32 (-0.646715671916476 -0.267878404686941 0) + arc 32 33 (-0.646715671916476 0.267878404686941 0) + arc 33 34 (-0.267878401204578 0.646715673358918 0) + arc 34 35 (0.267878403526154 0.64671567239729 0) + arc 35 28 (0.646715672878104 0.267878402365366 0) + + arc 36 38 (0.923879532683006 -0.382683431950523 0) + arc 37 39 (0.382683433608791 -0.923879531996129 0) + arc 39 41 (-0.382683430292254 -0.923879533369883 0) + arc 40 42 (-0.923879531309252 -0.382683435267059 0) + arc 42 44 (-0.923879531309252 0.382683435267059 0) + arc 43 45 (-0.382683430292254 0.923879533369883 0) + arc 45 47 (0.382683433608791 0.923879531996129 0) + arc 46 36 (0.923879532683006 0.382683431950523 0) + + arc 48 50 (0.184775906536601 -0.0765366863901046 0.1) + arc 50 52 (0.0765366867217582 -0.184775906399226 0.1) + arc 51 53 (-0.0765366860584508 -0.184775906673977 0.1) + arc 53 55 (-0.18477590626185 -0.0765366870534118 0.1) + arc 54 56 (-0.18477590626185 0.0765366870534118 0.1) + arc 56 58 (-0.0765366860584508 0.184775906673977 0.1) + arc 57 59 (0.0765366867217582 0.184775906399226 0.1) + arc 59 49 (0.184775906536601 0.0765366863901046 0.1) + + arc 60 61 (0.461939766341503 -0.191341715975262 0.1) + arc 61 62 (0.191341716804395 -0.461939765998065 0.1) + arc 62 63 (-0.191341715146127 -0.461939766684942 0.1) + arc 63 64 (-0.461939765654626 -0.19134171763353 0.1) + arc 64 65 (-0.461939765654626 0.19134171763353 0.1) + arc 65 66 (-0.191341715146127 0.461939766684942 0.1) + arc 66 67 (0.191341716804395 0.461939765998065 0.1) + arc 67 60 (0.461939766341503 0.191341715975262 0.1) + + arc 68 69 (0.554327719609804 -0.229610059170314 0.1) + arc 69 70 (0.229610060165275 -0.554327719197677 0.1) + arc 70 71 (-0.229610058175352 -0.55432772002193 0.1) + arc 71 72 (-0.554327718785551 -0.229610061160235 0.1) + arc 72 73 (-0.554327718785551 0.229610061160235 0.1) + arc 73 74 (-0.229610058175352 0.55432772002193 0.1) + arc 74 75 (0.229610060165275 0.554327719197677 0.1) + arc 75 68 (0.554327719609804 0.229610059170314 0.1) + + arc 76 77 (0.646715672878104 -0.267878402365366 0.1) + arc 77 78 (0.267878403526154 -0.64671567239729 0.1) + arc 78 79 (-0.267878401204578 -0.646715673358918 0.1) + arc 79 80 (-0.646715671916476 -0.267878404686941 0.1) + arc 80 81 (-0.646715671916476 0.267878404686941 0.1) + arc 81 82 (-0.267878401204578 0.646715673358918 0.1) + arc 82 83 (0.267878403526154 0.64671567239729 0.1) + arc 83 76 (0.646715672878104 0.267878402365366 0.1) + + arc 84 86 (0.923879532683006 -0.382683431950523 0.1) + arc 85 87 (0.382683433608791 -0.923879531996129 0.1) + arc 87 89 (-0.382683430292254 -0.923879533369883 0.1) + arc 88 90 (-0.923879531309252 -0.382683435267059 0.1) + arc 90 92 (-0.923879531309252 0.382683435267059 0.1) + arc 91 93 (-0.382683430292254 0.923879533369883 0.1) + arc 93 95 (0.382683433608791 0.923879531996129 0.1) + arc 94 84 (0.923879532683006 0.382683431950523 0.1) +); + +patches +( + wall rotor + ( + (0 2 50 48) + (2 4 52 50) + (3 5 53 51) + (5 7 55 53) + (6 8 56 54) + (8 10 58 56) + (9 11 59 57) + (11 1 49 59) + + (0 12 60 48) + (1 12 60 49) + + (3 14 62 51) + (4 14 62 52) + + (6 16 64 54) + (7 16 64 55) + + (9 18 66 57) + (10 18 66 58) + ) + + wall stator + ( + (36 38 86 84) + (37 39 87 85) + (39 41 89 87) + (40 42 90 88) + (42 44 92 90) + (43 45 93 91) + (45 47 95 93) + (46 36 84 94) + + (37 29 77 85) + (38 29 77 86) + + (40 31 79 88) + (41 31 79 89) + + (43 33 81 91) + (44 33 81 92) + + (46 35 83 94) + (47 35 83 95) + ) + + empty front + ( + (48 50 61 60) + (50 52 62 61) + (51 53 63 62) + (53 55 64 63) + (54 56 65 64) + (56 58 66 65) + (57 59 67 66) + (59 49 60 67) + (60 61 69 68) + (61 62 70 69) + (62 63 71 70) + (63 64 72 71) + (64 65 73 72) + (65 66 74 73) + (66 67 75 74) + (67 60 68 75) + (68 69 77 76) + (69 70 78 77) + (70 71 79 78) + (71 72 80 79) + (72 73 81 80) + (73 74 82 81) + (74 75 83 82) + (75 68 76 83) + (76 77 86 84) + (77 78 87 85) + (78 79 89 87) + (79 80 90 88) + (80 81 92 90) + (81 82 93 91) + (82 83 95 93) + (83 76 84 94) + ) + + empty back + ( + (0 12 13 2) + (2 13 14 4) + (3 14 15 5) + (5 15 16 7) + (6 16 17 8) + (8 17 18 10) + (9 18 19 11) + (11 19 12 1) + (12 20 21 13) + (13 21 22 14) + (14 22 23 15) + (15 23 24 16) + (16 24 25 17) + (17 25 26 18) + (18 26 27 19) + (19 27 20 12) + (20 28 29 21) + (21 29 30 22) + (22 30 31 23) + (23 31 32 24) + (24 32 33 25) + (25 33 34 26) + (26 34 35 27) + (27 35 28 20) + (28 36 38 29) + (29 37 39 30) + (30 39 41 31) + (31 40 42 32) + (32 42 44 33) + (33 43 45 34) + (34 45 47 35) + (35 46 36 28) + ) +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 new file mode 100644 index 00000000000..a93868498ba --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 @@ -0,0 +1,818 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + `format' ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// General macros to create 2D/extruded-2D meshes + +changecom(//)changequote([,]) +define(calc, [esyscmd(perl -e 'print ($1)')]) +define(VCOUNT, 0) +define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))]) +define(pi, 3.14159265) + +define(hex2D, hex ($1b $2b $3b $4b $1t $2t $3t $4t)) +define(quad2D, ($1b $2b $2t $1t)) +define(frontQuad, ($1t $2t $3t $4t)) +define(backQuad, ($1b $4b $3b $2b)) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +// Hub radius +define(r, 0.2) + +// Impeller-tip radius +define(rb, 0.5) + +// Baffle-tip radius +define(Rb, 0.7) + +// Tank radius +define(R, 1) + +// MRF region radius +define(ri, calc(0.5*(rb + Rb))) + +// Thickness of 2D slab +define(z, 0.1) + +// Base z +define(Zb, 0) + +// Top z +define(Zt, calc(Zb + z)) + +// Number of cells radially between hub and impeller tip +define(Nr, 12) + +// Number of cells radially in each of the two regions between +// impeller and baffle tips +define(Ni, 4) + +// Number of cells radially between baffle tip and tank +define(NR, 12) + +// Number of cells azimuthally in each of the 8 blocks +define(Na, 12) + +// Number of cells in the thickness of the slab +define(Nz, 1) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +define(vert, (x$1$2 y$1$2 $3)) +define(evert, (ex$1$2 ey$1$2 $3)) + +define(a0, 0) +define(a1, -45) +define(a2, -90) +define(a3, -135) +define(a4, 180) +define(a5, 135) +define(a6, 90) +define(a7, 45) + +define(ea0, -22.5) +define(ea1, -67.5) +define(ea2, -112.5) +define(ea3, -157.5) +define(ea4, 157.5) +define(ea5, 112.5) +define(ea6, 67.5) +define(ea7, 22.5) + +define(ca0, calc(cos((pi/180)*a0))) +define(ca1, calc(cos((pi/180)*a1))) +define(ca2, calc(cos((pi/180)*a2))) +define(ca3, calc(cos((pi/180)*a3))) +define(ca4, calc(cos((pi/180)*a4))) +define(ca5, calc(cos((pi/180)*a5))) +define(ca6, calc(cos((pi/180)*a6))) +define(ca7, calc(cos((pi/180)*a7))) + +define(sa0, calc(sin((pi/180)*a0))) +define(sa1, calc(sin((pi/180)*a1))) +define(sa2, calc(sin((pi/180)*a2))) +define(sa3, calc(sin((pi/180)*a3))) +define(sa4, calc(sin((pi/180)*a4))) +define(sa5, calc(sin((pi/180)*a5))) +define(sa6, calc(sin((pi/180)*a6))) +define(sa7, calc(sin((pi/180)*a7))) + +define(cea0, calc(cos((pi/180)*ea0))) +define(cea1, calc(cos((pi/180)*ea1))) +define(cea2, calc(cos((pi/180)*ea2))) +define(cea3, calc(cos((pi/180)*ea3))) +define(cea4, calc(cos((pi/180)*ea4))) +define(cea5, calc(cos((pi/180)*ea5))) +define(cea6, calc(cos((pi/180)*ea6))) +define(cea7, calc(cos((pi/180)*ea7))) + +define(sea0, calc(sin((pi/180)*ea0))) +define(sea1, calc(sin((pi/180)*ea1))) +define(sea2, calc(sin((pi/180)*ea2))) +define(sea3, calc(sin((pi/180)*ea3))) +define(sea4, calc(sin((pi/180)*ea4))) +define(sea5, calc(sin((pi/180)*ea5))) +define(sea6, calc(sin((pi/180)*ea6))) +define(sea7, calc(sin((pi/180)*ea7))) + +define(x00, calc(r*ca0)) +define(x01, calc(r*ca1)) +define(x02, calc(r*ca2)) +define(x03, calc(r*ca3)) +define(x04, calc(r*ca4)) +define(x05, calc(r*ca5)) +define(x06, calc(r*ca6)) +define(x07, calc(r*ca7)) + +define(x10, calc(rb*ca0)) +define(x11, calc(rb*ca1)) +define(x12, calc(rb*ca2)) +define(x13, calc(rb*ca3)) +define(x14, calc(rb*ca4)) +define(x15, calc(rb*ca5)) +define(x16, calc(rb*ca6)) +define(x17, calc(rb*ca7)) + +define(x20, calc(ri*ca0)) +define(x21, calc(ri*ca1)) +define(x22, calc(ri*ca2)) +define(x23, calc(ri*ca3)) +define(x24, calc(ri*ca4)) +define(x25, calc(ri*ca5)) +define(x26, calc(ri*ca6)) +define(x27, calc(ri*ca7)) + +define(x30, calc(Rb*ca0)) +define(x31, calc(Rb*ca1)) +define(x32, calc(Rb*ca2)) +define(x33, calc(Rb*ca3)) +define(x34, calc(Rb*ca4)) +define(x35, calc(Rb*ca5)) +define(x36, calc(Rb*ca6)) +define(x37, calc(Rb*ca7)) + +define(x40, calc(R*ca0)) +define(x41, calc(R*ca1)) +define(x42, calc(R*ca2)) +define(x43, calc(R*ca3)) +define(x44, calc(R*ca4)) +define(x45, calc(R*ca5)) +define(x46, calc(R*ca6)) +define(x47, calc(R*ca7)) + +define(y00, calc(r*sa0)) +define(y01, calc(r*sa1)) +define(y02, calc(r*sa2)) +define(y03, calc(r*sa3)) +define(y04, calc(r*sa4)) +define(y05, calc(r*sa5)) +define(y06, calc(r*sa6)) +define(y07, calc(r*sa7)) + +define(y10, calc(rb*sa0)) +define(y11, calc(rb*sa1)) +define(y12, calc(rb*sa2)) +define(y13, calc(rb*sa3)) +define(y14, calc(rb*sa4)) +define(y15, calc(rb*sa5)) +define(y16, calc(rb*sa6)) +define(y17, calc(rb*sa7)) + +define(y20, calc(ri*sa0)) +define(y21, calc(ri*sa1)) +define(y22, calc(ri*sa2)) +define(y23, calc(ri*sa3)) +define(y24, calc(ri*sa4)) +define(y25, calc(ri*sa5)) +define(y26, calc(ri*sa6)) +define(y27, calc(ri*sa7)) + +define(y30, calc(Rb*sa0)) +define(y31, calc(Rb*sa1)) +define(y32, calc(Rb*sa2)) +define(y33, calc(Rb*sa3)) +define(y34, calc(Rb*sa4)) +define(y35, calc(Rb*sa5)) +define(y36, calc(Rb*sa6)) +define(y37, calc(Rb*sa7)) + +define(y40, calc(R*sa0)) +define(y41, calc(R*sa1)) +define(y42, calc(R*sa2)) +define(y43, calc(R*sa3)) +define(y44, calc(R*sa4)) +define(y45, calc(R*sa5)) +define(y46, calc(R*sa6)) +define(y47, calc(R*sa7)) + +define(ex00, calc(r*cea0)) +define(ex01, calc(r*cea1)) +define(ex02, calc(r*cea2)) +define(ex03, calc(r*cea3)) +define(ex04, calc(r*cea4)) +define(ex05, calc(r*cea5)) +define(ex06, calc(r*cea6)) +define(ex07, calc(r*cea7)) + +define(ex10, calc(rb*cea0)) +define(ex11, calc(rb*cea1)) +define(ex12, calc(rb*cea2)) +define(ex13, calc(rb*cea3)) +define(ex14, calc(rb*cea4)) +define(ex15, calc(rb*cea5)) +define(ex16, calc(rb*cea6)) +define(ex17, calc(rb*cea7)) + +define(ex20, calc(ri*cea0)) +define(ex21, calc(ri*cea1)) +define(ex22, calc(ri*cea2)) +define(ex23, calc(ri*cea3)) +define(ex24, calc(ri*cea4)) +define(ex25, calc(ri*cea5)) +define(ex26, calc(ri*cea6)) +define(ex27, calc(ri*cea7)) + +define(ex30, calc(Rb*cea0)) +define(ex31, calc(Rb*cea1)) +define(ex32, calc(Rb*cea2)) +define(ex33, calc(Rb*cea3)) +define(ex34, calc(Rb*cea4)) +define(ex35, calc(Rb*cea5)) +define(ex36, calc(Rb*cea6)) +define(ex37, calc(Rb*cea7)) + +define(ex40, calc(R*cea0)) +define(ex41, calc(R*cea1)) +define(ex42, calc(R*cea2)) +define(ex43, calc(R*cea3)) +define(ex44, calc(R*cea4)) +define(ex45, calc(R*cea5)) +define(ex46, calc(R*cea6)) +define(ex47, calc(R*cea7)) + +define(ey00, calc(r*sea0)) +define(ey01, calc(r*sea1)) +define(ey02, calc(r*sea2)) +define(ey03, calc(r*sea3)) +define(ey04, calc(r*sea4)) +define(ey05, calc(r*sea5)) +define(ey06, calc(r*sea6)) +define(ey07, calc(r*sea7)) + +define(ey10, calc(rb*sea0)) +define(ey11, calc(rb*sea1)) +define(ey12, calc(rb*sea2)) +define(ey13, calc(rb*sea3)) +define(ey14, calc(rb*sea4)) +define(ey15, calc(rb*sea5)) +define(ey16, calc(rb*sea6)) +define(ey17, calc(rb*sea7)) + +define(ey20, calc(ri*sea0)) +define(ey21, calc(ri*sea1)) +define(ey22, calc(ri*sea2)) +define(ey23, calc(ri*sea3)) +define(ey24, calc(ri*sea4)) +define(ey25, calc(ri*sea5)) +define(ey26, calc(ri*sea6)) +define(ey27, calc(ri*sea7)) + +define(ey30, calc(Rb*sea0)) +define(ey31, calc(Rb*sea1)) +define(ey32, calc(Rb*sea2)) +define(ey33, calc(Rb*sea3)) +define(ey34, calc(Rb*sea4)) +define(ey35, calc(Rb*sea5)) +define(ey36, calc(Rb*sea6)) +define(ey37, calc(Rb*sea7)) + +define(ey40, calc(R*sea0)) +define(ey41, calc(R*sea1)) +define(ey42, calc(R*sea2)) +define(ey43, calc(R*sea3)) +define(ey44, calc(R*sea4)) +define(ey45, calc(R*sea5)) +define(ey46, calc(R*sea6)) +define(ey47, calc(R*sea7)) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +vertices +( + vert(0, 0, Zb) vlabel(r0b) + vert(0, 0, Zb) vlabel(r0sb) + vert(0, 1, Zb) vlabel(r1b) + vert(0, 2, Zb) vlabel(r2b) + vert(0, 2, Zb) vlabel(r2sb) + vert(0, 3, Zb) vlabel(r3b) + vert(0, 4, Zb) vlabel(r4b) + vert(0, 4, Zb) vlabel(r4sb) + vert(0, 5, Zb) vlabel(r5b) + vert(0, 6, Zb) vlabel(r6b) + vert(0, 6, Zb) vlabel(r6sb) + vert(0, 7, Zb) vlabel(r7b) + + vert(1, 0, Zb) vlabel(rb0b) + vert(1, 1, Zb) vlabel(rb1b) + vert(1, 2, Zb) vlabel(rb2b) + vert(1, 3, Zb) vlabel(rb3b) + vert(1, 4, Zb) vlabel(rb4b) + vert(1, 5, Zb) vlabel(rb5b) + vert(1, 6, Zb) vlabel(rb6b) + vert(1, 7, Zb) vlabel(rb7b) + + vert(2, 0, Zb) vlabel(ri0b) + vert(2, 1, Zb) vlabel(ri1b) + vert(2, 2, Zb) vlabel(ri2b) + vert(2, 3, Zb) vlabel(ri3b) + vert(2, 4, Zb) vlabel(ri4b) + vert(2, 5, Zb) vlabel(ri5b) + vert(2, 6, Zb) vlabel(ri6b) + vert(2, 7, Zb) vlabel(ri7b) + + vert(3, 0, Zb) vlabel(Rb0b) + vert(3, 1, Zb) vlabel(Rb1b) + vert(3, 2, Zb) vlabel(Rb2b) + vert(3, 3, Zb) vlabel(Rb3b) + vert(3, 4, Zb) vlabel(Rb4b) + vert(3, 5, Zb) vlabel(Rb5b) + vert(3, 6, Zb) vlabel(Rb6b) + vert(3, 7, Zb) vlabel(Rb7b) + + vert(4, 0, Zb) vlabel(R0b) + vert(4, 1, Zb) vlabel(R1b) + vert(4, 1, Zb) vlabel(R1sb) + vert(4, 2, Zb) vlabel(R2b) + vert(4, 3, Zb) vlabel(R3b) + vert(4, 3, Zb) vlabel(R3sb) + vert(4, 4, Zb) vlabel(R4b) + vert(4, 5, Zb) vlabel(R5b) + vert(4, 5, Zb) vlabel(R5sb) + vert(4, 6, Zb) vlabel(R6b) + vert(4, 7, Zb) vlabel(R7b) + vert(4, 7, Zb) vlabel(R7sb) + + vert(0, 0, Zt) vlabel(r0t) + vert(0, 0, Zt) vlabel(r0st) + vert(0, 1, Zt) vlabel(r1t) + vert(0, 2, Zt) vlabel(r2t) + vert(0, 2, Zt) vlabel(r2st) + vert(0, 3, Zt) vlabel(r3t) + vert(0, 4, Zt) vlabel(r4t) + vert(0, 4, Zt) vlabel(r4st) + vert(0, 5, Zt) vlabel(r5t) + vert(0, 6, Zt) vlabel(r6t) + vert(0, 6, Zt) vlabel(r6st) + vert(0, 7, Zt) vlabel(r7t) + + vert(1, 0, Zt) vlabel(rb0t) + vert(1, 1, Zt) vlabel(rb1t) + vert(1, 2, Zt) vlabel(rb2t) + vert(1, 3, Zt) vlabel(rb3t) + vert(1, 4, Zt) vlabel(rb4t) + vert(1, 5, Zt) vlabel(rb5t) + vert(1, 6, Zt) vlabel(rb6t) + vert(1, 7, Zt) vlabel(rb7t) + + vert(2, 0, Zt) vlabel(ri0t) + vert(2, 1, Zt) vlabel(ri1t) + vert(2, 2, Zt) vlabel(ri2t) + vert(2, 3, Zt) vlabel(ri3t) + vert(2, 4, Zt) vlabel(ri4t) + vert(2, 5, Zt) vlabel(ri5t) + vert(2, 6, Zt) vlabel(ri6t) + vert(2, 7, Zt) vlabel(ri7t) + + vert(3, 0, Zt) vlabel(Rb0t) + vert(3, 1, Zt) vlabel(Rb1t) + vert(3, 2, Zt) vlabel(Rb2t) + vert(3, 3, Zt) vlabel(Rb3t) + vert(3, 4, Zt) vlabel(Rb4t) + vert(3, 5, Zt) vlabel(Rb5t) + vert(3, 6, Zt) vlabel(Rb6t) + vert(3, 7, Zt) vlabel(Rb7t) + + vert(4, 0, Zt) vlabel(R0t) + vert(4, 1, Zt) vlabel(R1t) + vert(4, 1, Zt) vlabel(R1st) + vert(4, 2, Zt) vlabel(R2t) + vert(4, 3, Zt) vlabel(R3t) + vert(4, 3, Zt) vlabel(R3st) + vert(4, 4, Zt) vlabel(R4t) + vert(4, 5, Zt) vlabel(R5t) + vert(4, 5, Zt) vlabel(R5st) + vert(4, 6, Zt) vlabel(R6t) + vert(4, 7, Zt) vlabel(R7t) + vert(4, 7, Zt) vlabel(R7st) +); + +blocks +( + // block0 + hex2D(r0, r1, rb1, rb0) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block1 + hex2D(r1, r2s, rb2, rb1) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block2 + hex2D(r2, r3, rb3, rb2) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block3 + hex2D(r3, r4s, rb4, rb3) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block4 + hex2D(r4, r5, rb5, rb4) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block5 + hex2D(r5, r6s, rb6, rb5) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block6 + hex2D(r6, r7, rb7, rb6) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block7 + hex2D(r7, r0s, rb0, rb7) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block0 + hex2D(rb0, rb1, ri1, ri0) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block1 + hex2D(rb1, rb2, ri2, ri1) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block2 + hex2D(rb2, rb3, ri3, ri2) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block3 + hex2D(rb3, rb4, ri4, ri3) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block4 + hex2D(rb4, rb5, ri5, ri4) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block5 + hex2D(rb5, rb6, ri6, ri5) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block6 + hex2D(rb6, rb7, ri7, ri6) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block7 + hex2D(rb7, rb0, ri0, ri7) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block0 + hex2D(ri0, ri1, Rb1, Rb0) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block1 + hex2D(ri1, ri2, Rb2, Rb1) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block2 + hex2D(ri2, ri3, Rb3, Rb2) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block3 + hex2D(ri3, ri4, Rb4, Rb3) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block4 + hex2D(ri4, ri5, Rb5, Rb4) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block5 + hex2D(ri5, ri6, Rb6, Rb5) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block6 + hex2D(ri6, ri7, Rb7, Rb6) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block7 + hex2D(ri7, ri0, Rb0, Rb7) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block0 + hex2D(Rb0, Rb1, R1s, R0) + (Na NR Nz) + simpleGrading (1 1 1) + + // block1 + hex2D(Rb1, Rb2, R2, R1) + (Na NR Nz) + simpleGrading (1 1 1) + + // block2 + hex2D(Rb2, Rb3, R3s, R2) + (Na NR Nz) + simpleGrading (1 1 1) + + // block3 + hex2D(Rb3, Rb4, R4, R3) + (Na NR Nz) + simpleGrading (1 1 1) + + // block4 + hex2D(Rb4, Rb5, R5s, R4) + (Na NR Nz) + simpleGrading (1 1 1) + + // block5 + hex2D(Rb5, Rb6, R6, R5) + (Na NR Nz) + simpleGrading (1 1 1) + + // block6 + hex2D(Rb6, Rb7, R7s, R6) + (Na NR Nz) + simpleGrading (1 1 1) + + // block7 + hex2D(Rb7, Rb0, R0, R7) + (Na NR Nz) + simpleGrading (1 1 1) +); + +edges +( + arc r0b r1b evert(0, 0, Zb) + arc r1b r2sb evert(0, 1, Zb) + arc r2b r3b evert(0, 2, Zb) + arc r3b r4sb evert(0, 3, Zb) + arc r4b r5b evert(0, 4, Zb) + arc r5b r6sb evert(0, 5, Zb) + arc r6b r7b evert(0, 6, Zb) + arc r7b r0sb evert(0, 7, Zb) + + arc rb0b rb1b evert(1, 0, Zb) + arc rb1b rb2b evert(1, 1, Zb) + arc rb2b rb3b evert(1, 2, Zb) + arc rb3b rb4b evert(1, 3, Zb) + arc rb4b rb5b evert(1, 4, Zb) + arc rb5b rb6b evert(1, 5, Zb) + arc rb6b rb7b evert(1, 6, Zb) + arc rb7b rb0b evert(1, 7, Zb) + + arc ri0b ri1b evert(2, 0, Zb) + arc ri1b ri2b evert(2, 1, Zb) + arc ri2b ri3b evert(2, 2, Zb) + arc ri3b ri4b evert(2, 3, Zb) + arc ri4b ri5b evert(2, 4, Zb) + arc ri5b ri6b evert(2, 5, Zb) + arc ri6b ri7b evert(2, 6, Zb) + arc ri7b ri0b evert(2, 7, Zb) + + arc Rb0b Rb1b evert(3, 0, Zb) + arc Rb1b Rb2b evert(3, 1, Zb) + arc Rb2b Rb3b evert(3, 2, Zb) + arc Rb3b Rb4b evert(3, 3, Zb) + arc Rb4b Rb5b evert(3, 4, Zb) + arc Rb5b Rb6b evert(3, 5, Zb) + arc Rb6b Rb7b evert(3, 6, Zb) + arc Rb7b Rb0b evert(3, 7, Zb) + + arc R0b R1sb evert(4, 0, Zb) + arc R1b R2b evert(4, 1, Zb) + arc R2b R3sb evert(4, 2, Zb) + arc R3b R4b evert(4, 3, Zb) + arc R4b R5sb evert(4, 4, Zb) + arc R5b R6b evert(4, 5, Zb) + arc R6b R7sb evert(4, 6, Zb) + arc R7b R0b evert(4, 7, Zb) + + arc r0t r1t evert(0, 0, Zt) + arc r1t r2st evert(0, 1, Zt) + arc r2t r3t evert(0, 2, Zt) + arc r3t r4st evert(0, 3, Zt) + arc r4t r5t evert(0, 4, Zt) + arc r5t r6st evert(0, 5, Zt) + arc r6t r7t evert(0, 6, Zt) + arc r7t r0st evert(0, 7, Zt) + + arc rb0t rb1t evert(1, 0, Zt) + arc rb1t rb2t evert(1, 1, Zt) + arc rb2t rb3t evert(1, 2, Zt) + arc rb3t rb4t evert(1, 3, Zt) + arc rb4t rb5t evert(1, 4, Zt) + arc rb5t rb6t evert(1, 5, Zt) + arc rb6t rb7t evert(1, 6, Zt) + arc rb7t rb0t evert(1, 7, Zt) + + arc ri0t ri1t evert(2, 0, Zt) + arc ri1t ri2t evert(2, 1, Zt) + arc ri2t ri3t evert(2, 2, Zt) + arc ri3t ri4t evert(2, 3, Zt) + arc ri4t ri5t evert(2, 4, Zt) + arc ri5t ri6t evert(2, 5, Zt) + arc ri6t ri7t evert(2, 6, Zt) + arc ri7t ri0t evert(2, 7, Zt) + + arc Rb0t Rb1t evert(3, 0, Zt) + arc Rb1t Rb2t evert(3, 1, Zt) + arc Rb2t Rb3t evert(3, 2, Zt) + arc Rb3t Rb4t evert(3, 3, Zt) + arc Rb4t Rb5t evert(3, 4, Zt) + arc Rb5t Rb6t evert(3, 5, Zt) + arc Rb6t Rb7t evert(3, 6, Zt) + arc Rb7t Rb0t evert(3, 7, Zt) + + arc R0t R1st evert(4, 0, Zt) + arc R1t R2t evert(4, 1, Zt) + arc R2t R3st evert(4, 2, Zt) + arc R3t R4t evert(4, 3, Zt) + arc R4t R5st evert(4, 4, Zt) + arc R5t R6t evert(4, 5, Zt) + arc R6t R7st evert(4, 6, Zt) + arc R7t R0t evert(4, 7, Zt) +); + +patches +( + wall rotor + ( + quad2D(r0, r1) + quad2D(r1, r2s) + quad2D(r2, r3) + quad2D(r3, r4s) + quad2D(r4, r5) + quad2D(r5, r6s) + quad2D(r6, r7) + quad2D(r7, r0s) + + quad2D(r0, rb0) + quad2D(r0s, rb0) + + quad2D(r2, rb2) + quad2D(r2s, rb2) + + quad2D(r4, rb4) + quad2D(r4s, rb4) + + quad2D(r6, rb6) + quad2D(r6s, rb6) + ) + + wall stator + ( + quad2D(R0, R1s) + quad2D(R1, R2) + quad2D(R2, R3s) + quad2D(R3, R4) + quad2D(R4, R5s) + quad2D(R5, R6) + quad2D(R6, R7s) + quad2D(R7, R0) + + quad2D(R1, Rb1) + quad2D(R1s, Rb1) + + quad2D(R3, Rb3) + quad2D(R3s, Rb3) + + quad2D(R5, Rb5) + quad2D(R5s, Rb5) + + quad2D(R7, Rb7) + quad2D(R7s, Rb7) + ) + + empty front + ( + frontQuad(r0, r1, rb1, rb0) + frontQuad(r1, r2s, rb2, rb1) + frontQuad(r2, r3, rb3, rb2) + frontQuad(r3, r4s, rb4, rb3) + frontQuad(r4, r5, rb5, rb4) + frontQuad(r5, r6s, rb6, rb5) + frontQuad(r6, r7, rb7, rb6) + frontQuad(r7, r0s, rb0, rb7) + frontQuad(rb0, rb1, ri1, ri0) + frontQuad(rb1, rb2, ri2, ri1) + frontQuad(rb2, rb3, ri3, ri2) + frontQuad(rb3, rb4, ri4, ri3) + frontQuad(rb4, rb5, ri5, ri4) + frontQuad(rb5, rb6, ri6, ri5) + frontQuad(rb6, rb7, ri7, ri6) + frontQuad(rb7, rb0, ri0, ri7) + frontQuad(ri0, ri1, Rb1, Rb0) + frontQuad(ri1, ri2, Rb2, Rb1) + frontQuad(ri2, ri3, Rb3, Rb2) + frontQuad(ri3, ri4, Rb4, Rb3) + frontQuad(ri4, ri5, Rb5, Rb4) + frontQuad(ri5, ri6, Rb6, Rb5) + frontQuad(ri6, ri7, Rb7, Rb6) + frontQuad(ri7, ri0, Rb0, Rb7) + frontQuad(Rb0, Rb1, R1s, R0) + frontQuad(Rb1, Rb2, R2, R1) + frontQuad(Rb2, Rb3, R3s, R2) + frontQuad(Rb3, Rb4, R4, R3) + frontQuad(Rb4, Rb5, R5s, R4) + frontQuad(Rb5, Rb6, R6, R5) + frontQuad(Rb6, Rb7, R7s, R6) + frontQuad(Rb7, Rb0, R0, R7) + ) + + empty back + ( + backQuad(r0, r1, rb1, rb0) + backQuad(r1, r2s, rb2, rb1) + backQuad(r2, r3, rb3, rb2) + backQuad(r3, r4s, rb4, rb3) + backQuad(r4, r5, rb5, rb4) + backQuad(r5, r6s, rb6, rb5) + backQuad(r6, r7, rb7, rb6) + backQuad(r7, r0s, rb0, rb7) + backQuad(rb0, rb1, ri1, ri0) + backQuad(rb1, rb2, ri2, ri1) + backQuad(rb2, rb3, ri3, ri2) + backQuad(rb3, rb4, ri4, ri3) + backQuad(rb4, rb5, ri5, ri4) + backQuad(rb5, rb6, ri6, ri5) + backQuad(rb6, rb7, ri7, ri6) + backQuad(rb7, rb0, ri0, ri7) + backQuad(ri0, ri1, Rb1, Rb0) + backQuad(ri1, ri2, Rb2, Rb1) + backQuad(ri2, ri3, Rb3, Rb2) + backQuad(ri3, ri4, Rb4, Rb3) + backQuad(ri4, ri5, Rb5, Rb4) + backQuad(ri5, ri6, Rb6, Rb5) + backQuad(ri6, ri7, Rb7, Rb6) + backQuad(ri7, ri0, Rb0, Rb7) + backQuad(Rb0, Rb1, R1s, R0) + backQuad(Rb1, Rb2, R2, R1) + backQuad(Rb2, Rb3, R3s, R2) + backQuad(Rb3, Rb4, R4, R3) + backQuad(Rb4, Rb5, R5s, R4) + backQuad(Rb5, Rb6, R6, R5) + backQuad(Rb6, Rb7, R7s, R6) + backQuad(Rb7, Rb0, R0, R7) + ) +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict new file mode 100644 index 00000000000..7b2296286ee --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 20; + +deltaT 1e-4; + +writeControl adjustableRunTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep yes; + +maxCo 0.2; + +maxDeltaT 1; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes new file mode 100644 index 00000000000..5b2fc02c45d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution new file mode 100644 index 00000000000..a95a952401d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + alpha.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver PCG; + preconditioner + { + preconditioner GAMG; + smoother GaussSeidel; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + } + tolerance 1e-6; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "(h|e).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + + pRefCell 0; + pRefValue 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict new file mode 100644 index 00000000000..bf749449bfe --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict @@ -0,0 +1,32 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object topoSetDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +actions +( + { + name rotor; + type cellSet; + action new; + source zoneToCell; + sourceInfo + { + name rotor; + } + } +); + +// ************************************************************************* // -- GitLab