diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f4ff8046795b8c34e77c5cfcee0d798634ba1fb4..e4f4cafdc1bab443fcd9dec764d840128391009f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -119,7 +119,7 @@ database:
     when: always
     paths:
       - ./*.csv
-      - ./*.png
+      - ./*.pdf
       - ./*.sqlite3
       - ./scripts/results/
 
diff --git a/scripts/database.sh b/scripts/database.sh
index 53d5741efeeec01830e93abc7dae75780a17afd3..9d6f5699c27b5bfd2655d485f200a37768fd157d 100755
--- a/scripts/database.sh
+++ b/scripts/database.sh
@@ -38,6 +38,7 @@ python3 ./scripts/add_result.py -e https://elasticsearch.bordeaux.inria.fr -t co
 python3 ./scripts/add_result.py -e https://elasticsearch.bordeaux.inria.fr -t concace -p scalfmm -n timeomp scalfmm_timeomp.csv
 
 # plot some figures at this precise commit
+python3 ./scripts/plot_wrong_accuracy.py -f scalfmm_accuracy.csv -n accuracy
 python3 ./scripts/plot.py -f scalfmm_accuracy.csv -n accuracy
 python3 ./scripts/plot.py -f scalfmm_timeseq.csv -n timeseq
 python3 ./scripts/plot.py -f scalfmm_timeomp.csv -n timeomp
diff --git a/scripts/plafrim_level1.sh b/scripts/plafrim_level1.sh
index 243c56fab8da67a6cb4a06d3945dd595a92916d2..4fe7ef1bf887468ffff9495126e8fd5c95f7e2bc 100755
--- a/scripts/plafrim_level1.sh
+++ b/scripts/plafrim_level1.sh
@@ -21,7 +21,7 @@ case "${CI_BENCHMARK}" in
     ;;
   timeomp)
     SLURM_NAME=scalfmm_timeomp
-    SLURM_NCORES=16
+    SLURM_NCORES=32
     ;;
   *)
     echo "CI_BENCHMARK is set to an unknown value."
diff --git a/scripts/plot.py b/scripts/plot.py
index d56a62c9a21092e823958e1114345efd2ddec329..38334593cf84493ff2ae228f150cae35981195f9 100644
--- a/scripts/plot.py
+++ b/scripts/plot.py
@@ -14,39 +14,44 @@ def main(
     df = pd.read_csv(file)
 
     if name == "accuracy":
-        for (ndim, kernel_type, interp_type, tree_height), group in df.groupby(['ndim', 'kernel_type', 'interp_type', 'tree_height']):
-            x = group['interp_order']
-            y = group['error']
-            plt.plot(x, y, label=f"{ndim}-{kernel_type}-{interp_type}-{tree_height}")
-            plt.yscale('log')
+        for ndim, group_ndim in df.groupby('ndim'):
+            plt.figure()
+            for (kernel_type, interp_type, tree_height), group in group_ndim.groupby(['kernel_type', 'interp_type', 'tree_height']):
+                x = group['interp_order']
+                y = group['error']
+                plt.plot(x, y, label=f"k={kernel_type}-i={interp_type}-h={tree_height}")
+                plt.yscale('log')
+            plt.xlabel('Order')
+            plt.ylabel('Relative norm-2 error')
+            plt.title(f'Error vs. Order (d={ndim})')
+            plt.legend()
+            plt.savefig(f'scalfmm_accuracy_d={ndim}.pdf', bbox_inches='tight')
 
-        plt.xlabel('Order')
-        plt.ylabel('Relative norm-2 error')
-        plt.title('Error vs. Order')
-        plt.legend()
-        plt.savefig('scalfmm_accuracy.png', bbox_inches='tight')
     elif name == "timeseq":
-        for (ndim, kernel_type, interp_type, tree_height, interp_order), group in df.groupby(['ndim', 'kernel_type', 'interp_type', 'tree_height', 'interp_order']):
-            x = group['size']
-            y = group['timefull_avg']
-            plt.plot(x, y, label=f"{ndim}-{kernel_type}-{interp_type}-{tree_height}-{interp_order}")
+        for ndim, group_ndim in df.groupby('ndim'):
+            plt.figure()
+            for (kernel_type, interp_type, tree_height, interp_order), group in group_ndim.groupby(['kernel_type', 'interp_type', 'tree_height', 'interp_order']):
+                x = group['size']
+                y = group['timefull_avg']
+                plt.plot(x, y, label=f"k={kernel_type}-i={interp_type}-h={tree_height}-o={interp_order}")
+            plt.xlabel('Size')
+            plt.ylabel('Time (s)')
+            plt.title(f'Time vs. Size (d={ndim})')
+            plt.legend()
+            plt.savefig(f'scalfmm_timeseq_d={ndim}.pdf', bbox_inches='tight')
 
-        plt.xlabel('Size')
-        plt.ylabel('Time (s)')
-        plt.title('Time vs. Size')
-        plt.legend()
-        plt.savefig('scalfmm_timeseq.png', bbox_inches='tight')
     elif name == "timeomp":
-        for (ndim, kernel_type, interp_type, tree_height, interp_order, size, groupsize), group in df.groupby(['ndim', 'kernel_type', 'interp_type', 'tree_height', 'interp_order', 'size', 'groupsize']):
-            x = group['nthread']
-            y = group['timefull_avg']
-            plt.plot(x, y, label=f"{ndim}-{kernel_type}-{interp_type}-{tree_height}-{interp_order}-{size}-{groupsize}")
-
-        plt.xlabel('Number of threads')
-        plt.ylabel('Time (s)')
-        plt.title('Time vs. Number of threads')
-        plt.legend()
-        plt.savefig('scalfmm_timeomp.png', bbox_inches='tight')
+        for ndim, group_ndim in df.groupby('ndim'):
+            plt.figure()
+            for (kernel_type, interp_type, tree_height, interp_order, size, groupsize), group in group_ndim.groupby(['kernel_type', 'interp_type', 'tree_height', 'interp_order', 'size', 'groupsize']):
+                x = group['nthread']
+                y = group['timefull_avg']
+                plt.plot(x, y, label=f"k={kernel_type}-i={interp_type}-h={tree_height}-o={interp_order}-{size}-{groupsize}")
+            plt.xlabel('Number of threads')
+            plt.ylabel('Time (s)')
+            plt.title(f'Time vs. Number of threads (d={ndim})')
+            plt.legend()
+            plt.savefig(f'scalfmm_timeomp_d={ndim}.pdf', bbox_inches='tight')
 
 if __name__ == "__main__":
     main()
\ No newline at end of file
diff --git a/scripts/plot_wrong_accuracy.py b/scripts/plot_wrong_accuracy.py
index 32d84caaf1c1c48475f38fd8ca07380cc0af75b3..f148d3f730dd4bf7d45370013a531ebad108bd57 100644
--- a/scripts/plot_wrong_accuracy.py
+++ b/scripts/plot_wrong_accuracy.py
@@ -2,10 +2,7 @@
 # ['gitcommit', 'gitcommitdate', 'hostname', 'ndim', 'kernel_type', 'interp_type', 'tree_height', 'interp_order', 'error']
 # Je souhaite comparer le champ de la colonne 'error' avec le champ 10.0^(1-o) pour o dans la colonne 'interp_order' lorsque la valeur de  'interp_order' est < 12
 #     je souhaite afficher toutes les lignes telsque si comparaison est False alors j'extrais le tuple associé sux colonnes 'ndim', 'kernel_type', 'interp_type', 'tree_height' et pour ce tuple de valeur j'extraie les lignes
-# #
-
-
-
+#
 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt
@@ -13,7 +10,7 @@ import matplotlib.pyplot as plt
 file="scalfmm_accuracy.csv"
 
 df = pd.read_csv(file)
-coeff = 3.0 
+coeff = 3.0
 # Calcul de 10^(1 - interp_order)
 df['computed_value'] = coeff*(10.0 ** (1 - df['interp_order']))
 xref=  df['interp_order'].unique()
@@ -35,11 +32,11 @@ tuples_faux = df_faux_comparaison[['ndim', 'kernel_type', 'interp_type', 'tree_h
 df_resultat = pd.DataFrame(columns=df.columns)
 for _, couple in tuples_faux.iterrows():
     ndim, kernel, interp, tree = couple['ndim'], couple['kernel_type'], couple['interp_type'], couple['tree_height']
-    
+
     # Filtrer les lignes du DataFrame d'origine qui ont ce tuple
-    result = df[(df['ndim'] == ndim) & (df['kernel_type'] == kernel) & 
+    result = df[(df['ndim'] == ndim) & (df['kernel_type'] == kernel) &
                 (df['interp_type'] == interp) & (df['tree_height'] == tree)]
-    
+
     # Afficher les lignes pour chaque tuple
     print(f"Résultats pour ndim = {ndim}, kernel_type = {kernel}, interp_type = {interp}, tree_height = {tree}:")
     # print(result)
@@ -59,7 +56,7 @@ for d in range(1,4):
         if ndim == d:
             x = group['interp_order']
             y = group['error']
-            plt.plot(x, y, label=f"{ndim}-{kernel_type}-{interp_type}-{tree_height}")
+            plt.plot(x, y, label=f"k={kernel_type}-i={interp_type}-h={tree_height}")
             plt.yscale('log')
 
     plt.plot(xref,yref,'-x')
@@ -67,5 +64,4 @@ for d in range(1,4):
     plt.ylabel('Relative norm-2 error')
     plt.title('Error vs. Order')
     plt.legend()
-    file = 'scalfmm_wrong_accuracy_d='+str(d)+'.pdf'
-    plt.savefig(file, bbox_inches='tight')
\ No newline at end of file
+    plt.savefig(f"scalfmm_wrong_accuracy_d={d}.pdf", bbox_inches='tight')
diff --git a/scripts/scalfmm-accuracy.xml b/scripts/scalfmm-accuracy.xml
index 77073acf27337fc7b44bf0eef907efeeb677caa9..5812c37504c0262c1edb72ff38f8e7093330beaf 100644
--- a/scripts/scalfmm-accuracy.xml
+++ b/scripts/scalfmm-accuracy.xml
@@ -7,17 +7,17 @@
         <parameterset name="param">
             <parameter name="ndim"               type="int"   >1, 2, 3</parameter>
             <!-- <parameter name="ndim"               type="int"   >2, 3</parameter> -->
-            <parameter name="kernel_type"        type="int"   >0, 6, 7</parameter>
+            <parameter name="kernel_type"        type="int"   >0, 7</parameter>
             <!-- <parameter name="kernel_type"        type="int"   >0</parameter> -->
-            <parameter name="interp_type"        type="int"   >0, 1, 2, 3, 4</parameter>
+            <parameter name="interp_type"        type="int"   >1, 2, 4</parameter>
             <!-- <parameter name="interp_type"        type="int"   >3</parameter> -->
             <parameter name="nrun"               type="int"   >1</parameter>
-            <parameter name="nthread"            type="int"   >4</parameter>
             <parameter name="groupsize"          type="int"   >1</parameter>
-            <parameter name="tree_height"        type="int"   >3, 4, 5</parameter>
-            <parameter name="interp_order"       type="int"   >3, 4, 5, 6, 7, 8, 9, 10, 11, 12</parameter>
+            <parameter name="tree_height"        type="int"   >4, 5</parameter>
+            <parameter name="interp_order"       type="int"   >3, 4, 5, 6, 7, 8, 9, 10</parameter>
             <!-- <parameter name="interp_order"       type="int"   >3, 4</parameter> -->
-            <parameter name="command"            type="string">$SCALFMM_EXE_DIR/fmm-computation-seq --direct-computation --fmm-computation --dimension ${ndim} --group-size ${groupsize} --interp-settings ${interp_type} --kernel ${kernel_type} --order ${interp_order} --nb-runs ${nrun} --threads ${nthread} --tree-height ${tree_height}</parameter>
+            <parameter name="size"               type="int"   >15000</parameter>
+            <parameter name="command"            type="string">$SCALFMM_EXE_DIR/fmm-computation-seq --direct-computation --fmm-computation --dimension ${ndim} --group-size ${groupsize} --interp-settings ${interp_type} --kernel ${kernel_type} --order ${interp_order} --nb-runs ${nrun} --size ${size} --tree-height ${tree_height}</parameter>
         </parameterset>
 
         <!-- Execution commands -->
diff --git a/scripts/scalfmm-time-omp.xml b/scripts/scalfmm-time-omp.xml
index 0b48f4acfae611ba59cfe532be2830a0dbd58a8d..a8bef1a6a90dd334b15d208b822d11057ff1eddf 100644
--- a/scripts/scalfmm-time-omp.xml
+++ b/scripts/scalfmm-time-omp.xml
@@ -6,18 +6,14 @@
         <!-- Cartesian product of input parameters -->
         <parameterset name="param">
             <parameter name="ndim"               type="int"   >1, 2, 3</parameter>
-            <!-- <parameter name="ndim"               type="int"   >2</parameter> -->
             <parameter name="kernel_type"        type="int"   >0</parameter>
             <parameter name="interp_type"        type="int"   >2</parameter>
             <parameter name="nrun"               type="int"   >1</parameter>
-            <parameter name="tree_height"        type="int"   >3, 4, 5</parameter>
-            <!-- <parameter name="tree_height"        type="int"   >5</parameter> -->
             <parameter name="interp_order"       type="int"   >5</parameter>
-            <parameter name="size"               type="int"   >100000</parameter>
-            <parameter name="nthread"            type="int"   >1, 2, 4, 8, 16</parameter>
-            <!-- <parameter name="nthread"            type="int"   >1, 2, 4</parameter> -->
-            <parameter name="groupsize"          type="int"   >1, 5, 10, 100, 1000</parameter>
-            <!-- <parameter name="groupsize"          type="int"   >10, 100</parameter> -->
+            <parameter name="size"               type="int"   >500000</parameter>
+            <parameter name="nthread"            type="int"   >1, 2, 4, 8, 16, 32</parameter>
+            <parameter name="tree_height" mode="python" type="int">int(((int($size/(10*$interp_order^$ndim))).bit_length() - 1)/$ndim)</parameter>
+            <parameter name="groupsize"          type="int"   >10, 100, 1000, 5000</parameter>
             <parameter name="command"            type="string">$SCALFMM_EXE_DIR/fmm-computation-omp --fmm-computation --dimension ${ndim} --group-size ${groupsize} --interp-settings ${interp_type} --kernel ${kernel_type} --order ${interp_order} --nb-runs ${nrun} --threads ${nthread} --size ${size} --tree-height ${tree_height}</parameter>
         </parameterset>
 
diff --git a/scripts/scalfmm-time-seq.xml b/scripts/scalfmm-time-seq.xml
index e6c6629ed20411f38cc49e01c3a11831720ff434..f3c3ddb4d1c7e889f89aff06abdf040acccd7ef5 100644
--- a/scripts/scalfmm-time-seq.xml
+++ b/scripts/scalfmm-time-seq.xml
@@ -6,18 +6,14 @@
         <!-- Cartesian product of input parameters -->
         <parameterset name="param">
             <parameter name="ndim"               type="int"   >1, 2, 3</parameter>
-            <!-- <parameter name="ndim"               type="int"   >2</parameter> -->
             <parameter name="kernel_type"        type="int"   >0</parameter>
-            <parameter name="interp_type"        type="int"   >1, 2, 4</parameter>
-            <!-- <parameter name="interp_type"        type="int"   >1</parameter> -->
+            <parameter name="interp_type"        type="int"   >1, 4</parameter>
             <parameter name="nrun"               type="int"   >1</parameter>
             <parameter name="nthread"            type="int"   >1</parameter>
             <parameter name="groupsize"          type="int"   >1</parameter>
-            <parameter name="tree_height"        type="int"   >3, 4, 5</parameter>
-            <!-- <parameter name="tree_height"        type="int"   >3</parameter> -->
             <parameter name="interp_order"       type="int"   >5</parameter>
             <parameter name="size"               type="int"   >1000, 5000, 10000, 50000, 100000, 500000, 1000000</parameter>
-            <!-- <parameter name="size"               type="int"   >1000, 5000, 10000, 50000</parameter> -->
+            <parameter name="tree_height" mode="python" type="int">int(((int($size/(10*$interp_order^$ndim))).bit_length() - 1)/$ndim)</parameter>
             <parameter name="command"            type="string">$SCALFMM_EXE_DIR/fmm-computation-seq --fmm-computation --dimension ${ndim} --group-size ${groupsize} --interp-settings ${interp_type} --kernel ${kernel_type} --order ${interp_order} --nb-runs ${nrun} --threads ${nthread} --size ${size} --tree-height ${tree_height}</parameter>
         </parameterset>