diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H index c4806145..d455bb0b 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 703ed6e4..cb9be117 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 37eea84e..a6313e73 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 7bf7562d..27f1737e 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) diff --git a/applications/test/tensor/Test-tensor.C b/applications/test/tensor/Test-tensor.C index 6da37d33..e406ab7f 100644 --- a/applications/test/tensor/Test-tensor.C +++ b/applications/test/tensor/Test-tensor.C @@ -69,5 +69,121 @@ int main() Info<< (symm(t7) && t7) - (0.5*(t7 + t7.T()) && t7) << endl; Info<< (t7 && symm(t7)) - (t7 && 0.5*(t7 + t7.T())) << endl; + + /* + // Lots of awkward eigenvector tests ... + + tensor T_rand_real + ( + 0.9999996423721313, 0.3330855667591095, 0.6646450161933899, + 0.9745196104049683, 0.0369445420801640, 0.0846728682518005, + 0.6474838852882385, 0.1617118716239929, 0.2041363865137100 + ); + Debug(T_rand_real); + vector L_rand_real(eigenValues(T_rand_real)); + Debug(L_rand_real); + tensor U_rand_real(eigenVectors(T_rand_real)); + Debug(U_rand_real); + + Info << endl << endl; + + tensor T_rand_imag + ( + 0.8668024539947510, 0.1664607226848602, 0.8925783634185791, + 0.9126510620117188, 0.7408077120780945, 0.1499115079641342, + 0.0936608463525772, 0.7615650296211243, 0.8953040242195129 + ); + Debug(T_rand_imag); + vector L_rand_imag(eigenValues(T_rand_imag)); + Debug(L_rand_imag); + tensor U_rand_imag(eigenVectors(T_rand_imag)); + Debug(U_rand_imag); + + Info << endl << endl; + + tensor T_rand_symm + ( + 1.9999992847442627, 1.3076051771640778, 1.3121289014816284, + 1.3076051771640778, 0.0738890841603279, 0.2463847398757935, + 1.3121289014816284, 0.2463847398757935, 0.4082727730274200 + ); + Debug(T_rand_symm); + vector L_rand_symm(eigenValues(T_rand_symm)); + Debug(L_rand_symm); + tensor U_rand_symm(eigenVectors(T_rand_symm)); + Debug(U_rand_symm); + + Info << endl << endl; + + symmTensor T_rand_Symm + ( + 1.9999992847442627, 1.3076051771640778, 1.3121289014816284, + 0.0738890841603279, 0.2463847398757935, + 0.4082727730274200 + ); + Debug(T_rand_Symm); + vector L_rand_Symm(eigenValues(T_rand_Symm)); + Debug(L_rand_Symm); + tensor U_rand_Symm(eigenVectors(T_rand_Symm)); + Debug(U_rand_Symm); + + Info << endl << endl; + + tensor T_rand_diag + ( + 0.8668024539947510, 0, 0, + 0, 0.7408077120780945, 0, + 0, 0, 0.8953040242195129 + ); + Debug(T_rand_diag); + vector L_rand_diag(eigenValues(T_rand_diag)); + Debug(L_rand_diag); + tensor U_rand_diag(eigenVectors(T_rand_diag)); + Debug(U_rand_diag); + + Info << endl << endl; + + tensor T_repeated + ( + 0, 1, 1, + 1, 0, 1, + 1, 1, 0 + ); + Debug(T_repeated); + vector L_repeated(eigenValues(T_repeated)); + Debug(L_repeated); + tensor U_repeated(eigenVectors(T_repeated)); + Debug(U_repeated); + + Info << endl << endl; + + tensor T_repeated_zero + ( + 1, 1, 1, + 1, 1, 1, + 1, 1, 1 + ); + Debug(T_repeated_zero); + vector L_repeated_zero(eigenValues(T_repeated_zero)); + Debug(L_repeated_zero); + tensor U_repeated_zero(eigenVectors(T_repeated_zero)); + Debug(U_repeated_zero); + + Info << endl << endl; + + tensor T_triple + ( + 2, 0, 0, + 0, 2, 0, + 0, 0, 2 + ); + Debug(T_triple); + vector L_triple(eigenValues(T_triple)); + Debug(L_triple); + tensor U_triple(eigenVectors(T_triple)); + Debug(U_triple); + */ + + return 0; } diff --git a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C index 8f90bb21..e808d54a 100644 --- a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C +++ b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -314,8 +314,6 @@ Foam::Map Foam::DelaunayMesh::rangeInsertWithInfo Map