diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 883a63c034401ec1fceb477fe33c8342f74a87c1..1248883c0aea4d1ecc3cfeaa219b739ee7712de6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,12 @@ The SWIFT source code is using a variation of the 'Google' formatting style. The script 'format.sh' in the root directory applies the clang-format-3.8 tool with our style choices to all the SWIFT C source file. Please apply -the formatting script to the files before submitting a merge request. \ No newline at end of file +the formatting script to the files before submitting a merge request. + +The SWIFT code comes with a series of unit tests that are run automatically +when a push to the master branch occurs. The suite can be run by doing a `make +check` in the root directory. Please check that the test suite still +runs with your changes applied before submitting a merge request and add +relevant unit tests probing the correctness of new modules. An example of how +to add a test to the suite can be found by considering the tests/testGreeting +case. \ No newline at end of file diff --git a/examples/plot_tasks.py b/examples/plot_tasks.py index f2d0aa95d1f35f30476e1989349a07be8d9e5b0a..6e71f476a106937f43bd4bd5973af01f65218afe 100755 --- a/examples/plot_tasks.py +++ b/examples/plot_tasks.py @@ -56,8 +56,8 @@ pl.rcParams.update(PLOT_PARAMS) # Tasks and subtypes. Indexed as in tasks.h. TASKTYPES = ["none", "sort", "self", "pair", "sub_self", "sub_pair", "init", "ghost", - "drift", "kick", "kick_fixdt", "send", "recv", "grav_pp", "grav_mm", - "grav_up", "grav_down", "grav_external", "part_sort", "gpart_sort", + "drift", "kick", "kick_fixdt", "send", "recv", "grav_gather_m", "grav_fft", + "grav_mm", "grav_up", "grav_external", "part_sort", "gpart_sort", "split_cell", "rewait", "count"] TASKCOLOURS = {"none": "black", @@ -73,10 +73,10 @@ TASKCOLOURS = {"none": "black", "kick_fixdt": "green", "send": "yellow", "recv": "magenta", - "grav_pp": "mediumorchid", + "grav_gather_m": "mediumorchid", + "grav_fft": "mediumnightblue", "grav_mm": "mediumturquoise", "grav_up": "mediumvioletred", - "grav_down": "mediumnightblue", "grav_external": "darkred", "part_sort": "steelblue", "gpart_sort": "teal" , @@ -84,12 +84,13 @@ TASKCOLOURS = {"none": "black", "rewait": "olive", "count": "powerblue"} -SUBTYPES = ["none", "density", "force", "grav", "count"] +SUBTYPES = ["none", "density", "force", "grav", "tend", "count"] SUBCOLOURS = {"none": "black", "density": "red", "force": "blue", "grav": "indigo", + "tend": "grey" "count": "purple"} # Show docs if help is requested. diff --git a/examples/plot_tasks_MPI.py b/examples/plot_tasks_MPI.py index 9a92faf9417c9a302831eb8cb2f4471eb672d59c..7550899da2d4a34a5f73b192cbd7c348426786b7 100755 --- a/examples/plot_tasks_MPI.py +++ b/examples/plot_tasks_MPI.py @@ -62,8 +62,8 @@ pl.rcParams.update(PLOT_PARAMS) # Tasks and subtypes. Indexed as in tasks.h. TASKTYPES = ["none", "sort", "self", "pair", "sub_self", "sub_pair", "init", "ghost", - "drift", "kick", "kick_fixdt", "send", "recv", "grav_pp", "grav_mm", - "grav_up", "grav_down", "grav_external", "part_sort", "gpart_sort", + "drift", "kick", "kick_fixdt", "send", "recv", "grav_gather_m", "grav_fft", + "grav_mm", "grav_up", "grav_external", "part_sort", "gpart_sort", "split_cell", "rewait", "count"] TASKCOLOURS = {"none": "black", @@ -79,10 +79,10 @@ TASKCOLOURS = {"none": "black", "kick_fixdt": "green", "send": "yellow", "recv": "magenta", - "grav_pp": "mediumorchid", + "grav_gather_m": "mediumorchid", + "grav_fft": "mediumnightblue", "grav_mm": "mediumturquoise", "grav_up": "mediumvioletred", - "grav_down": "mediumnightblue", "grav_external": "darkred", "part_sort": "steelblue", "gpart_sort": "teal" , @@ -90,12 +90,13 @@ TASKCOLOURS = {"none": "black", "rewait": "olive", "count": "powerblue"} -SUBTYPES = ["none", "density", "force", "grav", "count"] +SUBTYPES = ["none", "density", "force", "grav", "tend", "count"] SUBCOLOURS = {"none": "black", "density": "red", "force": "blue", "grav": "indigo", + "tend": "grey" "count": "purple"} # Show docs if help is requested. diff --git a/src/task.c b/src/task.c index e9404ab00df4f757f49d6d186f28dc40c49cfa01..13dd47e6cbf68de4ea6cd8ba6b898ee41a06618d 100644 --- a/src/task.c +++ b/src/task.c @@ -43,24 +43,28 @@ /* Local headers. */ #include "atomic.h" #include "error.h" +#include "inline.h" #include "lock.h" /* Task type names. */ const char *taskID_names[task_type_count] = { - "none", "sort", "self", "pair", "sub", - "init", "ghost", "drift", "kick", "kick_fixdt", - "send", "recv", "grav_gather_m", "grav_fft", "grav_mm", - "grav_up", "grav_external", "part_sort", "gpart_sort", "split_cell", - "rewait"}; + "none", "sort", "self", "pair", "sub_self", + "sub_pair", "init", "ghost", "drift", "kick", + "kick_fixdt", "send", "recv", "grav_gather_m", "grav_fft", + "grav_mm", "grav_up", "grav_external", "part_sort", "gpart_sort", + "split_cell", "rewait"}; -const char *subtaskID_names[task_type_count] = {"none", "density", "force", - "grav"}; +const char *subtaskID_names[task_subtype_count] = {"none", "density", "force", + "grav", "tend"}; /** * @brief Computes the overlap between the parts array of two given cells. */ -size_t task_cell_overlap_part(const struct cell *ci, const struct cell *cj) { +__attribute__((always_inline)) INLINE static size_t task_cell_overlap_part( + const struct cell *ci, const struct cell *cj) { + if (ci == NULL || cj == NULL) return 0; + if (ci->parts <= cj->parts && ci->parts + ci->count >= cj->parts + cj->count) { return cj->count; @@ -68,14 +72,18 @@ size_t task_cell_overlap_part(const struct cell *ci, const struct cell *cj) { cj->parts + cj->count >= ci->parts + ci->count) { return ci->count; } + return 0; } /** * @brief Computes the overlap between the gparts array of two given cells. */ -size_t task_cell_overlap_gpart(const struct cell *ci, const struct cell *cj) { +__attribute__((always_inline)) INLINE static size_t task_cell_overlap_gpart( + const struct cell *ci, const struct cell *cj) { + if (ci == NULL || cj == NULL) return 0; + if (ci->gparts <= cj->gparts && ci->gparts + ci->gcount >= cj->gparts + cj->gcount) { return cj->gcount; @@ -83,6 +91,7 @@ size_t task_cell_overlap_gpart(const struct cell *ci, const struct cell *cj) { cj->gparts + cj->gcount >= ci->gparts + ci->gcount) { return ci->gcount; } + return 0; } @@ -91,7 +100,8 @@ size_t task_cell_overlap_gpart(const struct cell *ci, const struct cell *cj) { * * @param t The #task. */ -enum task_actions task_acts_on(const struct task *t) { +__attribute__((always_inline)) INLINE static enum task_actions task_acts_on( + const struct task *t) { switch (t->type) { diff --git a/src/task.h b/src/task.h index ee49568b143282b9e3025f6d2bc81ded04ffee41..a7cbf28c3d1c7bde45102e5ce85e18c5f736e343 100644 --- a/src/task.h +++ b/src/task.h @@ -112,6 +112,5 @@ int task_lock(struct task *t); void task_print_mask(unsigned int mask); void task_print_submask(unsigned int submask); void task_do_rewait(struct task *t); -enum task_actions task_acts_on(const struct task *t); #endif /* SWIFT_TASK_H */ diff --git a/src/timestep.h b/src/timestep.h index f32a699f6338362c3de247e5a5abc419b9547374..99747484b2fad2d1dfadad749232f77848e56f35 100644 --- a/src/timestep.h +++ b/src/timestep.h @@ -106,8 +106,9 @@ __attribute__((always_inline)) INLINE static int get_part_timestep( const float new_dt_external = gravity_compute_timestep_external( e->external_potential, e->physical_constants, p->gpart); - const float new_dt_self = - gravity_compute_timestep_self(e->physical_constants, p->gpart); + /* const float new_dt_self = */ + /* gravity_compute_timestep_self(e->physical_constants, p->gpart); */ + const float new_dt_self = FLT_MAX; // MATTHIEU new_dt_grav = fminf(new_dt_external, new_dt_self); } diff --git a/tests/test125cells.c b/tests/test125cells.c index 42f48c13a9282c330d7682b41077e4e9d1cf3c17..cc2d6dcdd1d91ad05aaf4c937bdd4326fa4d459a 100644 --- a/tests/test125cells.c +++ b/tests/test125cells.c @@ -178,6 +178,21 @@ void get_solution(const struct cell *main_cell, struct solution_part *solution, solution[i].a_hydro[2] = -gradP[2] / solution[i].rho; solution[i].v_sig = 2.f * solution[i].c; + + solution[i].S_dt = 0.f; + solution[i].u_dt = -(solution[i].P / solution[i].rho) * solution[i].div_v; + } +} + +void reset_particles(struct cell *c, enum velocity_field vel, + enum pressure_field press, float size, float density) { + + for (size_t i = 0; i < c->count; ++i) { + + struct part *p = &c->parts[i]; + + set_velocity(p, vel, size); + set_energy_state(p, press, size, density); } } @@ -232,9 +247,7 @@ struct cell *make_cell(size_t n, const double offset[3], double size, double h, part->ti_begin = 0; part->ti_end = 1; - xpart->v_full[0] = part->v[0]; - xpart->v_full[1] = part->v[1]; - xpart->v_full[2] = part->v[2]; + hydro_first_init_part(part, xpart); ++part; ++xpart; } @@ -340,7 +353,8 @@ void dump_particle_fields(char *fileName, struct cell *main_cell, solution[pid].div_v, solution[pid].S, solution[pid].u, solution[pid].P, solution[pid].c, solution[pid].a_hydro[0], solution[pid].a_hydro[1], solution[pid].a_hydro[2], - solution[pid].h_dt, solution[pid].v_sig, solution[pid].S_dt, 0.f); + solution[pid].h_dt, solution[pid].v_sig, solution[pid].S_dt, + solution[pid].u_dt); } } @@ -427,6 +441,7 @@ int main(int argc, char *argv[]) { /* Help users... */ message("Adiabatic index: ga = %f", hydro_gamma); + message("Hydro implementation: %s", SPH_IMPLEMENTATION); message("Smoothing length: h = %f", h * size); message("Kernel: %s", kernel_name); message("Neighbour target: N = %f", h * h * h * kernel_norm); @@ -447,17 +462,18 @@ int main(int argc, char *argv[]) { space.periodic = 0; space.h_max = h; - struct phys_const pc; - pc.const_newton_G = 1.f; + struct phys_const prog_const; + prog_const.const_newton_G = 1.f; struct hydro_props hp; hp.target_neighbours = h * h * h * kernel_norm; hp.delta_neighbours = 1.; hp.max_smoothing_iterations = 1; + hp.CFL_condition = 0.1; struct engine engine; - engine.physical_constants = &pc; engine.hydro_properties = &hp; + engine.physical_constants = &prog_const; engine.s = &space; engine.time = 0.1f; engine.ti_current = 1; @@ -512,7 +528,7 @@ int main(int argc, char *argv[]) { for (int j = 0; j < 125; ++j) runner_do_init(&runner, cells[j], 0); /* Do the density calculation */ -#if defined(DEFAULT_SPH) || !defined(WITH_VECTORIZATION) +#if !(defined(MINIMAL_SPH) && defined(WITH_VECTORIZATION)) /* Run all the pairs (only once !)*/ for (int i = 0; i < 5; i++) { @@ -554,7 +570,7 @@ int main(int argc, char *argv[]) { for (int j = 0; j < 27; ++j) runner_do_ghost(&runner, inner_cells[j]); /* Do the force calculation */ -#if defined(DEFAULT_SPH) || !defined(WITH_VECTORIZATION) +#if !(defined(MINIMAL_SPH) && defined(WITH_VECTORIZATION)) /* Do the pairs (for the central 27 cells) */ for (int i = 1; i < 4; i++) { @@ -589,6 +605,9 @@ int main(int argc, char *argv[]) { /* Output timing */ message("SWIFT calculation took : %15lli ticks.", time / runs); + for (int j = 0; j < 125; ++j) + reset_particles(cells[j], vel, press, size, rho); + /* NOW BRUTE-FORCE CALCULATION */ const ticks tic = getticks(); @@ -597,7 +616,7 @@ int main(int argc, char *argv[]) { for (int j = 0; j < 125; ++j) runner_do_init(&runner, cells[j], 0); /* Do the density calculation */ -#if defined(DEFAULT_SPH) || !defined(WITH_VECTORIZATION) +#if !(defined(MINIMAL_SPH) && defined(WITH_VECTORIZATION)) /* Run all the pairs (only once !)*/ for (int i = 0; i < 5; i++) { @@ -638,7 +657,7 @@ int main(int argc, char *argv[]) { for (int j = 0; j < 27; ++j) runner_do_ghost(&runner, inner_cells[j]); /* Do the force calculation */ -#if defined(DEFAULT_SPH) || !defined(WITH_VECTORIZATION) +#if !(defined(MINIMAL_SPH) && defined(WITH_VECTORIZATION)) /* Do the pairs (for the central 27 cells) */ for (int i = 1; i < 4; i++) { @@ -654,6 +673,7 @@ int main(int argc, char *argv[]) { /* And now the self-interaction for the main cell */ self_all_force(&runner, main_cell); + #endif /* Finally, give a gentle kick */ diff --git a/tests/test125cells.sh.in b/tests/test125cells.sh.in index 2d724438af1f32d92e3fb3ab11319818c028939e..1d3b0db75d70bf2d5047f71b183812702305df75 100755 --- a/tests/test125cells.sh.in +++ b/tests/test125cells.sh.in @@ -4,9 +4,18 @@ do for p in {0..2} do echo "" - rm brute_force_125_standard.dat swift_dopair_125_standard.dat + + rm -f brute_force_125_standard.dat swift_dopair_125_standard.dat + ./test125cells -n 6 -r 1 -v $v -p $p -f standard - python @srcdir@/difffloat.py brute_force_125_standard.dat swift_dopair_125_standard.dat @srcdir@/tolerance_125.dat 6 + + if [ -e brute_force_125_standard.dat ] + then + python @srcdir@/difffloat.py brute_force_125_standard.dat swift_dopair_125_standard.dat @srcdir@/tolerance_125.dat 6 + else + exit 1 + fi + done done diff --git a/tests/test27cells.c b/tests/test27cells.c index 09981af2b99d050bb2db3395d19396defe3b8153..8dc8af5dad60c5d59e66411d9612153afcf86114 100644 --- a/tests/test27cells.c +++ b/tests/test27cells.c @@ -318,6 +318,7 @@ int main(int argc, char *argv[]) { /* Help users... */ message("Adiabatic index: ga = %f", hydro_gamma); + message("Hydro implementation: %s", SPH_IMPLEMENTATION); message("Smoothing length: h = %f", h * size); message("Kernel: %s", kernel_name); message("Neighbour target: N = %f", h * h * h * kernel_norm); @@ -366,7 +367,7 @@ int main(int argc, char *argv[]) { const ticks tic = getticks(); -#if defined(DEFAULT_SPH) || defined(GADGET2_SPH) +#if !(defined(MINIMAL_SPH) && defined(WITH_VECTORIZATION)) /* Run all the pairs */ for (int j = 0; j < 27; ++j) @@ -402,7 +403,7 @@ int main(int argc, char *argv[]) { const ticks tic = getticks(); -#if defined(DEFAULT_SPH) || defined(GADGET2_SPH) +#if !(defined(MINIMAL_SPH) && defined(WITH_VECTORIZATION)) /* Run all the brute-force pairs */ for (int j = 0; j < 27; ++j) diff --git a/tests/test27cells.sh.in b/tests/test27cells.sh.in index 966c8618cfdd9f5f5042f236b76d14bed8e735a0..bf9cfeaf9a70790a321fa7ec4c63983d8cfd866c 100755 --- a/tests/test27cells.sh.in +++ b/tests/test27cells.sh.in @@ -3,9 +3,18 @@ for v in {0..3} do echo "" - rm brute_force_27_standard.dat swift_dopair_27_standard.dat + + rm -f brute_force_27_standard.dat swift_dopair_27_standard.dat + ./test27cells -n 6 -r 1 -d 0 -f standard -v $v - python @srcdir@/difffloat.py brute_force_27_standard.dat swift_dopair_27_standard.dat @srcdir@/tolerance_27.dat 6 + + if [ -e brute_force_27_standard.dat ] + then + python @srcdir@/difffloat.py brute_force_27_standard.dat swift_dopair_27_standard.dat @srcdir@/tolerance_27_normal.dat 6 + else + exit 1 + fi + done exit $? diff --git a/tests/test27cellsPerturbed.sh.in b/tests/test27cellsPerturbed.sh.in index cb64fb605f41f54729456283a2614435c8456fd3..3cdaf79ab17e705ec69a0b646949cc5a71109796 100755 --- a/tests/test27cellsPerturbed.sh.in +++ b/tests/test27cellsPerturbed.sh.in @@ -3,9 +3,18 @@ for v in {0..3} do echo "" - rm brute_force_27_perturbed.dat swift_dopair_27_perturbed.dat + + rm -f brute_force_27_perturbed.dat swift_dopair_27_perturbed.dat + ./test27cells -n 6 -r 1 -d 0.1 -f perturbed -v $v - python @srcdir@/difffloat.py brute_force_27_perturbed.dat swift_dopair_27_perturbed.dat @srcdir@/tolerance_27.dat 6 + + if [ -e brute_force_27_perturbed.dat ] + then + python @srcdir@/difffloat.py brute_force_27_perturbed.dat swift_dopair_27_perturbed.dat @srcdir@/tolerance_27_perturbed.dat 6 + else + exit 1 + fi + done exit $? diff --git a/tests/testFFT.c b/tests/testFFT.c index 7ff29dac3f0e9b7d6aec65cbfc7e4f4b85d08dbb..c4aeb2885c788bd769bda49bdd15ab121dd8e9d4 100644 --- a/tests/testFFT.c +++ b/tests/testFFT.c @@ -21,6 +21,12 @@ #include <stdlib.h> #include <string.h> +#ifndef HAVE_FFTW + +int main() { return 0; } + +#else + #include <fftw3.h> /* Includes. */ @@ -187,3 +193,5 @@ int main() { free(gparts); return 0; } + +#endif diff --git a/tests/testKernelGrav.c b/tests/testKernelGrav.c index 42ce6066b605c8cc9ac78a6e565dd59a500112f4..2733a4a4d041149499d354ef217ae85b1cd35b7f 100644 --- a/tests/testKernelGrav.c +++ b/tests/testKernelGrav.c @@ -74,10 +74,11 @@ int main() { swift_w = 1 / (r * r * r); } - printf("%2d: r= %f h= %f u= %f Wg(r,h)= %f Ws(r,h)= %f\n", k, r, h, u, - gadget_w, swift_w); - if (fabsf(gadget_w - swift_w) > 2e-7) { + + printf("%2d: r= %f h= %f u= %f Wg(r,h)= %f Ws(r,h)= %f\n", k, r, h, u, + gadget_w, swift_w); + printf("Invalid value ! Gadget= %e, SWIFT= %e\n", gadget_w, swift_w); return 1; } @@ -99,10 +100,11 @@ int main() { float gadget_w = erfc(u / 2) + u * exp(-u * u / 4) / sqrt(M_PI); - printf("%2d: r= %f r_lr= %f u= %f Ws(r)= %f Wg(r)= %f\n", k, r, a_smooth, u, - swift_w, gadget_w); - if (fabsf(gadget_w - swift_w) > 2e-7) { + + printf("%2d: r= %f r_lr= %f u= %f Ws(r)= %f Wg(r)= %f\n", k, r, a_smooth, + u, swift_w, gadget_w); + printf("Invalid value ! Gadget= %e, SWIFT= %e\n", gadget_w, swift_w); return 1; } diff --git a/tests/testMaths.c b/tests/testMaths.c index 96c75313db18edc653aa3a48cb6ac34913297806..3d8f9a8f9db0cf01276eff89aa44157008cbddc6 100644 --- a/tests/testMaths.c +++ b/tests/testMaths.c @@ -39,24 +39,29 @@ int main() { const float rel = 0.5f * fabs(exp_correct - exp_approx) / fabs(exp_correct + exp_approx); - printf("%2d: x= %f exp(x)= %e approx_exp(x)=%e abs=%e rel=%e\n", i, x, - exp_correct, exp_approx, abs, rel); + int error = 0; if (abs > 3e-6 && fabsf(x) <= 0.2) { printf("Absolute difference too large !\n"); - return 1; + error = 1; } if (abs > 1.2e-7 && fabsf(x) <= 0.1) { printf("Absolute difference too large !\n"); - return 1; + error = 1; } if (rel > 1e-6 && fabsf(x) <= 0.2) { printf("Relative difference too large !\n"); - return 1; + error = 1; } if (rel > 4e-8 && fabsf(x) <= 0.1) { printf("Relative difference too large !\n"); + error = 1; + } + + if (error) { + printf("%2d: x= %f exp(x)= %e approx_exp(x)=%e abs=%e rel=%e\n", i, x, + exp_correct, exp_approx, abs, rel); return 1; } } diff --git a/tests/testPair.sh.in b/tests/testPair.sh.in index 086db14fdd7377d92a35420dffe0ea1dcca561d5..bd7051b060c4acab6cf5a164af1914715856849b 100755 --- a/tests/testPair.sh.in +++ b/tests/testPair.sh.in @@ -1,8 +1,11 @@ #!/bin/bash -rm brute_force_standard.dat swift_dopair_standard.dat + +echo "" + +rm -f brute_force_standard.dat swift_dopair_standard.dat ./testPair -p 6 -r 1 -d 0 -f standard -python @srcdir@/difffloat.py brute_force_standard.dat swift_dopair_standard.dat @srcdir@/tolerance_pair.dat +python @srcdir@/difffloat.py brute_force_standard.dat swift_dopair_standard.dat @srcdir@/tolerance_pair_normal.dat exit $? diff --git a/tests/testPairPerturbed.sh.in b/tests/testPairPerturbed.sh.in index f17d7559e0084727c74a53a9582009a1867d0d0e..9f214e25a098448a906f9da307ea569e327cfdea 100755 --- a/tests/testPairPerturbed.sh.in +++ b/tests/testPairPerturbed.sh.in @@ -1,8 +1,11 @@ #!/bin/bash -rm brute_force_perturbed.dat swift_dopair_perturbed.dat + +echo "" + +rm -f brute_force_perturbed.dat swift_dopair_perturbed.dat ./testPair -p 6 -r 1 -d 0.1 -f perturbed -python @srcdir@/difffloat.py brute_force_perturbed.dat swift_dopair_perturbed.dat @srcdir@/tolerance_pair.dat +python @srcdir@/difffloat.py brute_force_perturbed.dat swift_dopair_perturbed.dat @srcdir@/tolerance_pair_perturbed.dat exit $? diff --git a/tests/testParser.sh.in b/tests/testParser.sh.in index 6c62bc57c041576ea6e807a0a31052ee1dffb4db..9ccfa5078eafca46de406698b4e030bf46ba912c 100755 --- a/tests/testParser.sh.in +++ b/tests/testParser.sh.in @@ -1,4 +1,4 @@ #!/bin/bash -rm parser_output.yml +rm -f parser_output.yml ./testParser @srcdir@/testParserInput.yaml diff --git a/tests/tolerance_27_normal.dat b/tests/tolerance_27_normal.dat new file mode 100644 index 0000000000000000000000000000000000000000..141ed3baeedd5dad7a2fda0730c2e9c828ae4b2e --- /dev/null +++ b/tests/tolerance_27_normal.dat @@ -0,0 +1,3 @@ +# ID pos_x pos_y pos_z v_x v_y v_z rho rho_dh wcount wcount_dh div_v curl_vx curl_vy curl_vz + 0 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 2e-6 2e-5 2e-3 2e-6 2e-6 2e-6 2e-6 + 0 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-5 1e-4 2e-5 2e-5 2e-5 2e-5 diff --git a/tests/tolerance_27_perturbed.dat b/tests/tolerance_27_perturbed.dat new file mode 100644 index 0000000000000000000000000000000000000000..f0417d845f83d171dacb6b66024cf9a5dc41c6f1 --- /dev/null +++ b/tests/tolerance_27_perturbed.dat @@ -0,0 +1,3 @@ +# ID pos_x pos_y pos_z v_x v_y v_z rho rho_dh wcount wcount_dh div_v curl_vx curl_vy curl_vz + 0 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1.2e-6 2e-6 2.1e-5 2e-3 2.1e-6 2e-6 2e-6 2e-6 + 0 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-5 1e-4 2e-5 4e-4 4e-4 4e-4 diff --git a/tests/tolerance_pair.dat b/tests/tolerance_pair_normal.dat similarity index 100% rename from tests/tolerance_pair.dat rename to tests/tolerance_pair_normal.dat diff --git a/tests/tolerance_27.dat b/tests/tolerance_pair_perturbed.dat similarity index 69% rename from tests/tolerance_27.dat rename to tests/tolerance_pair_perturbed.dat index beaecb967bc99edafc19ed66ce14db333933b0d7..ca58ff45995158e031eca6b60eec498aa6c627ef 100644 --- a/tests/tolerance_27.dat +++ b/tests/tolerance_pair_perturbed.dat @@ -1,3 +1,3 @@ # ID pos_x pos_y pos_z v_x v_y v_z rho rho_dh wcount wcount_dh div_v curl_vx curl_vy curl_vz - 0 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-5 1e-5 4e-5 3e-2 1e-5 1e-5 1e-5 1e-5 - 0 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-5 1.2e-5 1e-5 1e-2 1e-4 1e-4 1e-4 1e-4 + 0 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-5 1e-5 2e-5 3e-2 1e-5 1e-5 1e-5 1e-5 + 0 1e-6 1e-6 1e-6 1e-6 1e-6 1e-6 1e-3 4e-4 8e-3 2e-2 1e-4 1.6e-4 1.6e-4 1.6e-4