From 46111bb4cb89777be2f207d65d8a242f47b982be Mon Sep 17 00:00:00 2001 From: Thomas Lichtenegger Date: Sat, 27 Feb 2016 13:20:09 +0100 Subject: [PATCH] Energy models. --- .../energyModel/energyModel/energyModel.C | 64 +++++ .../energyModel/energyModel/energyModel.H | 113 +++++++++ .../energyModel/energyModel/newEnergyModel.C | 67 +++++ .../energyModel/heatTransfer/heatTransfer.C | 77 ++++++ .../energyModel/heatTransfer/heatTransfer.H | 88 +++++++ .../heatTransferGunn/heatTransferGunn.C | 232 ++++++++++++++++++ .../heatTransferGunn/heatTransferGunn.H | 115 +++++++++ .../energyModel/reactionHeat/reactionHeat.C | 0 .../energyModel/reactionHeat/reactionHeat.H | 0 9 files changed, 756 insertions(+) create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/energyModel.C create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/energyModel.H create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/newEnergyModel.C create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/heatTransfer/heatTransfer.C create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/heatTransfer/heatTransfer.H create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/reactionHeat/reactionHeat.C create mode 100644 src/lagrangian/cfdemParticle/subModels/energyModel/reactionHeat/reactionHeat.H diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/energyModel.C b/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/energyModel.C new file mode 100644 index 00000000..abeeeb62 --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/energyModel.C @@ -0,0 +1,64 @@ +/*---------------------------------------------------------------------------*\ +License + + This is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This code is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with this code. If not, see . + + Copyright (C) 2015- Thomas Lichtenegger, JKU Linz, Austria + +\*---------------------------------------------------------------------------*/ + +#include "error.H" +#include "energyModel.H" +#include "mathExtra.H" +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(energyModel, 0); + +defineRunTimeSelectionTable(energyModel, dictionary); + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +energyModel::energyModel +( + const dictionary& dict, + cfdemCloudEnergy& sm +) +: + dict_(dict), + particleCloud_(sm) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +energyModel::~energyModel() +{} + +// * * * * * * * * * * * * * * * * Member Fct * * * * * * * * * * * * * * * // + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/energyModel.H b/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/energyModel.H new file mode 100644 index 00000000..92570ea1 --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/energyModel.H @@ -0,0 +1,113 @@ +/*---------------------------------------------------------------------------*\ +License + + This is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This code is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with this code. If not, see . + + Copyright (C) 2015- Thomas Lichtenegger, JKU Linz, Austria + +\*---------------------------------------------------------------------------*/ + +#ifndef energyModel_H +#define energyModel_H + +#include "fvCFD.H" +#include "cfdemCloudEnergy.H" +#include "probeModel.H" +#include "forceModel.H" +#include "interpolationCellPoint.H" +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class energyModel Declaration +\*---------------------------------------------------------------------------*/ + +class energyModel +{ + +protected: + + // Protected data + const dictionary& dict_; + + cfdemCloudEnergy& particleCloud_; + + +public: + + //- Runtime type information + TypeName("energyModel"); + + // Declare runtime constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + energyModel, + dictionary, + ( + const dictionary& dict, + cfdemCloudEnergy& sm + ), + (dict,sm) + ); + + + // Constructors + + //- Construct from components + energyModel + ( + const dictionary& dict, + cfdemCloudEnergy& sm + ); + + + // Destructor + + virtual ~energyModel(); + + + // Selector + + static autoPtr New + ( + const dictionary& dict, + cfdemCloudEnergy& sm, + word energyType + ); + + + // Member Functions + + + virtual void energyContribution(volScalarField&) const; + + virtual void temperatureContribution(volScalarField&) const; + + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/newEnergyModel.C b/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/newEnergyModel.C new file mode 100644 index 00000000..67f8c0af --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/energyModel/newEnergyModel.C @@ -0,0 +1,67 @@ +/*---------------------------------------------------------------------------*\ +License + + This is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This code is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with this code. If not, see . + + Copyright (C) 2015- Thomas Lichtenegger, JKU Linz, Austria + +\*---------------------------------------------------------------------------*/ + +#include "error.H" + +#include "energyModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +autoPtr energyModel::New +( + const dictionary& dict, + cfdemCloudEnergy& sm, + word energyType +) +{ + Info<< "Selecting energyModel " + << energyType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(energyType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "energyModel::New(const dictionary&, const spray&) : " + << endl + << " unknown energyModelType type " + << energyType + << ", constructor not in hash table" << endl << endl + << " Valid energyModel types are :" + << endl; + Info<< dictionaryConstructorTablePtr_->toc() + << abort(FatalError); + } + + return autoPtr(cstrIter()(dict,sm)); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransfer/heatTransfer.C b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransfer/heatTransfer.C new file mode 100644 index 00000000..74910b57 --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransfer/heatTransfer.C @@ -0,0 +1,77 @@ +/*---------------------------------------------------------------------------*\ +License + + This is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This code is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with this code. If not, see . + + Copyright (C) 2015- Thomas Lichtenegger, JKU Linz, Austria + +\*---------------------------------------------------------------------------*/ + +#include "error.H" +#include "heatTransfer.H" +#include "addToRunTimeSelectionTable.H" +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(heatTransfer, 0); + +addToRunTimeSelectionTable(energyModel, heatTransfer, dictionary); + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +heatTransfer::heatTransfer +( + const dictionary& dict, + cfdemCloudEnergy& sm +) +: + energyModel(dict,sm), + LaEuScalarTemp(dict,sm), + propsDict_(dict.subDict(typeName + "Props")), + propsLaEuScalarTempDict_(dict.subDict("LaEuScalarTempProps")), + Cp_(readScalar(propsLaEuScalarTempDict_.lookup("Cp"))) +{ +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +heatTransfer::~heatTransfer() +{} + +// * * * * * * * * * * * * * * * * Member Fct * * * * * * * * * * * * * * * // + +void heatTransfer::energyContribution(volScalarField& EuField) const +{ + const volScalarField& rhoField = forceSubM(0).rhoField(); + temperatureContribution(EuField); + EuField.internalField() *= rhoField.internalField()*Cp_; +} + +void heatTransfer::temperatureContribution(volScalarField& EuField) const +{ + LaEuScalarTemp::manipulateScalarField(EuField); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransfer/heatTransfer.H b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransfer/heatTransfer.H new file mode 100644 index 00000000..e4a98e63 --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransfer/heatTransfer.H @@ -0,0 +1,88 @@ +/*---------------------------------------------------------------------------*\ +License + + This is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This code is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with this code. If not, see . + + Copyright (C) 2015- Thomas Lichtenegger, JKU Linz, Austria + +\*---------------------------------------------------------------------------*/ + +#ifndef heatTransfer_H +#define heatTransfer_H + +#include "fvCFD.H" +#include "cfdemCloudEnergy.H" +#include "energyModel.H" +#include "LaEuScalarTemp.H" +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class heatTransfer Declaration +\*---------------------------------------------------------------------------*/ + +class heatTransfer +: + public energyModel, public LaEuScalarTemp +{ +private: + + dictionary propsDict_; + + dictionary propsLaEuScalarTempDict_; + + scalar Cp_; + +public: + + //- Runtime type information + TypeName("heatTransfer"); + + // Constructors + + //- Construct from components + heatTransfer + ( + const dictionary& dict, + cfdemCloudEnergy& sm + ); + + + // Destructor + + virtual ~heatTransfer(); + + + // Member Functions + + + void energyContribution(volScalarField&) const; + + void temperatureContribution(volScalarField&) const; + + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C new file mode 100644 index 00000000..c463d624 --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.C @@ -0,0 +1,232 @@ +/*---------------------------------------------------------------------------*\ +License + + This is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This code is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with this code. If not, see . + + Copyright (C) 2015- Thomas Lichtenegger, JKU Linz, Austria + +\*---------------------------------------------------------------------------*/ + +#include "error.H" +#include "heatTransferGunn.H" +#include "addToRunTimeSelectionTable.H" +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(heatTransferGunn, 0); + +addToRunTimeSelectionTable(energyModel, heatTransferGunn, dictionary); + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +heatTransferGunn::heatTransferGunn +( + const dictionary& dict, + cfdemCloudEnergy& sm +) +: + energyModel(dict,sm), + propsDict_(dict.subDict(typeName + "Props")), + tempFieldName_(propsDict_.lookup("tempFieldName")), + tempField_(sm.mesh().lookupObject (tempFieldName_)), + voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")), + voidfraction_(sm.mesh().lookupObject (voidfractionFieldName_)), + maxSource_(1e30), + velFieldName_(propsDict_.lookup("velFieldName")), + U_(sm.mesh().lookupObject (velFieldName_)), + partTempName_(propsDict_.lookup("partTempName")), + partTemp_(NULL), + partHeatFluxName_(propsDict_.lookup("partHeatFluxName")), + partHeatFlux_(NULL), + lambda_(readScalar(propsDict_.lookup("lambda"))), + Cp_(readScalar(propsDict_.lookup("Cp"))) +{ + allocateMyArrays(); + + if (propsDict_.found("maxSource")) + { + maxSource_=readScalar(propsDict_.lookup ("maxSource")); + Info << "limiting eulerian source field to: " << maxSource_ << endl; + } + + // init force sub model + setForceSubModels(propsDict_); + + // define switches which can be read from dict + forceSubM(0).setSwitchesList(3,true); // activate search for verbose switch + forceSubM(0).setSwitchesList(4,true); // activate search for interpolate switch + forceSubM(0).setSwitchesList(8,true); // activate scalarViscosity switch + + // read those switches defined above, if provided in dict + forceSubM(0).readSwitches(); + + + particleCloud_.checkCG(false); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +heatTransferGunn::~heatTransferGunn() +{ + delete partTemp_; + delete partHeatFlux_; +} + +// * * * * * * * * * * * * * * * private Member Functions * * * * * * * * * * * * * // +void heatTransferGunn::allocateMyArrays() const +{ + // get memory for 2d arrays + double initVal=0.0; + particleCloud_.dataExchangeM().allocateArray(partTemp_,initVal,1); // field/initVal/with/lenghtFromLigghts + particleCloud_.dataExchangeM().allocateArray(partHeatFlux_,initVal,1); +} + +// * * * * * * * * * * * * * * * * Member Fct * * * * * * * * * * * * * * * // + +void heatTransferGunn::temperatureContribution(volScalarField& EuField) const +{ + // realloc the arrays + allocateMyArrays(); + + // reset Scalar field + EuField.internalField() = 0.0; + + // get DEM data + particleCloud_.dataExchangeM().getData(partTempName_,"scalar-atom",partTemp_); + + const volScalarField& nufField = forceSubM(0).nuField(); + const volScalarField& rhoField = forceSubM(0).rhoField(); + + // calc La based heat flux + scalar voidfraction(1); + vector Ufluid(0,0,0); + scalar Tfluid(0); + label cellI=0; + vector Us(0,0,0); + scalar ds(0); + scalar nuf(0); + scalar magUr(0); + scalar Rep(0); + scalar Pr(0); + scalar Nup(0); + const scalar n = 3.5; // model parameter (found suitable for 3-mm polymer pellets when modelling dilute flows) + + interpolationCellPoint voidfractionInterpolator_(voidfraction_); + interpolationCellPoint UInterpolator_(U_); + interpolationCellPoint TInterpolator_(tempField_); + + for(int index = 0;index < particleCloud_.numberOfParticles(); ++index) + { + //if(particleCloud_.regionM().inRegion()[index][0]) + //{ + cellI = particleCloud_.cellIDs()[index][0]; + if(cellI >= 0) + { + if(forceSubM(0).interpolation()) + { + vector position = particleCloud_.position(index); + voidfraction = voidfractionInterpolator_.interpolate(position,cellI); + Ufluid = UInterpolator_.interpolate(position,cellI); + Tfluid = TInterpolator_.interpolate(position,cellI); + } + else + { + voidfraction = voidfraction_[cellI]; + Ufluid = U_[cellI]; + Tfluid = tempField_[cellI]; + } + + // calc relative velocity + Us = particleCloud_.velocity(index); + magUr = mag(Ufluid - Us); + ds = 2.*particleCloud_.radius(index); + nuf = nufField[cellI]; + Rep = ds * magUr * voidfraction / nuf; + Pr = max(SMALL, Cp_ * nuf * rhoField[cellI] / lambda_); + + Nup = + + + scalar h = lambda_ * Nup / ds; + scalar As = ds * ds * M_PI; // surface area of sphere + + // calc convective heat flux [W] + scalar partHeatFlux = h * As * (Tfluid - partTemp_[index][0]); + partHeatFlux_[index][0] = partHeatFlux; + + + if(forceSubM(0).verbose() && index >=0 && index <2) + { + Info << "partHeatFlux = " << partHeatFlux << endl; + Info << "magUr = " << magUr << endl; + Info << "As = " << As << endl; + Info << "nuf = " << nuf << endl; + Info << "Rep = " << Rep << endl; + Info << "Pr = " << Pr << endl; + Info << "Nup = " << Nup << endl; + Info << "voidfraction = " << voidfraction << endl; + Info << "partTemp_[index][0] = " << partTemp_[index][0] << endl; + Info << "Tfluid = " << Tfluid << endl ; + } + } + //} + } + + particleCloud_.averagingM().setScalarSum + ( + EuField, + partHeatFlux_, + particleCloud_.particleWeights(), + NULL + ); + + // scale with -1/(Vcell*rho*Cp) + EuField.internalField() /= -rhoField.internalField()*Cp_*EuField.mesh().V(); + + // limit source term + forAll(EuField,cellI) + { + scalar EuFieldInCell = EuField[cellI]; + + if(mag(EuFieldInCell) > maxSource_ ) + { + EuField[cellI] = sign(EuFieldInCell) * maxSource_; + } + } + + Info << "total convective particle-fluid heat flux [W] (Eulerian) = " << gSum(EuField*rhoField*Cp_*EuField.mesh().V()) << endl; + + // give DEM data + particleCloud_.dataExchangeM().giveData(partHeatFluxName_,"scalar-atom", partHeatFlux_); +} + +void heatTransferGunn::energyContribution(volScalarField& EuField) const +{ + const volScalarField& rhoField = forceSubM(0).rhoField(); + temperatureContribution(EuField); + EuField.internalField() *= rhoField.internalField()*Cp_; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H new file mode 100644 index 00000000..240e218d --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/energyModel/heatTransferGunn/heatTransferGunn.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ +License + + This is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This code is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with this code. If not, see . + + Copyright (C) 2015- Thomas Lichtenegger, JKU Linz, Austria + + Description + Correlation for Nusselt number according to + Gunn, D. J. International Journal of Heat and Mass Transfer 21.4 (1978) + +\*---------------------------------------------------------------------------*/ + +#ifndef heatTransferGunn_H +#define heatTransferGunn_H + +#include "fvCFD.H" +#include "cfdemCloudEnergy.H" +#include "energyModel.H" +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class heatTransferGunn Declaration +\*---------------------------------------------------------------------------*/ + +class heatTransferGunn +: + public energyModel +{ +private: + + dictionary propsDict_; + + word tempFieldName_; + + const volScalarField& tempField_; // ref to temperature field + + word voidfractionFieldName_; + + const volScalarField& voidfraction_; // ref to voidfraction field + + scalar maxSource_; // max (limited) value of src field + + word velFieldName_; + + const volVectorField& U_; + + word partTempName_; + + mutable double **partTemp_; // Lagrangian array + + word partHeatFluxName_; + + mutable double **partHeatFlux_; // Lagrangian array + + scalar lambda_; // fluid thermal conductivity [W/(m*K)] + + scalar Cp_; // specific heat capacity [W*s/(kg*K)] + + void allocateMyArrays() const; + +public: + + //- Runtime type information + TypeName("heatTransferGunn"); + + // Constructors + + //- Construct from components + heatTransferGunn + ( + const dictionary& dict, + cfdemCloudEnergy& sm + ); + + + // Destructor + + virtual ~heatTransferGunn(); + + + // Member Functions + + + void energyContribution(volScalarField&) const; + + void temperatureContribution(volScalarField&) const; + + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/reactionHeat/reactionHeat.C b/src/lagrangian/cfdemParticle/subModels/energyModel/reactionHeat/reactionHeat.C new file mode 100644 index 00000000..e69de29b diff --git a/src/lagrangian/cfdemParticle/subModels/energyModel/reactionHeat/reactionHeat.H b/src/lagrangian/cfdemParticle/subModels/energyModel/reactionHeat/reactionHeat.H new file mode 100644 index 00000000..e69de29b