Authentication method changed. UCLouvain users, please use the "UCLouvain SSO" button to connect on the website. To connect your git clients, use ssh + ssh key (https://git.immc.ucl.ac.be/-/profile/keys) or https + personal access token. You can create a personal access token with read_repository and write_repository permissions on https://git.immc.ucl.ac.be/-/profile/personal_access_tokens. Then use this token as password with your uclouvain login to access the repositories over https.

Commit 43d9c5d8 authored by Célestin Marot's avatar Célestin Marot
Browse files

available for reproducible research

parent 1f40a271
Quality tetrahedral mesh generation with HXT : reproducible benchmark
=====================================================================
This repository contains information to help you reproduce the result in the paper entitled
> Quality tetrahedral mesh generation with HXT
In this paper, three programs are tested and compared: Gmsh, TetGen and HXT.
Those software are not supplied in this repository, but you get simply download
them as follow:
* Gmsh and HXT: download Gmsh's Gitlab repository [here](https://gitlab.onelab.info/gmsh/gmsh).
* TetGen: download [here](http://wias-berlin.de/software/index.jsp?id=TetGen)
You also need a C and C++ compiler: GCC 9.3.0 is the compiler used in the paper.
## Compilation
To compile **Gmsh**, create a build directory, open a terminal in the build
directory and simply modify `GMSH_DIR` to point to where the top-level gmsh
directory is located:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-march=native" -DCMAKE_CXX_FLAGS="-march=native" GMSH_DIR
make -j
export GMSH=$(PWD)/gmsh
To compile **HXT's tetrahedral mesh generator**, create another build
directory, open a terminal in that directory and again, adapt these command:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-march=native" -DCMAKE_CXX_FLAGS="-march=native" PATH_TO_GMSH/contrib/hxt/tetMesh
export HXTTETMESH=$(PWD)/tetMesh_CLI
To compile **TetGen**, simply enter the command
make
export TETGEN=$(PWD)/tetgen
in TetGen's top-level directory
verify that all program works correctly by asking them to show the help:
$GSMH -h
$HXTTETMESH -h
$TETGEN -h
## Create STL files for TetGen
Open each \*.msh in the *meshes* directory with gmsh and export the mesh to the stl format with the same basename.
## Running the performance benchmark
Once the STL files are created, the 3 programs are compiled correctly and the
environment variables `$GSMH`, `$HXTTETMESH` and `$TETGEN` are set, simply go
in this directory and launch the benchmarks with the commands:
bash gmsh_bench.sh
bash hxt_bench.sh "1 2 4 8" # adapt to the nbr. of threads to be tested
bash hxt_reprod_bench.sh "1 2 4 8" # same
bash tetgen_bench.sh
## Running the mesh quality benchmarks
The mesh quality benchmark procedure is explained in qualities/README.md
\ No newline at end of file
......@@ -14,8 +14,8 @@ bash benchmark_speed.sh \
/Done reconstructing mesh/ {bndRecov=$7+0}
/Done meshing 3D/ {refine=$7 - emptyMesh - bndRecov}
/Done optimizing mesh/ {opti=$7+0}
/[0-9]+ nodes [0-9]+ elements/ {ntet=$5}
END{print emptyMesh,bndRecov,refine,opti,ntet}' \
/[0-9]+ nodes [0-9]+ elements/ {npts=$3; ntet=$5;}
END{print emptyMesh, bndRecov, refine, opti, ntet, npts}' \
$GMSH -3 -format msh41 -bin -optimize_threshold 0.35 -o tmp.msh
rm tmp.msh
\ No newline at end of file
This diff is collapsed.
command,file,numThreads,wallTime,cpuLoad,maxMemKb,emptyMesh,bndRecov,refine,opti,numTets
TetGen,fibers100,8,32.565999999999995,99.0,765481.6,0.420835,0.5547633999999999,12.250060000000001,7.7470940000000015,2897468.0
TetGen,rotor,8,14.684000000000001,99.0,556864.0,1.2518559999999999,1.351148,2.641994,1.4860139999999997,560094.0
TetGen,piston,8,3.832,99.0,160924.0,0.2759374,0.310379,1.155002,0.5000156,224860.0
TetGen,rim,8,89.21400000000001,99.0,2602779.2,3.4061999999999997,4.633894,28.796180000000003,13.973680000000002,5474329.0
Gmsh,fibers100,8,131.216,99.0,1877249.6,0.9533074000000001,2.430324,102.8308,20.51784,3681358.0
Gmsh,fibers300,8,908.5260000000001,94.8,7738987.2,9.783998,33.03866000000001,707.5516,129.152,16363258.0
Gmsh,fuseecurv,8,393.46400000000006,99.0,4212016.0,13.77526,32.93452,276.8438,53.96656,8431656.0
Gmsh,rotor,8,19.169999999999998,99.0,605537.6,2.308962,6.298004,7.213394000000001,2.042082,748510.0
Gmsh,piston,8,7.006,99.0,209537.6,0.523805,0.07154469999999999,5.00669,1.0242660000000001,299737.0
Gmsh,rim,8,206.82399999999998,99.0,2692551.2,9.6832,23.9172,134.82739999999998,28.206079999999996,5557349.0
% Hxt,fibers100,1,12.719999999999999,99.0,559840.0,0.19980000000000003,0.881,6.525,4.9678,7189677.0
% Hxt,fibers100,2,8.758,181.0,574844.0,0.1506,0.7726000000000001,4.1312,3.5598,7185733.0
% Hxt,fibers100,3,7.348000000000001,246.6,576246.4,0.1454,0.737,3.218,3.1016000000000004,7179546.0
% Hxt,fibers100,4,6.208,306.2,584058.4,0.156,0.7198,2.763,2.4236,7191023.8
% Hxt,fibers100,5,7.4879999999999995,357.2,583940.0,0.16,0.732,2.9139999999999997,3.5357999999999996,7191822.0
% Hxt,fibers100,6,6.866,407.8,584094.4,0.1628,0.7272000000000001,2.6866,3.1432000000000007,7183626.0
% Hxt,fibers100,7,6.494,485.0,582017.6,0.154,0.7205999999999999,2.5328,2.9392,7193537.0
Hxt,fibers100,8,6.074,523.8,577300.8,0.1562,0.7182,2.4924000000000004,2.5614,7183108.0
% Hxt,fibers300,1,56.092000000000006,99.0,2018704.0,1.5528,8.278199999999998,26.469,18.8914,26994255.0
% Hxt,fibers300,2,38.092,174.0,2029640.0,1.1036000000000001,7.010800000000001,16.1522,12.9218,26987660.8
% Hxt,fibers300,3,31.562,231.4,2031760.8,1.1718,6.7276,13.1876,9.5158,26996868.0
% Hxt,fibers300,4,27.442,283.4,2032268.8,1.0554000000000001,6.6054,10.744,8.1224,26988587.4
% Hxt,fibers300,5,28.834000000000003,328.6,2032859.2,1.0044,6.6708,11.554599999999999,8.6922,26980500.0
% Hxt,fibers300,6,26.805999999999994,389.2,2045440.8,1.061,6.5699999999999985,10.4116,7.8618,26980087.2
% Hxt,fibers300,7,26.246000000000002,435.2,2044975.2,1.0897999999999999,6.500400000000001,9.954399999999998,7.7958,26983032.2
Hxt,fibers300,8,25.656,479.4,2045937.6,1.1288,6.5336,8.9476,8.139,26991356.0
% Hxt,fuseecurv,1,48.67999999999999,99.0,2590808.0,2.2866,10.0154,15.7172,19.427599999999998,14198048.0
% Hxt,fuseecurv,2,33.664,159.8,2590676.0,1.6463999999999999,8.9456,10.6042,11.2374,14195334.8
% Hxt,fuseecurv,3,28.387999999999998,206.8,2591083.2,1.3032000000000001,8.690000000000001,8.263200000000001,8.9018,14190869.8
% Hxt,fuseecurv,4,27.212,236.0,2591560.0,1.5239999999999998,8.564,7.3422,8.569600000000001,14187688.2
% Hxt,fuseecurv,5,28.139999999999997,270.8,2591644.0,1.5666,8.565999999999999,7.612399999999999,9.198400000000001,14189752.0
% Hxt,fuseecurv,6,25.556,318.4,2591367.2,1.2192,8.5672,6.6617999999999995,7.941599999999999,14190054.6
% Hxt,fuseecurv,7,24.720000000000002,348.4,2591336.0,1.4782,8.488,6.0474000000000006,7.5234000000000005,14186431.8
Hxt,fuseecurv,8,24.830000000000002,383.0,2590547.2,1.5710000000000002,8.5404,5.900399999999999,7.658799999999999,14189379.2
% Hxt,rotor,1,3.778,99.0,573168.8,0.4412,2.0106,0.3788,0.616,934296.0
% Hxt,rotor,2,3.1919999999999997,132.0,574062.4,0.347,1.8156000000000003,0.2564,0.44320000000000004,934153.0
% Hxt,rotor,3,2.942,162.0,579370.4,0.2924,1.7648,0.20579999999999998,0.3478,933930.0
% Hxt,rotor,4,2.9080000000000004,184.4,586051.2,0.2834,1.7504000000000002,0.207,0.3346,933095.4
% Hxt,rotor,5,2.9419999999999997,210.8,586029.6,0.30820000000000003,1.7744,0.22800000000000004,0.2924,932665.6
% Hxt,rotor,6,3.1260000000000003,233.8,560164.0,0.3666,1.7946000000000002,0.231,0.36360000000000003,932288.0
% Hxt,rotor,7,3.372,266.8,560493.6,0.35300000000000004,1.8980000000000001,0.29,0.46980000000000005,932972.2
Hxt,rotor,8,3.3920000000000003,292.2,559669.6,0.3572,1.911,0.3456,0.42300000000000004,932726.0
% Hxt,piston,1,1.454,98.4,172904.8,0.1952,0.6845999999999999,0.32860000000000006,0.1152,448679.0
% Hxt,piston,2,0.9099999999999999,148.2,172712.8,0.1,0.492,0.1734,0.067,448186.8
% Hxt,piston,3,0.874,181.2,173676.0,0.10700000000000001,0.4782,0.1542,0.060399999999999995,448071.2
% Hxt,piston,4,0.9560000000000001,200.2,173491.2,0.147,0.5032,0.17120000000000002,0.048600000000000004,448069.2
% Hxt,piston,5,0.8379999999999999,254.2,173433.6,0.09259999999999999,0.4680000000000001,0.1482,0.055600000000000004,448497.0
% Hxt,piston,6,0.876,279.2,174052.0,0.1212,0.4708,0.1574,0.0474,447614.8
% Hxt,piston,7,0.8880000000000001,319.2,174072.8,0.0992,0.4795999999999999,0.18400000000000002,0.046,448137.6
Hxt,piston,8,0.9099999999999999,351.2,173396.8,0.1232,0.4746,0.16660000000000003,0.0662,448095.4
% Hxt,rim,1,20.084000000000003,99.0,1992907.2,1.6172,7.8469999999999995,7.1524,2.3186,7535343.0
% Hxt,rim,2,16.152,140.6,1993444.0,1.3554,7.2376000000000005,4.914199999999999,1.4864000000000002,7529741.0
% Hxt,rim,3,14.488000000000003,180.8,1993505.6,1.0826,7.053999999999999,4.0032,1.2266,7530211.0
% Hxt,rim,4,13.197999999999999,205.6,1993817.6,0.9019999999999999,6.8312,3.4074000000000004,0.9231999999999999,7529429.8
% Hxt,rim,5,13.439999999999998,239.8,1993459.2,1.0051999999999999,6.8835999999999995,3.5032000000000005,0.9366,7529886.0
% Hxt,rim,6,12.870000000000001,266.2,1993405.6,0.9905999999999999,6.7792,3.1813999999999996,0.8460000000000001,7530847.2
% Hxt,rim,7,12.482000000000001,294.2,1993196.8,0.9783999999999999,6.678399999999999,2.9814,0.7849999999999999,7533908.4
Hxt,rim,8,12.081999999999999,326.4,1994032.0,0.8686,6.6408000000000005,2.825,0.6900000000000001,7529105.0
% HxtRep,fibers100,1,12.728,99.0,559793.6,0.2008,0.8826,6.533199999999999,4.965000000000001,7189677.0
% HxtRep,fibers100,2,9.541999999999998,185.0,883795.2,0.23879999999999998,0.694,5.6846000000000005,2.7802000000000002,7175672.0
% HxtRep,fibers100,3,8.35,250.0,880970.4,0.17219999999999996,0.6599999999999999,4.3834,2.9899999999999998,7184467.0
% HxtRep,fibers100,4,6.8340000000000005,324.0,902530.4,0.17040000000000002,0.642,3.8259999999999996,2.0528,7183372.0
% HxtRep,fibers100,5,7.645999999999999,387.0,877515.2,0.205,0.6522,4.202800000000001,2.4406,7183575.0
% HxtRep,fibers100,6,7.848000000000001,435.8,875269.6,0.1882,0.648,4.157,2.7106000000000003,7180564.0
% HxtRep,fibers100,7,7.086,513.6,874134.4,0.16720000000000002,0.6407999999999999,3.8514000000000004,2.2854,7186497.0
HxtRep,fibers100,8,7.17,577.4,881634.4,0.18560000000000004,0.6408,3.6477999999999993,2.5504,7185634.0
% HxtRep,fibers300,1,56.214,99.0,2018720.0,1.555,8.309000000000001,26.507599999999996,18.9358,26994255.0
% HxtRep,fibers300,2,44.29,140.0,2035940.0,1.8284000000000002,6.3142000000000005,24.367199999999997,10.875,26991086.0
% HxtRep,fibers300,3,39.944,231.4,3071464.8,1.3272,5.943199999999999,22.4534,9.3232,26978678.0
% HxtRep,fibers300,4,36.608,285.0,3043064.8,1.2212,5.8336,20.278399999999998,8.3798,26973741.0
% HxtRep,fibers300,5,39.398,346.0,3030379.2,1.4018,5.8888,22.6014,8.611799999999999,26980625.0
% HxtRep,fibers300,6,37.446,398.0,3009461.6,1.464,5.8068,21.4122,7.8648,26982715.0
% HxtRep,fibers300,7,34.284000000000006,464.6,3030420.8,1.4485999999999999,5.7318,19.314,6.894800000000001,26977660.0
HxtRep,fibers300,8,34.4,514.8,3021300.0,1.3504,5.742,20.0094,6.4004,26970276.0
% HxtRep,fuseecurv,1,47.606,99.0,2590845.6,2.1486000000000005,9.838799999999999,15.347799999999998,19.0728,14198048.0
% HxtRep,fuseecurv,2,35.922,159.8,2590286.4,2.0058,8.2062,14.589400000000001,9.907,14189059.0
% HxtRep,fuseecurv,3,31.118000000000002,214.6,2590191.2,1.7627999999999997,7.5744,12.1096,8.447999999999999,14186105.0
% HxtRep,fuseecurv,4,28.483999999999998,254.6,2590064.0,1.7686,7.673399999999999,10.415,7.4338,14193649.0
% HxtRep,fuseecurv,5,30.354000000000003,298.0,2590117.6,1.9262000000000001,7.585400000000002,11.609399999999999,8.0584,14189116.0
% HxtRep,fuseecurv,6,28.016,355.8,2590072.0,1.7736,7.602200000000001,10.2752,7.1908,14194183.0
% HxtRep,fuseecurv,7,28.218,399.4,2589988.0,1.9494,7.5744,10.0382,7.5032,14187560.0
HxtRep,fuseecurv,8,27.694,444.6,2589920.0,1.6712000000000002,7.596199999999999,9.765199999999998,7.5068,14192471.0
% HxtRep,rotor,1,3.752,99.0,573143.2,0.438,2.0060000000000002,0.3744,0.6002,934296.0
% HxtRep,rotor,2,3.19,131.6,574229.6,0.4058,1.6784,0.3542,0.42219999999999996,934165.0
% HxtRep,rotor,3,2.966,169.6,582352.8,0.3424,1.6232,0.3505999999999999,0.3192,933622.0
% HxtRep,rotor,4,2.92,194.8,579188.8,0.347,1.5912,0.34919999999999995,0.3066,932718.0
% HxtRep,rotor,5,2.976,232.0,559620.0,0.3330000000000001,1.6320000000000001,0.386,0.3164,932848.0
% HxtRep,rotor,6,2.9619999999999997,253.4,559799.2,0.36879999999999996,1.6156,0.35539999999999994,0.3114,932570.0
% HxtRep,rotor,7,2.8980000000000006,283.4,559241.6,0.317,1.607,0.3558,0.3066,932570.0
HxtRep,rotor,8,2.946,301.4,559043.2,0.34719999999999995,1.6016000000000001,0.3529999999999999,0.33120000000000005,932699.0
% HxtRep,piston,1,1.08,99.0,172830.4,0.11540000000000002,0.5464,0.2512,0.09119999999999999,448679.0
% HxtRep,piston,2,0.9200000000000002,153.0,181825.6,0.1066,0.4548,0.23759999999999998,0.045799999999999993,448148.0
% HxtRep,piston,3,0.874,190.6,174605.6,0.11240000000000001,0.43479999999999996,0.21400000000000002,0.037,448832.0
% HxtRep,piston,4,0.8460000000000001,216.2,178104.8,0.128,0.4206,0.18380000000000002,0.036199999999999996,447884.0
% HxtRep,piston,5,0.852,273.6,172722.4,0.11180000000000001,0.4222,0.1942,0.05,448031.0
% HxtRep,piston,6,0.8619999999999999,307.4,176210.4,0.1282,0.42079999999999995,0.2012,0.036199999999999996,447726.0
% HxtRep,piston,7,0.8480000000000001,348.6,181319.2,0.1126,0.42400000000000004,0.1968,0.04,447903.0
HxtRep,piston,8,0.8479999999999999,379.2,175720.0,0.11560000000000001,0.41579999999999995,0.2012,0.0392,448530.0
% HxtRep,rim,1,18.904000000000003,99.0,1992945.6,1.4934,7.65,6.489999999999999,2.2134,7535343.0
% HxtRep,rim,2,16.672,149.0,1992873.6,1.4292,6.419,6.8062,0.9575999999999999,7529962.0
% HxtRep,rim,3,14.712,198.4,1993002.4,1.264,6.1734,5.437400000000001,0.7036,7529926.0
% HxtRep,rim,4,14.602,227.4,1992912.8,1.2748,6.3442,5.276999999999999,0.6304000000000001,7533902.0
% HxtRep,rim,5,14.66,278.8,1992464.8,1.2109999999999999,6.2856000000000005,5.312600000000001,0.7256,7532492.0
% HxtRep,rim,6,14.330000000000002,319.0,1992344.8,1.3134000000000001,6.2182,5.069599999999999,0.6204,7532285.0
% HxtRep,rim,7,14.030000000000001,354.0,1992520.0,1.2663999999999997,6.2288,4.8884,0.5528000000000002,7529229.0
HxtRep,rim,8,13.831999999999999,391.4,1992733.6,1.3498,6.0969999999999995,4.748399999999999,0.5492,7530285.0
\documentclass[10pt]{article}
\usepackage[top=2.5cm, bottom=2.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage{graphicx}
\usepackage{subcaption}
%**************************************************
% PGF plot options
%**************************************************
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\input{tol_colors.tex}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[b]{0.32\textwidth}
\centering
~~~
\includegraphics[width=0.25\textwidth]{images/surface_rotor}
~~
\includegraphics[width=0.25\textwidth]{images/volume_rotor}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\includegraphics[width=0.43\textwidth]{images/surface_piston}
\includegraphics[width=0.43\textwidth]{images/volume_piston}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\includegraphics[width=0.46\textwidth]{images/surface_rim}
\includegraphics[width=0.46\textwidth]{images/volume_rim}
\end{subfigure}
\\[0.5cm]
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,20000,40000,60000,80000},
cycle list={
{fill=tolLightYellow, draw=tolDarkGrey},
{fill=tolLightCyan, draw=tolDarkGrey},
{fill=tolPaleGrey, draw=tolDarkGrey},
{fill=tolLightOrange, draw=tolDarkGrey}
},
ylabel={\# angles},
% xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
% skip coords between index={0}{3},
% skip coords between index={103}{1000},
% major tick length=\MajorTickLength,
% every tick/.style={
% black,
% semithick,
% },
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=Gmshrotor]{data/qualitiesTranspose.csv};
\addlegendentry{Gmsh - Rotor};
\draw[red] ({axis cs:174.76398,0}|-{rel axis cs:0,1}) -- ({axis cs:174.76398,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:4.060352999999992,0}|-{rel axis cs:0,1}) -- ({axis cs:4.060352999999992,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:69.83573,0}|-{rel axis cs:0,1}) -- ({axis cs:69.83573,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,10000,20000,30000},
cycle list={
{fill=tolLightYellow, draw=tolDarkGrey},
{fill=tolLightCyan, draw=tolDarkGrey},
{fill=tolPaleGrey, draw=tolDarkGrey},
{fill=tolLightOrange, draw=tolDarkGrey}
},
% ylabel={\# angles},
% xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=Gmshpiston]{data/qualitiesTranspose.csv};
\addlegendentry{Gmsh - Piston};
\draw[red] ({axis cs:161.395444,0}|-{rel axis cs:0,1}) -- ({axis cs:161.395444,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:11.235770000000002,0}|-{rel axis cs:0,1}) -- ({axis cs:11.235770000000002,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:69.6865,0}|-{rel axis cs:0,1}) -- ({axis cs:69.6865,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,200000,400000,600000,800000},
cycle list={
{fill=tolLightYellow, line width=0.01mm, draw=tolDarkGrey},
{fill=tolLightCyan, line width=0.01mm, draw=tolDarkGrey},
{fill=tolPaleGrey, line width=0.01mm, draw=tolDarkGrey},
{fill=tolLightOrange, line width=0.01mm, draw=tolDarkGrey}
},
% ylabel={\# angles},
% xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=Gmshrim]{data/qualitiesTranspose.csv};
\addlegendentry{Gmsh - Rim};
\draw[red] ({axis cs:177.220358,0}|-{rel axis cs:0,1}) -- ({axis cs:177.220358,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:1.5928130000000067,0}|-{rel axis cs:0,1}) -- ({axis cs:1.5928130000000067,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:69.695713,0}|-{rel axis cs:0,1}) -- ({axis cs:69.695713,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\\
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,20000,40000,60000,80000},
cycle list={{fill=tolPaleGrey, line width=0.01mm, draw=tolDarkGrey}},
ylabel={\# angles},
% xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=TetGenrotor]{data/qualitiesTranspose.csv};
\addlegendentry{Tetgen - Rotor};
\draw[red] ({axis cs:173.053202,0}|-{rel axis cs:0,1}) -- ({axis cs:173.053202,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:4.665623000000011,0}|-{rel axis cs:0,1}) -- ({axis cs:4.665623000000011,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:70.034871,0}|-{rel axis cs:0,1}) -- ({axis cs:70.034871,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,10000,20000,30000},
cycle list={{fill=tolPaleGrey, line width=0.01mm, draw=tolDarkGrey}},
% ylabel={\# angles},
% xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=TetGenpiston]{data/qualitiesTranspose.csv};
\addlegendentry{Tetgen - Piston};
\draw[red] ({axis cs:161.395444,0}|-{rel axis cs:0,1}) -- ({axis cs:161.395444,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:11.235770000000002,0}|-{rel axis cs:0,1}) -- ({axis cs:11.235770000000002,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:70.051849,0}|-{rel axis cs:0,1}) -- ({axis cs:70.051849,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,200000,400000,600000,800000},
cycle list={{fill=tolPaleGrey, line width=0.01mm, draw=tolDarkGrey}},
% ylabel={\# angles},
% xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=TetGenrim]{data/qualitiesTranspose.csv};
\addlegendentry{Tetgen - Rim};
\draw[red] ({axis cs:169.371176,0}|-{rel axis cs:0,1}) -- ({axis cs:169.371176,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:6.395999999999987,0}|-{rel axis cs:0,1}) -- ({axis cs:6.395999999999987,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:70.086182,0}|-{rel axis cs:0,1}) -- ({axis cs:70.086182,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\\
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,20000,40000,60000,80000},
cycle list={{fill=tolLightOrange, line width=0.01mm, draw=tolDarkGrey}},
ylabel={\# angles},
xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=HxtReprotor]{data/qualitiesTranspose.csv};
\addlegendentry{Ours - Rotor};
\draw[red] ({axis cs:149.196876,0}|-{rel axis cs:0,1}) -- ({axis cs:149.196876,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:5.095582000000007,0}|-{rel axis cs:0,1}) -- ({axis cs:5.095582000000007,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:69.878252,0}|-{rel axis cs:0,1}) -- ({axis cs:69.878252,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,10000,20000,30000},
cycle list={{fill=tolLightOrange, line width=0.01mm, draw=tolDarkGrey}},
% ylabel={\# angles},
xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=HxtReppiston]{data/qualitiesTranspose.csv};
\addlegendentry{Ours - Piston};
\draw[red] ({axis cs:146.644281,0}|-{rel axis cs:0,1}) -- ({axis cs:146.644281,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:13.762364999999988,0}|-{rel axis cs:0,1}) -- ({axis cs:13.762364999999988,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:69.776339,0}|-{rel axis cs:0,1}) -- ({axis cs:69.776339,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=1,
bar shift=0.5,
xmin=0,
xmax=180,
ymin=0,
xtick={0,45,90,135,180},
ytick={0,200000,400000,600000,800000},
cycle list={{fill=tolLightOrange, line width=0.01mm, draw=tolDarkGrey}},
% ylabel={\# angles},
xlabel={dihedral angle [°]},
legend cell align={left},
legend style={at={(0.95,0.95)}, anchor=north east},
filter discard warning=false, % to disable warnings
]
\addplot
table[x expr={(\lineno > 307 && \lineno <= 487) ? (\lineno - 307) : nan}, y=HxtReprim]{data/qualitiesTranspose.csv};
\addlegendentry{Ours - Rim};
\draw[red] ({axis cs:149.09439700000001,0}|-{rel axis cs:0,1}) -- ({axis cs:149.09439700000001,0}|-{rel axis cs:0,0});
\draw[red] ({axis cs:5.915645000000012,0}|-{rel axis cs:0,1}) -- ({axis cs:5.915645000000012,0}|-{rel axis cs:0,0});
\draw[blue] ({axis cs:69.742556,0}|-{rel axis cs:0,1}) -- ({axis cs:69.742556,0}|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{subfigure}
\end{figure}
\end{document}
\ No newline at end of file
\documentclass[10pt]{article}
\usepackage[top=2.5cm, bottom=2.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage{graphicx}
\usepackage{subcaption}
%**************************************************
% PGF plot options
%**************************************************
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\input{tol_colors.tex}
\begin{document}
\begin{figure}
\centering
\begin{subfigure}[b]{0.32\textwidth}
\centering
~~~
\includegraphics[width=0.25\textwidth]{images/surface_rotor}
~~
\includegraphics[width=0.25\textwidth]{images/volume_rotor}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\includegraphics[width=0.43\textwidth]{images/surface_piston}
\includegraphics[width=0.43\textwidth]{images/volume_piston}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\centering
\includegraphics[width=0.46\textwidth]{images/surface_rim}
\includegraphics[width=0.46\textwidth]{images/volume_rim}
\end{subfigure}
\\[0.5cm]
\begin{subfigure}[b]{0.32\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=0.8\textwidth,
height=0.65\textwidth,
ybar,% this line changes the cycle list
bar width=0.01,
bar shift=0.005,
xmin=0,
xmax=1,
ymin=0,
ytick={0,10000,20000,30000,40000},
cycle list={
{fill=tolLightYellow, draw=tolDarkGrey},
{fill=tolLightCyan, draw=tolDarkGrey},
{fill=tolPaleGrey, draw=tolDarkGrey},
{fill=tolLightOrange, draw=tolDarkGrey}
},
ylabel={\# tet.},
% xlabel={Gamma},
legend cell align={left},
legend style={at={(0.05,0.95)}, anchor=north west},
filter discard warning=false, % to disable warnings
% skip coords between index={0}{3},
% skip coords between index={103}{1000},
% major tick length=\MajorTickLength,
% every tick/.style={
% black,
% semithick,
% },
]
\addplot
table[x expr={(\lineno > 205 && \lineno <= 305) ? (\lineno - 205)/100 : nan}, y=Gmshrotor]{data/qualitiesTranspose.csv};
\addlegendentry{Gmsh - Rotor};
\draw[red] ({axis cs:0.013863,0}|-{rel axis cs:0,1}) -- ({axis cs:0.013863,0}|-{rel axis cs:0,0});