Reconstruction

Материал из ru.wiki.laduga.ru
Перейти к: навигация, поиск

Введение

Операция реконструкции используется в OpenFOAM, например в BuoyantBoussinesqPisoFoam для реконструкции "...объёмного поля из поля торцевого потока, вводящего псевдошаговую сетку... чтобы избежать колебаний давления на контрольной доске, которые могут возникнуть на совместно расположенных сетках".


Описание метода

Рассмотрим оператор реконструкции fvc::reconstruct(…) для случая восстановления центрированных по ячейке значений вектора скорости $ \vec{u} $ на основе потока через грань f f S r r j = u × контрольного объёма.

Нормальные векторы поверхности

(1)

Которые могут быть представлены как скалярное произведение вектора нормальной единичной грани f n and площади грани f f A S r = :

Согласно fvcReconstruct.C файл:


00042 template<class Type>
00043 tmp
00044 <
00045 GeometricField
00046 <
00047 typename outerProduct<vector,Type>::type, fvPatchField, volMesh
00048 >
00049 >
00050 reconstruct
00051 (
00052 const GeometricField<Type, fvsPatchField, surfaceMesh>& ssf
00053 )
00054 {
00055 typedef typename outerProduct<vector, Type>::type GradType;
00056
00057 const fvMesh& mesh = ssf.mesh();
00058
00059 tmp<GeometricField<GradType, fvPatchField, volMesh> > treconField
00060 (
00061 new GeometricField<GradType, fvPatchField, volMesh>
00062 (
00063 IOobject
00064 (
00065 "volIntegrate("+ssf.name()+')',
00066 ssf.instance(),
00067 mesh,
00068 IOobject::NO_READ,
00069 IOobject::NO_WRITE
00070 ),
00071 inv(surfaceSum(sqr(mesh.Sf())/mesh.magSf()))
00072 & surfaceSum((mesh.Sf()/mesh.magSf())*ssf),
00073 zeroGradientFvPatchField<GradType>::typeName
00074 )
00075 );
00076
00077 treconField().correctBoundaryConditions();
00078
00079 return treconField;
00080 }

Таким образом, восстановленные значения скорости * u r вычисляются как:

(3)

Здесь следует помнить, что в OpenFOAM the квадратный оператор (...)2, выполняемый над векторным аргументом, производит симметричный тензор (он не является скалярным произведением вектора на самого себя) используя внешнее произведение вектора:

(4)

Полученный тензор 2-го ранга нормируется на площадь грани f A и суммируется (с помощью оператора Σ f ... ) по всем граням контрольного объёма:

(5)

Инверсия тензора W используется для представления нормализации (правильно ли это?). В соответствии с уравнением (2), торцевая нормальная составляющая вектора скорости f n u r вычисляется как:

(6)

таким образом

(7)

Наконец, уравнение (3) можно переписать, как взвешенную сумму (с областями граней в качестве взвешенных коэффициентов) усреднённую с помощью тензора нормализации W:

(8)


--Makaveli lcf 01:12, 23 October 2011 (CEST)

Ссылка на оригинал - http://openfoamwiki.net/index.php/OpenFOAM_guide/Reconstruction