FEATool Multiphysics  v1.17.1
Finite Element Analysis Toolbox
ex_navierstokes3b.m File Reference

Description

EX_NAVIERSTOKES3B 2D Flow around cylinder CFD benchmark.

[ DATA, FEA ] = EX_NAVIERSTOKES3B 2D Flow around cylinder CFD benchmark

CFD benchmarking script comparing the OpenFOAM and SU2 CFD solvers to the fully coupled and monolithic FEniCS and FEATool Multiphysics solvers, for a 2D stationary and incompressible flow around a cylinder test case.

Benchmark references

[1] John V, Matthies G. Higher-order finite element discretizations in a benchmark problem for incompressible flows. International Journal for Numerical Methods in Fluids 2001.

[2] Nabh G. On higher order methods for the stationary incompressible Navier-Stokes equations. PhD Thesis, Universitaet Heidelberg, 1998.

See also
ex_navierstokes3, run_featool_benchmarks

Code listing

% Define available solvers.
 solvers  = { 'FEATool', 'FEniCS', 'OpenFOAM', 'SU2' };
 FEATOOL  = 1;
 FENICS   = 2;
 OPENFOAM = 3;
 SU2      = 4;

% Define available grid cases.
 grids    = { 'Quad', 'Tri', 'TriU' };
 QUAD     = 1;
 TRI      = 2;   % Structured triangles.
 TRIU     = 3;   % Unstructured triangles.

% Define available FEM shape/basis functions.
 D0       = 'sf_disc0';
 D1       = 'sf_disc1';
 P1       = 'sf_simp_P1';
 P2       = 'sf_simp_P2';
 Q1       = 'sf_quad_Q1';
 Q2       = 'sf_quad_Q2';

% Set up benchmark test cases.
 NLEV  = 1:5;   % Select grid levels.
 cases = { FEATOOL,   TRI,   {P1,P1},  NLEV;
           FEATOOL,   TRI,   {P2,P1},  NLEV(1:end-1);
           FEATOOL,   QUAD,  {Q1,Q1},  NLEV;
           FEATOOL,   QUAD,  {Q2,D1},  NLEV(1:end-1);
           FENICS,    TRI,   {P1,P1},  NLEV;
           FENICS,    TRI,   {P2,P1},  NLEV(1:end-1);
           OPENFOAM,  TRI,   {D0,D0},  NLEV;
           OPENFOAM,  QUAD,  {D0,D0},  NLEV;
           SU2,       TRI,   {P1,P1},  NLEV;
           SU2,       QUAD,  {Q1,Q1},  NLEV };


 opt.basename = mfilename();
 opt.solvers  = solvers;
 opt.grids    = grids;
 opt.cases    = cases;
 opt.fcn_fea  = @l_setup_fea_struct;
 opt.fcn_err  = @l_dragliftpres;
 opt.fcn_proc = @l_process_data;

 [ data, fea ] = run_featool_benchmarks( opt );


%