From cb8b410bf35989570f133f962b759186e8029f33 Mon Sep 17 00:00:00 2001 From: sergio Date: Mon, 15 Sep 2014 17:19:57 +0100 Subject: [PATCH] BUG: mantis 1397. volSymmTensorField not found for cht problems with two coupled solids --- .../solid/solveSolid.H | 2 +- .../solid/createSolidFields.H | 33 +++++++++++++++++ .../solid/setRegionSolidFields.H | 35 ++++++------------- .../chtMultiRegionFoam/solid/solveSolid.H | 2 +- 4 files changed, 46 insertions(+), 26 deletions(-) diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H index c480614510..d455bb0bd8 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H @@ -6,7 +6,7 @@ ( thermo.isotropic() ? -fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)") - : -fvm::laplacian(betav*tAnialpha(), h, "laplacian(alpha,h)") + : -fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)") ) == fvOptions(rho, h) diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H index 703ed6e4c2..cb9be11787 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H @@ -4,6 +4,7 @@ PtrList radiations(solidRegions.size()); PtrList solidHeatSources(solidRegions.size()); PtrList betavSolid(solidRegions.size()); + PtrList aniAlphas(solidRegions.size()); // Populate solid field pointer lists forAll(solidRegions, i) @@ -32,6 +33,38 @@ i, coordinateSystem::New(solidRegions[i], thermos[i]) ); + + tmp tkappaByCp = + thermos[i].Kappa()/thermos[i].Cp(); + + aniAlphas.set + ( + i, + new volSymmTensorField + ( + IOobject + ( + "Anialpha", + runTime.timeName(), + solidRegions[i], + IOobject::NO_READ, + IOobject::NO_WRITE + ), + solidRegions[i], + dimensionedSymmTensor + ( + "zero", + tkappaByCp().dimensions(), + symmTensor::zero + ), + zeroGradientFvPatchSymmTensorField::typeName + ) + ); + + aniAlphas[i].internalField() = + coordinates[i].R().transformVector(tkappaByCp()); + aniAlphas[i].correctBoundaryConditions(); + } IOobject betavSolidIO diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H index 37eea84e92..a6313e732f 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H @@ -8,37 +8,24 @@ tmp tcp = thermo.Cp(); const volScalarField& cp = tcp(); - tmp tAnialpha; - + tmp taniAlpha; if (!thermo.isotropic()) { + volSymmTensorField& aniAlpha = aniAlphas[i]; tmp tkappaByCp = thermo.Kappa()/cp; - const coordinateSystem& coodSys = coordinates[i]; - tAnialpha = - tmp - ( - new volSymmTensorField - ( - IOobject - ( - "Anialpha", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh, - tkappaByCp().dimensions(), - zeroGradientFvPatchVectorField::typeName - ) - ); - volSymmTensorField& Anialpha = tAnialpha(); - Anialpha.internalField() = coodSys.R().transformVector(tkappaByCp()); - Anialpha.correctBoundaryConditions(); + aniAlpha.internalField() = + coodSys.R().transformVector(tkappaByCp()); + aniAlpha.correctBoundaryConditions(); + + taniAlpha = tmp + ( + new volSymmTensorField(aniAlpha) + ); } + volScalarField& h = thermo.he(); const volScalarField& betav = betavSolid[i]; diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H index 7bf7562d9b..27f1737e52 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H @@ -12,7 +12,7 @@ if (finalIter) - ( thermo.isotropic() ? fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)") - : fvm::laplacian(betav*tAnialpha(), h, "laplacian(alpha,h)") + : fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)") ) == fvOptions(rho, h)