|
|
|
|
#include "FITKOFTurbKOmega.h"
|
|
|
|
|
#include "FITK_Kernel/FITKEasyParam/FITKParameter.h"
|
|
|
|
|
#include "FITKOFDiscretization.h"
|
|
|
|
|
#include "FITKOFSolution.h"
|
|
|
|
|
#include "FITKOFSolutionSolver.h"
|
|
|
|
|
#include "FITKOFInitialConditions.h"
|
|
|
|
|
#include "FITKOFBoundary.h"
|
|
|
|
|
#include "FITKOFBoundaryType.h"
|
|
|
|
|
|
|
|
|
|
namespace Interface
|
|
|
|
|
{
|
|
|
|
|
FITKOFTurbKOmega::FITKOFTurbKOmega()
|
|
|
|
|
{
|
|
|
|
|
//初始化
|
|
|
|
|
this->init();
|
|
|
|
|
this->setDataObjectName("k-Omega");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FITKOFSolverTypeEnum::FITKOFTurbulenceType FITKOFTurbKOmega::getTurbulenceType()
|
|
|
|
|
{
|
|
|
|
|
//获取湍流类型
|
|
|
|
|
return FITKOFSolverTypeEnum::FITKOFTurbulenceType::RANS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FITKOFTurbKOmega::initTurbParam()
|
|
|
|
|
{
|
|
|
|
|
//设置参数
|
|
|
|
|
_turbParams->createDoubleParameter("alphak", 0.5);
|
|
|
|
|
_turbParams->createDoubleParameter("Cmu", 0.09);
|
|
|
|
|
_turbParams->createDoubleParameter("alphaOmega", 0.5);
|
|
|
|
|
_turbParams->createDoubleParameter("beta", 0.072);
|
|
|
|
|
_turbParams->createDoubleParameter("alpha", 0.52);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FITKOFTurbKOmega::initDelta()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FITKOFTurbKOmega::initDiscretization()
|
|
|
|
|
{
|
|
|
|
|
if (!_discretization)return;
|
|
|
|
|
_discretization->initAppendTurbulenceConvection("k");
|
|
|
|
|
_discretization->initAppendTurbulenceConvection("omega");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FITKOFTurbKOmega::initSolution()
|
|
|
|
|
{
|
|
|
|
|
if (!_solution) return;
|
|
|
|
|
//初始化k的参数 solver
|
|
|
|
|
FITKOFAlgebraicEquationsPara* kPara = new FITKOFAlgebraicEquationsPara;
|
|
|
|
|
kPara->setSolutionSolver(new FITKOFSolutionSolverPBiCGStabilized());
|
|
|
|
|
kPara->setVariableName("k");
|
|
|
|
|
_solution->appendSolutionSolver(kPara);
|
|
|
|
|
//初始化omega的参数 solver
|
|
|
|
|
FITKOFAlgebraicEquationsPara* omegaPara = new FITKOFAlgebraicEquationsPara;
|
|
|
|
|
omegaPara->setSolutionSolver(new FITKOFSolutionSolverPBiCGStabilized());
|
|
|
|
|
omegaPara->setVariableName("omega");
|
|
|
|
|
_solution->appendSolutionSolver(omegaPara);
|
|
|
|
|
//设置Residuals
|
|
|
|
|
_solution->initAppendResidual("k");
|
|
|
|
|
_solution->initAppendResidual("omega");
|
|
|
|
|
//设置Relaxation
|
|
|
|
|
Core::FITKParameter* relaxation = _solution->getRelaxation();
|
|
|
|
|
if (!relaxation)return;
|
|
|
|
|
relaxation->createDoubleParameter("k", 1.0);
|
|
|
|
|
relaxation->createDoubleParameter("omega", 1.0);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FITKOFTurbKOmega::initBoundary()
|
|
|
|
|
{
|
|
|
|
|
//初始化Wall边界信息
|
|
|
|
|
FITKOFBoundary* boundaryWall = new FITKOFBoundary(FITKOFSolverTypeEnum::FITKOFBoundaryType::BWall);
|
|
|
|
|
boundaryWall->setTurbulenceBoundary("k", new FITKOFBTyStandardWallFunction);
|
|
|
|
|
boundaryWall->setTurbulenceBoundary("omega", new FITKOFBTyStandardWallFunction);
|
|
|
|
|
boundaryWall->setTurbulenceBoundary("nut", new FITKOFBTyStandardWallFunction);
|
|
|
|
|
_boundaryInfos.append(boundaryWall);
|
|
|
|
|
//初始化PressureInlet边界信息
|
|
|
|
|
FITKOFBoundary* boundaryPInlet = new FITKOFBoundary(FITKOFSolverTypeEnum::FITKOFBoundaryType::BPressureInlet);
|
|
|
|
|
boundaryPInlet->setTurbulenceBoundary("k", new FITKOFBTyTurbulentIntensityInlet);
|
|
|
|
|
boundaryPInlet->setTurbulenceBoundary("omega", new FITKOFBTyTurbulentMixingLengthInlet);
|
|
|
|
|
_boundaryInfos.append(boundaryPInlet);
|
|
|
|
|
//初始化VelocityInlet边界信息
|
|
|
|
|
FITKOFBoundary* boundaryVInlet = new FITKOFBoundary(FITKOFSolverTypeEnum::FITKOFBoundaryType::BVelocityInlet);
|
|
|
|
|
boundaryVInlet->setTurbulenceBoundary("k", new FITKOFBTyTurbulentIntensityInlet);
|
|
|
|
|
boundaryVInlet->setTurbulenceBoundary("omega", new FITKOFBTyTurbulentMixingLengthInlet);
|
|
|
|
|
_boundaryInfos.append(boundaryVInlet);
|
|
|
|
|
//初始化PressureOutlet边界信息
|
|
|
|
|
FITKOFBoundary* boundaryPOutlet = new FITKOFBoundary(FITKOFSolverTypeEnum::FITKOFBoundaryType::BPressureOutlet);
|
|
|
|
|
boundaryPOutlet->setTurbulenceBoundary("k", new FITKOFBTyZeroGradient);
|
|
|
|
|
boundaryPOutlet->setTurbulenceBoundary("omega", new FITKOFBTyZeroGradient);
|
|
|
|
|
_boundaryInfos.append(boundaryPOutlet);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FITKOFTurbKOmega::initInitialConditions()
|
|
|
|
|
{
|
|
|
|
|
//初始化Initial Conditions
|
|
|
|
|
if (!_initialCond) return;
|
|
|
|
|
//初始化Basic
|
|
|
|
|
Core::FITKParameter* basic = _initialCond->getBasicData();
|
|
|
|
|
if (!basic)return;
|
|
|
|
|
basic->createDoubleParameter("k", 1e-02);
|
|
|
|
|
basic->createDoubleParameter("omega", 1);
|
|
|
|
|
basic->createDoubleParameter("nut", 0.1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|