You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppFlow/FITK_Interface/FITKInterfaceFlowOF/FITKOFTurbKOmegaSST.cpp

129 lines
5.6 KiB
C++

#include "FITKOFTurbKOmegaSST.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
{
FITKOFTurbKOmegaSST::FITKOFTurbKOmegaSST()
{
//初始化
this->init();
this->setDataObjectName("k-Omega SST");
}
FITKOFSolverTypeEnum::FITKOFTurbulenceType FITKOFTurbKOmegaSST::getTurbulenceType()
{
//获取湍流类型
return FITKOFSolverTypeEnum::FITKOFTurbulenceType::RANS;
}
void FITKOFTurbKOmegaSST::initTurbParam()
{
//设置参数
_turbParams->createDoubleParameter("alphaK1", 0.85);
_turbParams->createDoubleParameter("alphaOmega2", 0.856);
_turbParams->createDoubleParameter("gamma2", 0.4403);
_turbParams->createDoubleParameter("alphaK2", 1.0);
_turbParams->createDoubleParameter("alphaOmega1", 0.5);
_turbParams->createDoubleParameter("gamma1", 0.5532);
_turbParams->createBoolParameter("F3", false);
_turbParams->createDoubleParameter("c1", 10.0);
_turbParams->createDoubleParameter("b1", 1.0);
_turbParams->createDoubleParameter("a1", 0.31);
_turbParams->createDoubleParameter("beta1", 0.075);
_turbParams->createDoubleParameter("beta2", 0.0828);
_turbParams->createDoubleParameter("betaStar", 0.09);
}
void FITKOFTurbKOmegaSST::initDelta()
{
}
void FITKOFTurbKOmegaSST::initDiscretization()
{
if (!_discretization)return;
_discretization->initAppendTurbulenceConvection("k");
_discretization->initAppendTurbulenceConvection("omega");
}
void FITKOFTurbKOmegaSST::initSolution()
{
//初始化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", 0.5);
relaxation->createDoubleParameter("omega", 0.5);
}
void FITKOFTurbKOmegaSST::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);
//初始化Outflow边界信息
FITKOFBoundary* boundaryPOutflow = new FITKOFBoundary(FITKOFSolverTypeEnum::FITKOFBoundaryType::BOutflow);
boundaryPOutflow->setTurbulenceBoundary("k", new FITKOFBTyZeroGradient);
boundaryPOutflow->setTurbulenceBoundary("omega", new FITKOFBTyZeroGradient);
_boundaryInfos.append(boundaryPOutflow);
//初始化Symmetry边界信息
FITKOFBoundary* boundarySymmetry = new FITKOFBoundary(FITKOFSolverTypeEnum::FITKOFBoundaryType::BSymmetry);
boundarySymmetry->setTurbulenceBoundary("k", new FITKOFBTySymmetry);
boundarySymmetry->setTurbulenceBoundary("omega", new FITKOFBTySymmetry);
boundarySymmetry->setTurbulenceBoundary("nut", new FITKOFBTySymmetry);
_boundaryInfos.append(boundarySymmetry);
}
void FITKOFTurbKOmegaSST::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);
}
}