|
[Sponsors] | |||||
|
|
|
#1 |
|
New Member
Silvano
Join Date: Aug 2010
Location: Chicago /Torino Us/Italy
Posts: 11
Rep Power: 17 ![]() |
Hi every body!
I use OF1.5dev, and I changed the enthalpy equation in this form: Code:
{
reactingMixture& multiMix = (reactingMixture&) thermo->composition();
PtrList<reactingMixture::reactionThermo> speciesData = multiMix.speciesData();
dictionary eqnOpts = mesh.solutionDict().subDict("EquationOptions");
bool useDiffA = false;
bool useDiffB = false;
bool useViscDissipation = false;
bool useTurbDissipation = false;
if ( eqnOpts.found("energyDiffusionA" ) )
{
useDiffA = Switch(eqnOpts.lookup("energyDiffusionA"));
}
if ( eqnOpts.found("energyDiffusionB" ) )
{
useDiffB = Switch(eqnOpts.lookup("energyDiffusionB"));
}
if (useDiffA)
{
Info << "Calculating energy correction A" << endl;
energySource *= 0.0;
surfaceScalarField alphaF = fvc::interpolate(turbulence->alphaEff() );
surfaceScalarField muF = fvc::interpolate( turbulence->muEff() );
volScalarField hY("hY",h);
surfaceScalarField alphaH("alphaH", alphaF * fvc::interpolate( h) );
for (label i = 0; i < Y.size(); i++) {
Info << "\tCalculating differential flux for species " << Y[i].name() << endl;
reactingMixture::reactionThermo& spData = speciesData[i];
forAll(T, iCell) {
hY[iCell] = spData.H(T[iCell] );
}
forAll(T.boundaryField(), iPatch)
{
const fvPatchScalarField& T_patch = T.boundaryField()[iPatch];
fvPatchScalarField& hY_patch = hY.boundaryField()[iPatch];
forAll(T_patch, iFace) {
hY_patch[iFace] = spData.H(T_patch[iFace] );
}
}
alphaH = fvc::interpolate(hY) * (muF - alphaF);
// should this be multiplied prior to interpolation
energySource += fvc::laplacian( alphaH, Y[i] );
}
}
if (useDiffB)
{
Info << "Calculating energy correction B" << endl;
surfaceScalarField muF = fvc::interpolate( turbulence->muEff() );
surfaceScalarField kappaEff("kappaEff",
fvc::interpolate( turbulence->alphaEff() * thermo->Cp() ) );
/*
surfaceScalarField kappaEff("kappaEff",
fvc::interpolate( turbulence->alphaEff()) *
fvc::interpolate( thermo->Cp() ) );
*/
volScalarField hY("hY",h);
surfaceScalarField muH("muH", muF * fvc::interpolate( h) );
energySource = fvc::laplacian( kappaEff , T)
- fvc::laplacian( turbulence->alphaEff(), h);
for (label i = 0; i < Y.size(); i++) {
Info << "\tCalculating differential flux for species " << Y[i].name() << endl;
reactingMixture::reactionThermo& spData = speciesData[i];
forAll(T, iCell) {
hY[iCell] = spData.H(T[iCell] );
}
forAll(T.boundaryField(), iPatch)
{
const fvPatchScalarField& T_patch = T.boundaryField()[iPatch];
fvPatchScalarField& hY_patch = hY.boundaryField()[iPatch];
forAll(T_patch, iFace) {
hY_patch[iFace] = spData.H(T_patch[iFace] );
}
}
muH = fvc::interpolate(hY) * muF;
// should this be multiplied prior to interpolation
energySource += fvc::laplacian( muH, Y[i] );
}
}
}
solve
(
fvm::ddt(rho, h)
+ mvConvection->fvmDiv(phi, h)
- fvm::laplacian(turbulence->alphaEff(), h)
==
DpDt
+ energySource
);
thermo->correct();
}
Whereas If I use the same equation in alternateReactingFoam I can wmake the solver, but i get "Segmentation fault" ERROR when I run the case. I am new in OF and I'll be very grateful if somebody can help me to understand what this error mean and how I can make alternateReactingFoam works. thank you very much!! |
|
|
|
|
|
![]() |
| Tags |
| alternatereactingfoam, enthalpy equation, error, segmentation fault |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| mass flow in is not equal to mass flow out | saii | CFX | 12 | March 19, 2018 06:21 |
| Segmentation fault when running dieselFoam or dieselEngineFoam in parallel | francesco | OpenFOAM Bugs | 4 | May 2, 2017 22:59 |
| Calculation of the Governing Equations | Mihail | CFX | 7 | September 7, 2014 07:27 |
| Constant velocity of the material | Sas | CFX | 15 | July 13, 2010 09:56 |
| Enthalpy equation for multicomponent mixtures | alberto_cuoci | OpenFOAM | 1 | October 8, 2009 11:59 |