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});
\draw[blue] ({axis cs:0.770123,0}|-{rel axis cs:0,1}) -- ({axis cs:0.770123,0}|-{rel axis cs:0,0});