|
[Sponsors] |
June 27, 2014, 13:24 |
Hybrid RANS/LES models
|
#1 |
Member
Eduardo Molina
Join Date: Sep 2010
Location: Brazil
Posts: 35
Rep Power: 16 |
Developers and users,
I would like to know if someone is working (or already worked) on Hybrid RANS/LES models such DES/DDES with SU2. Is it implemented in the current SU2 3.2 version? Regards, Eduardo. |
|
June 27, 2014, 16:56 |
|
#2 |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
I think it is very simple to add DES in SU2. In fact, I have added this. Now I am testing the DES with SA model.
|
|
June 27, 2014, 17:21 |
|
#3 |
Member
Eduardo Molina
Join Date: Sep 2010
Location: Brazil
Posts: 35
Rep Power: 16 |
Hi Jianming Liu,
I would appreciate if you can share your modification, I am also interested in DES with SU2. Regards, Eduardo. |
|
June 27, 2014, 20:03 |
|
#4 | |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
Quote:
1. in config_structure.hpp,in class CConfig, add two data members: double Const_DES; bool With_DES; Const_DES is constant for DES, for SA model it should be equal to 0.65 give two declaration of member function:I use following double GetConst_DES(void); bool GetWith_DES(void); 2 in config_structure.inl, add two definition of inline function: inline double CConfig::GetConst_DES(void) { return Const_DES; } inline bool CConfig::GetWith_DES(void) { return With_DES; } 3 in dual_grid_structure.hpp, add member in class CPoint double Turb_Len_Scale_DES; /*!< \brief DES turbulent length scale */ * \brief DES turbulent length scale. JamesLiu Oct12 * \param[in] val_distance - Value of the distance. */ void SetTurb_Len_Scale_DES(double val_distance); /*! * \brief Get the value of the DES turbulent length scale. * \return Value of the DES turbulent length scale. */ double GetTurb_Len_Scale_DES(void); 4 in dual_grid_structure.inl, add incline function inline void CPoint::SetTurb_Len_Scale_DES(double val_distance) { Turb_Len_Scale_DES = val_distance; } inline double CPoint::GetTurb_Len_Scale_DES(void) { return Turb_Len_Scale_DES; } 5 in file: geometry_structure.hpp, add declaration in class CGeometry virtual void ComputeTurb_Len_Scale_DES(CConfig *config); in class CPhysicalGeometry add void ComputeTurb_Len_Scale_DES(CConfig *config); 6 in file: geometry_structure.inl, add the definition inline void CGeometry::ComputeTurb_Len_Scale_DES(CConfig *config) { } 7 in file: config_structure.cpp, in void CConfig::SetConfig_Options(unsigned short val_iZone, unsigned short val_nZone) add addDoubleOption("CONST_DES", Const_DES, 0.65); 8 in geometry_structure.cpp, add definition of member function: void CPhysicalGeometry::ComputeTurb_Len_Scale_DES(CConf ig *config) { 9 in SU2_CFD.cpp add // JamesLiu for DES turbulent length scale if ( (config_container[iZone]->GetKind_Solver() == RANS) && config_container[iZone]->GetWith_DES() ) geometry_container[iZone][MESH_0]->ComputeTurb_Len_Scale_DES(config_container[iZone]); 10 in solver_direct_turbulent.cpp change the definition of void CTurbSASolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CNumerics *second_numerics, CConfig *config, unsigned short iMesh) { use Turb_Len_Scale_DES to replace the distance of d. Here I just show the modification I used for SA model, I think the process for DES SST model is same. I am doing the V&V for the modification. If the developers or other users have done this, I appreciate for people to discuss this modification. Jianming Last edited by liujmljm; June 28, 2014 at 07:48. |
||
June 29, 2014, 15:13 |
|
#5 |
Member
Eduardo Molina
Join Date: Sep 2010
Location: Brazil
Posts: 35
Rep Power: 16 |
Hi .
Thank you very much. I will perform your modifications. Did you run any validation case? Regards,. Eduardo. |
|
June 30, 2014, 20:45 |
|
#6 |
Member
Eduardo Molina
Join Date: Sep 2010
Location: Brazil
Posts: 35
Rep Power: 16 |
Hi Jianming,
I have a couple of questions: a) In step 8, Is missing the way you compute the DES turbluent scale? b) In step 10, you replace the GetWall_Distance() for GetTurb_Len_Scale_DES()? c) You implemented the DES97 version or the Delayed-DES version? Thank you very much Regards, Eduardo |
|
June 30, 2014, 21:10 |
|
#7 | |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
Quote:
the overall code for the step 8 and 10, I will paste tomorrow. |
||
July 1, 2014, 12:23 |
|
#8 | |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
Quote:
double *coord, dist00, dist; unsigned short iDim, nNeigh,iNeigh; /* JamesLiu Oct12*/ unsigned long iPoint; unsigned long No_neigh; double xCoord_neigh; double cdesljm; /*--- Loop over all interior mesh nodes and compute the distances to each of the no-slip boundary nodes. Store the minimum distance to the wall for each interior mesh node. ---*/ cdesljm=config->GetConst_DES(); for (iPoint = 0; iPoint < GetnPoint(); iPoint++) { nNeigh = node[iPoint]->GetnPoint(); coord = node[iPoint]->GetCoord(); dist = 1E-20; for (iNeigh = 0; iNeigh < nNeigh; iNeigh++){ No_neigh = node[iPoint]->GetPoint(iNeigh); dist00=0.0; for (iDim = 0; iDim < nDim; iDim++) { xCoord_neigh = node[No_neigh]->GetCoord(iDim); dist00 += (coord[iDim]-xCoord_neigh)*(coord[iDim]-xCoord_neigh); } dist00=sqrt(dist00)/1.73205080757; /* sqrt(3) for unstructured grid 1.73205080757*/ if(dist00>dist) dist=dist00; } node[iPoint]->SetTurb_Len_Scale_DES(dist*cdesljm); } } |
||
July 1, 2014, 12:27 |
|
#9 | |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
Quote:
CConfig *config, unsigned short iMesh) { first give definition for two double variables (dist00,dist00DES), then you should change the distance to the wall like following. /*--- Set distance to the surface ---*/ // numerics->SetDistance(geometry->node[iPoint]->GetWall_Distance(), 0.0); //--------------------------------------------- // JamesLiu Oct14 dist00=geometry->node[iPoint]->GetWall_Distance(); if(config->GetWith_DES()) { dist00DES=geometry->node[iPoint]->GetTurb_Len_Scale_DES(); if(dist00<dist00DES) dist00DES=dist00; numerics->SetDistance(dist00DES, 0.0); } else numerics->SetDistance(dist00, 0.0); |
||
July 1, 2014, 12:30 |
|
#10 |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
the modification for SA-model + DES97 is developed under SU2V3.2
|
|
July 2, 2014, 12:20 |
|
#11 |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
when you run des, you should add the option in the configure file
|
|
July 2, 2014, 23:14 |
|
#12 |
Member
Eduardo Molina
Join Date: Sep 2010
Location: Brazil
Posts: 35
Rep Power: 16 |
Hi
In step 7 I think it is missing: addBoolOption("WITH_DES", With_DES, false); I follow your steps and compiled the su2 code succesfully. Once again thank you very much, Now, I am planning to validate this DES modification using the square cylinder test case. Following this AIAA paper: http://www.google.com.br/url?sa=t&rc...70138588,d.cWc I create a very similar grid and now I will run this test case. If you are interested in see the 3D grid I can send you! Meanwhile, I am seeing how we can implement the DDES version. Regards. Eduardo. |
|
July 3, 2014, 04:44 |
|
#13 | |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
Quote:
Could you please send your grid to me. my email is jmliuxznu@163.com thank you very much |
||
July 8, 2014, 13:17 |
|
#14 |
Member
Eduardo Molina
Join Date: Sep 2010
Location: Brazil
Posts: 35
Rep Power: 16 |
Hi,
I send you the email. Did you get it? Regards. |
|
July 8, 2014, 15:20 |
|
#15 |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
||
July 10, 2014, 00:07 |
|
#16 |
New Member
Indiana
Join Date: Dec 2013
Posts: 2
Rep Power: 0 |
Hi, I am inspired by your discussion. But I still have one question after reading it. Since DES is a LES-like method which permits the instability fluctuation in it, the second order upwind scheme seems not a good choice. Have you guys checked any other high order central schemes available for viscous terms?
|
|
July 10, 2014, 23:17 |
|
#17 |
Member
Eduardo Molina
Join Date: Sep 2010
Location: Brazil
Posts: 35
Rep Power: 16 |
Hi wanjia
Maybe you are right. I have been working with DES on commercial softwares and they are basically originated from RANS codes as SU2. Some codes are Hybrid (center-scheme in the LES region) and upwind in URANS regions. But Spalart showed in his paper that is possible to get generous LES-content even in a pure second-order upwind code. As he also said: "It is best to avoid blanket statements." I am testing the DES capabilities with JST and the Roe scheme. When I finished I will share here with the community. Thank you for your interest. Regards Eduardo |
|
July 12, 2014, 15:34 |
|
#19 |
Senior Member
Heather Kline
Join Date: Jun 2013
Posts: 309
Rep Power: 14 |
Hello
Thank you for your interest in su2. Please feel free to submit a pull request on github for any new capabilities you have developed. |
|
July 12, 2014, 18:09 |
|
#20 |
Member
Jianming Liu
Join Date: Mar 2009
Location: China
Posts: 71
Rep Power: 17 |
||
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Eddy Viscosity Models and Reynolds Stress Models | JuPa | CFX | 1 | August 20, 2013 19:56 |
Error quantification for Hybrid LES models | M_Tidswell | CFX | 0 | April 8, 2013 09:17 |
Two-fluid models vs mixture models for bubbly flows | Hansong Tang | Main CFD Forum | 6 | December 8, 2009 04:21 |
hybrid RANS/LES in CFX? | Hao | CFX | 4 | February 25, 2009 04:38 |
Hybrid mesh generation | Jake | Main CFD Forum | 2 | April 21, 2007 15:27 |