void RHSStencil::apply(FlowField& flowField, int i, int j) { // loadLocalNu2D(_parameters, flowField, _localNu, i, j); loadLocalVelocity2D(flowField, _localVelocity, i, j); loadLocalMeshsize2D(_parameters, _localMeshsize, i, j); // load TKE loadLocal2D([&flowField](FLOAT* local, int ii, int jj) mutable { *(local + 0) = flowField.getTke(ii, jj); }, _localTKE, i, j); // load epsilon loadLocal2D([&flowField](FLOAT* local, int ii, int jj) mutable { *(local + 0) = flowField.getEpsilon(ii, jj); }, _localEpsilon, i, j); // load Fmu*Nut loadLocal2D([&flowField](FLOAT* local, int ii, int jj) mutable { *(local + 0) = flowField.getFmu(ii, jj) * flowField.getNu(ii, jj); // *(local+0) = 0; }, _localFmuNut, i, j); const FLOAT sijsij = computeSijSij2D(_localVelocity, _localMeshsize); const FLOAT f1 = flowField.getF1(i, j); const FLOAT f2 = flowField.getF2(i, j); const FLOAT f3 = flowField.getF3(i, j); const FLOAT D = flowField.getD(i, j); const FLOAT E = flowField.getE(i, j); const FLOAT nut = flowField.getNu(i, j); flowField.getsijsij(i, j) = sijsij; // load nu + nut/sigmaK loadLocal2D([&flowField, this](FLOAT* local, int ii, int jj) mutable { *(local + 0) = this->_parameters.flow.visc + flowField.getNu(ii, jj) / this->_parameters.kEpsilon.sigmaK; }, _localNu, i, j); flowField.getRHSTke(i, j) = computeRHStke(_parameters, _localVelocity, _localMeshsize, _localNu, _localTKE, _localEpsilon, nut, sijsij, f3, D); // load nu + nut/sigmaE loadLocal2D([&flowField, this](FLOAT* local, int ii, int jj) mutable { *(local + 0) = this->_parameters.flow.visc + flowField.getNu(ii, jj) / this->_parameters.kEpsilon.sigmaE; }, _localNu, i, j); flowField.getRHSEpsilon(i, j) = computeRHSepsilon(_parameters, _localVelocity, _localMeshsize, _localNu, _localTKE, _localEpsilon, nut, sijsij, f1, f2, E); }
void TurbulentViscosityStencil::apply ( TurbulentFlowField & flowField, int i, int j ) { // FLOAT _localVelocity [ 27 * 3 ]; // local meshsize // FLOAT _localMeshsize [ 27 * 3 ]; // MixingLengthModel * _mixingLength; FLOAT lm = _mixingLength->at(flowField, i, j); loadLocalVelocity2D( flowField, _localVelocity, i, j); loadLocalMeshsize2D(_parameters, _localMeshsize, i, j); FLOAT SdotS = computeSdotS2D(_localVelocity, _localMeshsize); flowField.getTurbulentViscosity().getScalar(i, j) = lm * lm * sqrt(2 * SdotS); }
void FmuStencil::apply ( TurbulentFlowField & flowField, int i, int j ){ const int obstacle = flowField.getFlags().getValue(i, j); /* fluid cells */ if ((obstacle & OBSTACLE_SELF) == 0) { loadLocalMeshsize2D ( _parameters, _localMeshsize , i, j); loadLocalKineticEnergy2D ( flowField , _localK , i, j); loadLocalDissipationRate2D( flowField , _localeps , i, j); flowField.getFmu().getScalar(i,j) = computefmu2D(flowField, _localK,_localeps,_parameters,i,j); } }