Unverified Commit a27a03bc authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

now also test for global scalars and vectors and t_target for thermostats

parent b1e9b6d3
Loading
Loading
Loading
Loading
+186 −12
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include "pair.h"
#include "universe.h"
#include "utils.h"
#include "variable.h"

#include <cctype>
#include <cstdio>
@@ -138,9 +139,9 @@ LAMMPS *init_lammps(int argc, char **argv, const TestConfig &cfg, const bool use
    command("timestep 0.25");
    command("run 0 post no");
    command("thermo 2");
    command("run 4 post no");
    command("run 4 post no start 0 stop 8");
    command("write_restart " + cfg.basename + ".restart");
    command("run 4 post no");
    command("run 4 post no start 0 stop 8");
    return lmp;
}

@@ -166,7 +167,7 @@ void restart_lammps(LAMMPS *lmp, const TestConfig &cfg, bool use_rmass, bool use
        command(post_command);

    command("thermo 2");
    command("run 4 post no");
    command("run 4 post no start 0 stop 8");
}

// re-generate yaml file with current settings.
@@ -233,7 +234,8 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)

    int ifix = lmp->modify->find_fix("test");
    if (ifix < 0) {
        std::cerr << "WARNING: no fix defined with fix ID 'test'\n";
        std::cerr << "ERROR: no fix defined with fix ID 'test'\n";
        exit(1);
    } else {
        Fix *fix = lmp->modify->fix[ifix];

@@ -318,17 +320,57 @@ TEST(FixTimestep, plain)
        EXPECT_FP_LE_WITH_EPS(x[i][1], x_ref[tag[i]].y, epsilon);
        EXPECT_FP_LE_WITH_EPS(x[i][2], x_ref[tag[i]].z, epsilon);
    }
    if (print_stats) std::cerr << "run_pos, normal_run, verlet: " << stats << std::endl;
    if (print_stats) std::cerr << "run_pos, normal run, verlet: " << stats << std::endl;

    auto v                            = lmp->atom->v;
    const std::vector<coord_t> &v_ref = test_config.run_vel;
    stats.reset();
    ASSERT_EQ(nlocal + 1, v_ref.size());
    for (int i = 0; i < nlocal; ++i) {
        EXPECT_FP_LE_WITH_EPS(v[i][0], v_ref[tag[i]].x, epsilon);
        EXPECT_FP_LE_WITH_EPS(v[i][1], v_ref[tag[i]].y, epsilon);
        EXPECT_FP_LE_WITH_EPS(v[i][2], v_ref[tag[i]].z, epsilon);
    }
    if (print_stats) std::cerr << "run_vel, normal_run, verlet: " << stats << std::endl;
    if (print_stats) std::cerr << "run_vel, normal run, verlet: " << stats << std::endl;

    int ifix = lmp->modify->find_fix("test");
    if (ifix < 0) {
        FAIL() << "ERROR: no fix defined with fix ID 'test'\n";
    } else {
        Fix *fix = lmp->modify->fix[ifix];
        stats.reset();

        // global scalar
        if (fix->scalar_flag) {
            double value = fix->compute_scalar();
            EXPECT_FP_LE_WITH_EPS(test_config.global_scalar, value, epsilon);
        }

        // global vector
        if (fix->vector_flag) {
            int num = fix->size_vector;
            EXPECT_EQ(num, test_config.global_vector.size());

            for (int i = 0; i < num; ++i)
                EXPECT_FP_LE_WITH_EPS(test_config.global_vector[i], fix->compute_vector(i),
                                      epsilon);
        }

        // check t_target for thermostats

        int dim     = -1;
        double *ptr = (double *)fix->extract("t_target", dim);
        if ((ptr != nullptr) && (dim == 0)) {
            int ivar = lmp->input->variable->find("t_target");
            if (ivar >= 0) {
                double t_ref    = atof(lmp->input->variable->retrieve("t_target"));
                double t_target = *ptr;
                EXPECT_FP_LE_WITH_EPS(t_target, t_ref, epsilon);
            }
        }
        if (print_stats && stats.has_data())
            std::cerr << "global_data, normal run, verlet: " << stats << std::endl;
    }

    if (!verbose) ::testing::internal::CaptureStdout();
    restart_lammps(lmp, test_config, false, false);
@@ -346,6 +388,7 @@ TEST(FixTimestep, plain)
    if (print_stats) std::cerr << "run_pos, restart, verlet: " << stats << std::endl;

    v = lmp->atom->v;
    stats.reset();
    ASSERT_EQ(nlocal + 1, v_ref.size());
    for (int i = 0; i < nlocal; ++i) {
        EXPECT_FP_LE_WITH_EPS(v[i][0], v_ref[tag[i]].x, epsilon);
@@ -354,6 +397,32 @@ TEST(FixTimestep, plain)
    }
    if (print_stats) std::cerr << "run_vel, restart, verlet: " << stats << std::endl;

    ifix = lmp->modify->find_fix("test");
    if (ifix < 0) {
        FAIL() << "ERROR: no fix defined with fix ID 'test'\n";
    } else {
        Fix *fix = lmp->modify->fix[ifix];
        stats.reset();

        // global scalar
        if (fix->scalar_flag) {
            double value = fix->compute_scalar();
            EXPECT_FP_LE_WITH_EPS(test_config.global_scalar, value, epsilon);
        }

        // global vector
        if (fix->vector_flag) {
            int num = fix->size_vector;
            EXPECT_EQ(num, test_config.global_vector.size());

            for (int i = 0; i < num; ++i)
                EXPECT_FP_LE_WITH_EPS(test_config.global_vector[i], fix->compute_vector(i),
                                      epsilon);
        }
        if (print_stats && stats.has_data())
            std::cerr << "global_data, restart, verlet: " << stats << std::endl;
    }

    if (!verbose) ::testing::internal::CaptureStdout();
    restart_lammps(lmp, test_config, true, false);
    if (!verbose) ::testing::internal::GetCapturedStdout();
@@ -370,6 +439,7 @@ TEST(FixTimestep, plain)
    if (print_stats) std::cerr << "run_pos, rmass, verlet: " << stats << std::endl;

    v = lmp->atom->v;
    stats.reset();
    ASSERT_EQ(nlocal + 1, v_ref.size());
    for (int i = 0; i < nlocal; ++i) {
        EXPECT_FP_LE_WITH_EPS(v[i][0], v_ref[tag[i]].x, epsilon);
@@ -378,6 +448,32 @@ TEST(FixTimestep, plain)
    }
    if (print_stats) std::cerr << "run_vel, rmass, verlet: " << stats << std::endl;

    ifix = lmp->modify->find_fix("test");
    if (ifix < 0) {
        FAIL() << "ERROR: no fix defined with fix ID 'test'\n";
    } else {
        Fix *fix = lmp->modify->fix[ifix];
        stats.reset();

        // global scalar
        if (fix->scalar_flag) {
            double value = fix->compute_scalar();
            EXPECT_FP_LE_WITH_EPS(test_config.global_scalar, value, epsilon);
        }

        // global vector
        if (fix->vector_flag) {
            int num = fix->size_vector;
            EXPECT_EQ(num, test_config.global_vector.size());

            for (int i = 0; i < num; ++i)
                EXPECT_FP_LE_WITH_EPS(test_config.global_vector[i], fix->compute_vector(i),
                                      epsilon);
        }
        if (print_stats && stats.has_data())
            std::cerr << "global_data, rmass, verlet: " << stats << std::endl;
    }

    if (!verbose) ::testing::internal::CaptureStdout();
    cleanup_lammps(lmp, test_config);
    if (!verbose) ::testing::internal::GetCapturedStdout();
@@ -397,7 +493,7 @@ TEST(FixTimestep, plain)
        EXPECT_FP_LE_WITH_EPS(x[i][1], x_ref[tag[i]].y, epsilon);
        EXPECT_FP_LE_WITH_EPS(x[i][2], x_ref[tag[i]].z, epsilon);
    }
    if (print_stats) std::cerr << "run_pos, normal_run, respa: " << stats << std::endl;
    if (print_stats) std::cerr << "run_pos, normal run, respa: " << stats << std::endl;

    v = lmp->atom->v;
    ASSERT_EQ(nlocal + 1, v_ref.size());
@@ -406,7 +502,33 @@ TEST(FixTimestep, plain)
        EXPECT_FP_LE_WITH_EPS(v[i][1], v_ref[tag[i]].y, epsilon);
        EXPECT_FP_LE_WITH_EPS(v[i][2], v_ref[tag[i]].z, epsilon);
    }
    if (print_stats) std::cerr << "run_vel, normal_run, respa: " << stats << std::endl;
    if (print_stats) std::cerr << "run_vel, normal run, respa: " << stats << std::endl;

    ifix = lmp->modify->find_fix("test");
    if (ifix < 0) {
        FAIL() << "ERROR: no fix defined with fix ID 'test'\n";
    } else {
        Fix *fix = lmp->modify->fix[ifix];
        stats.reset();

        // global scalar
        if (fix->scalar_flag) {
            double value = fix->compute_scalar();
            EXPECT_FP_LE_WITH_EPS(test_config.global_scalar, value, epsilon);
        }

        // global vector
        if (fix->vector_flag) {
            int num = fix->size_vector;
            EXPECT_EQ(num, test_config.global_vector.size());

            for (int i = 0; i < num; ++i)
                EXPECT_FP_LE_WITH_EPS(test_config.global_vector[i], fix->compute_vector(i),
                                      epsilon);
        }
        if (print_stats && stats.has_data())
            std::cerr << "global_data, normal run, verlet: " << stats << std::endl;
    }

    if (!verbose) ::testing::internal::CaptureStdout();
    restart_lammps(lmp, test_config, false, false);
@@ -432,6 +554,32 @@ TEST(FixTimestep, plain)
    }
    if (print_stats) std::cerr << "run_vel, restart, respa: " << stats << std::endl;

    ifix = lmp->modify->find_fix("test");
    if (ifix < 0) {
        FAIL() << "ERROR: no fix defined with fix ID 'test'\n";
    } else {
        Fix *fix = lmp->modify->fix[ifix];
        stats.reset();

        // global scalar
        if (fix->scalar_flag) {
            double value = fix->compute_scalar();
            EXPECT_FP_LE_WITH_EPS(test_config.global_scalar, value, epsilon);
        }

        // global vector
        if (fix->vector_flag) {
            int num = fix->size_vector;
            EXPECT_EQ(num, test_config.global_vector.size());

            for (int i = 0; i < num; ++i)
                EXPECT_FP_LE_WITH_EPS(test_config.global_vector[i], fix->compute_vector(i),
                                      epsilon);
        }
        if (print_stats && stats.has_data())
            std::cerr << "global_data, restart, respa: " << stats << std::endl;
    }

    if (!verbose) ::testing::internal::CaptureStdout();
    restart_lammps(lmp, test_config, true, false);
    if (!verbose) ::testing::internal::GetCapturedStdout();
@@ -456,6 +604,32 @@ TEST(FixTimestep, plain)
    }
    if (print_stats) std::cerr << "run_vel, rmass, respa: " << stats << std::endl;

    ifix = lmp->modify->find_fix("test");
    if (ifix < 0) {
        FAIL() << "ERROR: no fix defined with fix ID 'test'\n";
    } else {
        Fix *fix = lmp->modify->fix[ifix];
        stats.reset();

        // global scalar
        if (fix->scalar_flag) {
            double value = fix->compute_scalar();
            EXPECT_FP_LE_WITH_EPS(test_config.global_scalar, value, epsilon);
        }

        // global vector
        if (fix->vector_flag) {
            int num = fix->size_vector;
            EXPECT_EQ(num, test_config.global_vector.size());

            for (int i = 0; i < num; ++i)
                EXPECT_FP_LE_WITH_EPS(test_config.global_vector[i], fix->compute_vector(i),
                                      epsilon);
        }
        if (print_stats && stats.has_data())
            std::cerr << "global_data, rmass, respa: " << stats << std::endl;
    }

    if (!verbose) ::testing::internal::CaptureStdout();
    cleanup_lammps(lmp, test_config);
    if (!verbose) ::testing::internal::GetCapturedStdout();
@@ -506,7 +680,7 @@ TEST(FixTimestep, omp)
        EXPECT_FP_LE_WITH_EPS(x[i][1], x_ref[tag[i]].y, epsilon);
        EXPECT_FP_LE_WITH_EPS(x[i][2], x_ref[tag[i]].z, epsilon);
    }
    if (print_stats) std::cerr << "run_pos, normal_run, verlet: " << stats << std::endl;
    if (print_stats) std::cerr << "run_pos, normal run, verlet: " << stats << std::endl;

    auto v                            = lmp->atom->v;
    const std::vector<coord_t> &v_ref = test_config.run_vel;
@@ -516,7 +690,7 @@ TEST(FixTimestep, omp)
        EXPECT_FP_LE_WITH_EPS(v[i][1], v_ref[tag[i]].y, epsilon);
        EXPECT_FP_LE_WITH_EPS(v[i][2], v_ref[tag[i]].z, epsilon);
    }
    if (print_stats) std::cerr << "run_vel, normal_run, verlet: " << stats << std::endl;
    if (print_stats) std::cerr << "run_vel, normal run, verlet: " << stats << std::endl;

    if (!verbose) ::testing::internal::CaptureStdout();
    restart_lammps(lmp, test_config, false, false);
@@ -585,7 +759,7 @@ TEST(FixTimestep, omp)
        EXPECT_FP_LE_WITH_EPS(x[i][1], x_ref[tag[i]].y, epsilon);
        EXPECT_FP_LE_WITH_EPS(x[i][2], x_ref[tag[i]].z, epsilon);
    }
    if (print_stats) std::cerr << "run_pos, normal_run, respa: " << stats << std::endl;
    if (print_stats) std::cerr << "run_pos, normal run, respa: " << stats << std::endl;

    v = lmp->atom->v;
    ASSERT_EQ(nlocal + 1, v_ref.size());
@@ -594,7 +768,7 @@ TEST(FixTimestep, omp)
        EXPECT_FP_LE_WITH_EPS(v[i][1], v_ref[tag[i]].y, epsilon);
        EXPECT_FP_LE_WITH_EPS(v[i][2], v_ref[tag[i]].z, epsilon);
    }
    if (print_stats) std::cerr << "run_vel, normal_run, respa: " << stats << std::endl;
    if (print_stats) std::cerr << "run_vel, normal run, respa: " << stats << std::endl;

    if (!verbose) ::testing::internal::CaptureStdout();
    restart_lammps(lmp, test_config, false, false);
+5 −2
Original line number Diff line number Diff line
---
lammps_version: 21 Jul 2020
date_generated: Sat Aug  8 22:49:00 202
date_generated: Sun Aug  9 01:35:09 202
epsilon: 2e-13
prerequisites: ! |
  atom full
@@ -10,9 +10,12 @@ prerequisites: ! |
  fix npt
pre_commands: ! ""
post_commands: ! |
  fix move solute nph aniso 1.0 1.0 100.0 ptemp 100.0
  fix test solute nph aniso 1.0 1.0 100.0 ptemp ${t_target}
input_file: in.fourmol
natoms: 29
global_scalar: 157.324084394267
global_vector: ! |-
  24 0.03779589355959809 0.0378543238394701 0.0814930782748335 0.028248293610003753 0.0279889837013807 0.05271778317404765 0.10922288247510527 0.003432986107891325 -0.00019663938272068216 0.16528794737894137 0.011258064080467449 -0.00017670519165357258 0.0027918640291821383 0.0027918640291821383 0.0027918640291821383 23.78585346226122 23.351165413038956 82.84161957437075 0.021704844384784174 0.0006822052994608564 -3.907630988264038e-05 27.145348395585312 0.12593326978855884 3.102499112170687e-05
run_pos: ! |2
    1 -3.3823788788964571e-01  2.5923184268725246e+00 -1.3326165453435834e-01
    2  2.6302343361083658e-01  3.0813010897449002e+00 -8.7506015086293765e-01
+52 −49
Original line number Diff line number Diff line
---
lammps_version: 21 Jul 2020
date_generated: Sat Aug  8 22:45:33 202
epsilon: 2e-13
date_generated: Sun Aug  9 01:35:09 202
epsilon: 2.0e-12
prerequisites: ! |
  atom full
  pair lj/cut
@@ -10,57 +10,60 @@ prerequisites: ! |
  fix npt
pre_commands: ! ""
post_commands: ! |
  fix move solute npt temp 100.0 100.0 1.0 aniso 1.0 1.0 100.0
  fix test solute npt temp 50.0 ${t_target} 1.0 aniso 1.0 1.0 100.0
input_file: in.fourmol
natoms: 29
global_scalar: 345.94272531096
global_vector: ! |-
  36 1.4169071684612364 5.535272658072402 28.041790581267264 0.7092219494722652 1.5085625157051055 25.324283894797038 0.05999167853358788 0.05989083890902479 0.12901288516737153 0.03317285042065857 0.03262291617990187 0.06072028985784939 0.3107637718613713 0.03125271560466454 4.715238613295154e-05 0.38649179579696186 0.08297552890440986 0.0013280929809349209 23.65177431493126 1.0999730912448284 5.57248341230912 4.19813759986284 0.22612036180611508 63.721705933349575 0.0046367391195358066 0.0046367391195358066 0.0046367391195358066 24.601474985996315 23.792557398963673 82.42581259514502 0.061755184956018845 0.0062105605842783925 9.370153764438838e-06 111.3153021112916 5.130673391827199 0.0013144112674949137
run_pos: ! |2
    1 -3.4154960320553762e-01  2.5864620497532762e+00 -1.3432796772691802e-01
    2  2.6083650868831576e-01  3.0786368466679512e+00 -8.7645586593262959e-01
    3 -7.8385371845351770e-01  1.2921492031632962e+00 -6.2833298300421347e-01
    4 -1.6972632895916391e+00  1.5512922828719766e+00 -1.3082497324162672e+00
    5 -9.9424398792095658e-01  9.7372944090074398e-01  4.8349089440133852e-01
    6  2.2178828575644527e-01  2.7604671070987230e-01 -1.3148408052153782e+00
    7  2.9694525796959681e-01 -9.5977824318271843e-03 -2.6609926600082643e+00
    8  1.1581432518346269e+00 -4.9772922380132645e-01 -6.6017073681062399e-01
    9  1.3747792192425061e+00 -2.5646882079416855e-01  3.4822457243057769e-01
   10  2.0591203780128673e+00 -1.4949883681449885e+00 -1.0097855378214593e+00
   11  1.8021489507598769e+00 -2.0591669340472087e+00 -1.9971806701956218e+00
   12  3.0639398406366478e+00 -5.0140372332212735e-01 -1.7101768141343676e+00
   13  4.1478859466511402e+00 -9.2207910556300732e-01 -1.7293149107757149e+00
   14  2.6494219589292118e+00 -4.2303200243283801e-01 -2.8362401779572153e+00
   15  3.0292090996634968e+00  5.8557250697387886e-01 -1.2937695606692463e+00
   16  2.7095174274447782e+00 -2.4896932134427399e+00  5.4572023038723216e-02
   17  2.2517658181490798e+00 -2.1690434764456201e+00  1.3240641192435874e+00
   18  2.1640583339939283e+00  3.1416611624616610e+00 -3.7664448230434227e+00
   19  1.5372073175820899e+00  2.7406266495271634e+00 -4.5601456570381460e+00
   20  2.8138318753675460e+00  3.8329709288743530e+00 -4.2245166514105614e+00
   21  5.0388073805158236e+00 -4.2249829590506458e+00 -3.8809348531153205e+00
   22  4.4803638726572395e+00 -4.3603195678504409e+00 -4.7966301167357992e+00
   23  5.9019149391706858e+00 -3.7069439736666290e+00 -4.1636701269844041e+00
   24  2.0912876747933886e+00  3.2809335212567632e+00  3.4752915440869376e+00
   25  1.2930641927170834e+00  3.4094388878665729e+00  2.7739404542633288e+00
   26  2.6233847835660207e+00  4.1743341203580400e+00  3.5381572936371217e+00
   27 -2.0939426762084432e+00 -4.5163206964554377e+00  2.3406717261314824e+00
   28 -2.9033001594188597e+00 -4.1684877951660102e+00  1.7683262773697273e+00
   29 -1.4183113893825645e+00 -3.7307934326219661e+00  2.5120669532806907e+00
    1 -3.8264014910366395e-01  2.6468430386928645e+00 -1.1358259312129881e-01
    2  2.3223700974986805e-01  3.1501681511950022e+00 -8.8939962892509250e-01
    3 -8.3367736600678199e-01  1.3264780186508425e+00 -6.2955499777237023e-01
    4 -1.7674636455024277e+00  1.5903329184353279e+00 -1.3418357475064342e+00
    5 -1.0489147214039205e+00  1.0002223845628357e+00  5.3387298642615200e-01
    6  1.9736817231336090e-01  2.8192906319194577e-01 -1.3564250527573822e+00
    7  2.7035968518224962e-01 -4.1458715182365324e-03 -2.7533478230368269e+00
    8  1.1502272637430115e+00 -5.0399512759851284e-01 -6.6657767643727261e-01
    9  1.3718413883040421e+00 -2.5832574678249642e-01  3.9010403557383633e-01
   10  2.0700065311314262e+00 -1.5216247504588036e+00 -1.0290373665976791e+00
   11  1.8098872952219072e+00 -2.0999637745137818e+00 -2.0635999744134095e+00
   12  3.0991665102516066e+00 -5.0827198197907997e-01 -1.7640806579448851e+00
   13  4.2066587149074426e+00 -9.3857810233864392e-01 -1.7840942167336094e+00
   14  2.6759515465518486e+00 -4.2761832687729395e-01 -2.9425919042471707e+00
   15  3.0644522116999280e+00  6.0271520390200628e-01 -1.3287670336670825e+00
   16  2.7346276835974663e+00 -2.5388727410913496e+00  9.1946930468836285e-02
   17  2.2708321758330143e+00 -2.2142949998379819e+00  1.4105210386413010e+00
   18  2.1794740514532709e+00  3.2158859865955094e+00 -3.9194419327848404e+00
   19  1.5385903128665852e+00  2.8059246559312694e+00 -4.7513352933768029e+00
   20  2.8437934599371530e+00  3.9225839454966742e+00 -4.3995559711875991e+00
   21  5.1185773921153395e+00 -4.3147357658479173e+00 -4.0394411715300267e+00
   22  4.5476325364229648e+00 -4.4530848965129080e+00 -4.9991992787470867e+00
   23  6.0010065252121372e+00 -3.7851655046004113e+00 -4.3357815394152937e+00
   24  2.1050743441754260e+00  3.3582584749845896e+00  3.6707635261817320e+00
   25  1.2889817862515160e+00  3.4896243035946117e+00  2.9356637378500672e+00
   26  2.6490830088073487e+00  4.2715457024198269e+00  3.7366543472814548e+00
   27 -2.1738468092909162e+00 -4.6125585283458737e+00  2.4815463136929843e+00
   28 -3.0013226147256966e+00 -4.2569830492730576e+00  1.8816598597585177e+00
   29 -1.4830908024080616e+00 -3.8095458399920190e+00  2.6611890019650328e+00
run_vel: ! |2
    1  3.2607305579658414e-03  5.2283910924909999e-03  3.7189453458053088e-04
    2 -2.6099687606138575e-04 -1.5858139573932597e-04  1.3920577944194223e-03
    3 -2.4950025007010289e-03 -3.9150758637536429e-03 -6.3281031821042994e-04
    4 -2.0664320114504756e-04 -2.8504760613224408e-03  1.6734389441901390e-03
    5 -4.2824834817012233e-03 -3.9252449796855051e-03 -3.7914431052465717e-03
    6 -1.2591061258711877e-02  1.4385245865933177e-02  6.9915761704122800e-03
    7  4.0098078854369989e-05 -2.3446853910990373e-03 -1.2614639941631717e-02
    8  2.3965890345473821e-03 -6.0994175327269728e-04  1.2568091229152005e-02
    9 -7.7335302970379135e-04  8.6656138219381616e-04  9.8057603281344482e-04
   10  1.0241999506509702e-02 -9.9094532829751558e-03 -5.6180123013999921e-03
   11 -1.5225083896873166e-03 -3.4753336379362112e-04  1.6891254556377379e-03
   12  4.2691859395093464e-04 -1.8671590385837861e-04 -1.3110805884175487e-03
   13 -8.2163511795904881e-04  2.3384239797411134e-03 -3.0513064093908516e-05
   14  2.2833004454906138e-03 -1.7705422123508389e-03  1.7117775385344322e-03
   15  6.5476273652761876e-05 -3.2896157292501842e-03  1.3424727328414407e-03
   16  4.3424814937849361e-03 -2.7213585718420478e-03 -1.1305727101324294e-02
   17 -3.1348917067878955e-03  2.3832241031205839e-03  8.8113219185493499e-03
    1  3.3117305291394013e-03  4.3156665228280978e-03 -7.7084708620121529e-04
    2 -1.7789819326805535e-03 -1.3052072258705808e-03  3.3022634256815848e-03
    3 -2.0640159848478194e-03 -2.9699759000598020e-03  5.5392879577383229e-06
    4  7.7998047376445691e-04 -3.0812198752673626e-03  2.8509136192942362e-03
    5 -4.1428543776131912e-03 -3.6385223461370014e-03 -5.8462973551689952e-03
    6 -1.0626553408330779e-02  1.2040577434471776e-02  3.5646126723420176e-03
    7 -1.3032515506956909e-04 -1.5340555295840941e-03 -8.6132879737892114e-03
    8  2.0787989807421383e-03 -3.1543904630818741e-04  1.1755936166458321e-02
    9 -1.6040577561806835e-03  1.4749480835649854e-04 -2.5321819103773708e-03
   10  9.2656425810588739e-03 -8.6264499339171498e-03 -5.3520586203460617e-03
   11 -1.1965362264882086e-03  4.4097721195436937e-04  3.4566912950422320e-03
   12  1.7581181514447641e-04 -2.6768830740611378e-04 -1.5120877019447641e-03
   13 -1.8799040776129392e-03  2.7048735162129404e-03  9.9198423662933872e-05
   14  2.8955342550013889e-03 -1.7809564398167011e-03  3.8690325081093147e-03
   15  1.8303928593785574e-04 -4.3666879661390769e-03  7.3514082185750763e-04
   16  2.5987668644668156e-03 -1.2734932981677274e-03 -7.6261947665517190e-03
   17 -2.0156838621095729e-03  1.6099202860238610e-03  5.5731574622651624e-03
   18 -6.0936815808025862e-04 -9.3774557532468582e-04 -3.3558072507805731e-04
   19 -6.9919768291957119e-04 -3.6060777270430031e-03  4.2833405289822791e-03
   20  4.7777805013736515e-03  5.1003745845520452e-03  1.8002873923729241e-03
+52 −49

File changed.

Preview size limit exceeded, changes collapsed.

+51 −48

File changed.

Preview size limit exceeded, changes collapsed.

Loading