/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Copyright (C) 2020-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . \*---------------------------------------------------------------------------*/ #include "OneResistanceHeatTransferPhaseSystem.H" #include "heatTransferModel.H" #include "fvmSup.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template Foam::OneResistanceHeatTransferPhaseSystem:: OneResistanceHeatTransferPhaseSystem ( const fvMesh& mesh ) : HeatTransferPhaseSystem(mesh) { this->generateInterfacialModels(heatTransferModels_); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // template Foam::OneResistanceHeatTransferPhaseSystem:: ~OneResistanceHeatTransferPhaseSystem() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // template Foam::autoPtr Foam::OneResistanceHeatTransferPhaseSystem:: heatTransfer() const { autoPtr eqnsPtr ( new phaseSystem::heatTransferTable() ); phaseSystem::heatTransferTable& eqns = eqnsPtr(); forAll(this->phaseModels_, phasei) { const phaseModel& phase = this->phaseModels_[phasei]; eqns.insert ( phase.name(), new fvScalarMatrix(phase.thermo().he(), dimEnergy/dimTime) ); } // Heat transfer across the interface forAllConstIter ( heatTransferModelTable, heatTransferModels_, heatTransferModelIter ) { const phaseInterface interface(*this, heatTransferModelIter.key()); const volScalarField K(heatTransferModelIter()->K()); forAllConstIter(phaseInterface, interface, iter) { const phaseModel& phase = iter(); const phaseModel& otherPhase = iter.otherPhase(); const volScalarField& he = phase.thermo().he(); const volScalarField Cpv(phase.thermo().Cpv()); const volScalarField phaseK ( iter.otherPhase() /max(iter.otherPhase(), iter.otherPhase().residualAlpha()) *K ); *eqns[phase.name()] += phaseK*(otherPhase.thermo().T() - phase.thermo().T() + he/Cpv) - fvm::Sp(phaseK/Cpv, he); } } return eqnsPtr; } template bool Foam::OneResistanceHeatTransferPhaseSystem::read() { if (HeatTransferPhaseSystem::read()) { bool readOK = true; // Models ... return readOK; } else { return false; } } // ************************************************************************* //