added dipole support to kokkos version, plus 2 unit tests

This commit is contained in:
alphataubio
2024-08-04 22:57:05 -04:00
parent af203f7fc7
commit 90cdb023dd
5 changed files with 293 additions and 12 deletions

View File

@ -46,8 +46,8 @@ FixEfieldKokkos<DeviceType>::FixEfieldKokkos(LAMMPS *lmp, int narg, char **arg)
atomKK = (AtomKokkos *) atom;
domainKK = (DomainKokkos *) domain;
execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
datamask_read = EMPTY_MASK;
datamask_modify = EMPTY_MASK;
datamask_read = X_MASK | F_MASK | TORQUE_MASK | Q_MASK | MU_MASK | IMAGE_MASK | MASK_MASK;
datamask_modify = F_MASK | TORQUE_MASK;
memory->destroy(efield);
memoryKK->create_kokkos(k_efield,efield,maxatom,4,"efield:efield");
@ -87,11 +87,13 @@ template<class DeviceType>
void FixEfieldKokkos<DeviceType>::post_force(int vflag)
{
atomKK->sync(execution_space, X_MASK | F_MASK | Q_MASK | IMAGE_MASK | MASK_MASK);
atomKK->sync(execution_space, datamask_read);
d_x = atomKK->k_x.template view<DeviceType>();
d_f = atomKK->k_f.template view<DeviceType>();
d_q = atomKK->k_q.template view<DeviceType>();
d_mu = atomKK->k_mu.template view<DeviceType>();
d_torque = atomKK->k_torque.template view<DeviceType>();
d_image = atomKK->k_image.template view<DeviceType>();
d_mask = atomKK->k_mask.template view<DeviceType>();
int nlocal = atomKK->nlocal;
@ -145,7 +147,16 @@ void FixEfieldKokkos<DeviceType>::post_force(int vflag)
// [alphataubio (2024/08)]
copymode = 1;
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant>(0,nlocal),*this,result);
if(qflag && muflag)
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant<1,1> >(0,nlocal),*this,result);
else if(qflag && !muflag)
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant<1,0> >(0,nlocal),*this,result);
else if(!qflag && muflag)
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant<0,1> >(0,nlocal),*this,result);
else
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldConstant<0,0> >(0,nlocal),*this,result);
copymode = 0;
// variable force, wrap with clear/add
@ -169,13 +180,22 @@ void FixEfieldKokkos<DeviceType>::post_force(int vflag)
// [alphataubio (2024/08)]
copymode = 1;
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant>(0,nlocal),*this,result);
if(qflag && muflag)
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant<1,1> >(0,nlocal),*this,result);
else if(qflag && !muflag)
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant<1,0> >(0,nlocal),*this,result);
else if(!qflag && muflag)
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant<0,1> >(0,nlocal),*this,result);
else
Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagFixEfieldNonConstant<0,0> >(0,nlocal),*this,result);
copymode = 0;
}
atomKK->modified(execution_space, F_MASK);
atomKK->modified(execution_space, datamask_modify);
Kokkos::atomic_store(&(d_fsum[0]),result[0]);
Kokkos::atomic_store(&(d_fsum[1]),result[1]);
@ -202,9 +222,10 @@ void FixEfieldKokkos<DeviceType>::post_force(int vflag)
}
template<class DeviceType>
template<int QFLAG, int MUFLAG>
KOKKOS_INLINE_FUNCTION
void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldConstant, const int &i, value_type result) const {
if (d_mask(i) & groupbit) {
void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldConstant<QFLAG,MUFLAG>, const int &i, value_type result) const {
if ( QFLAG && (d_mask(i) & groupbit)) {
if (region && !d_match[i]) return;
Few<double,3> x_i;
@ -240,12 +261,21 @@ void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldConstant, const int &i,
}
}
if (MUFLAG && (d_mask(i) & groupbit)) {
if (region && !d_match[i]) return;
d_torque(i,0) += ez * d_mu(i,1) - ey * d_mu(i,2);
d_torque(i,1) += ex * d_mu(i,2) - ez * d_mu(i,0);
d_torque(i,2) += ey * d_mu(i,0) - ex * d_mu(i,1);
result[0] -= d_mu(i,0) * ex + d_mu(i,1) * ey + d_mu(i,2) * ez;
}
}
template<class DeviceType>
template<int QFLAG, int MUFLAG>
KOKKOS_INLINE_FUNCTION
void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldNonConstant, const int &i, value_type result) const {
if (d_mask(i) & groupbit) {
void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldNonConstant<QFLAG,MUFLAG>, const int &i, value_type result) const {
if ( QFLAG && (d_mask(i) & groupbit)) {
if (region && !d_match[i]) return;
F_FLOAT fx, fy, fz;
@ -268,6 +298,14 @@ void FixEfieldKokkos<DeviceType>::operator()(TagFixEfieldNonConstant, const int
if (pstyle == ATOM) result[0] += qe2f * d_q(i) * d_efield(i,3);
else if (estyle == ATOM) result[0] += d_efield(i,3);
}
if (MUFLAG && (d_mask(i) & groupbit)) {
if (region && !d_match[i]) return;
d_torque(i,0) += ez * d_mu(i,1) - ey * d_mu(i,2);
d_torque(i,1) += ex * d_mu(i,2) - ez * d_mu(i,0);
d_torque(i,2) += ey * d_mu(i,0) - ex * d_mu(i,1);
}
}
/* ----------------------------------------------------------------------

View File

@ -28,7 +28,10 @@ FixStyle(efield/kk/host,FixEfieldKokkos<LMPHostType>);
namespace LAMMPS_NS {
template<int QFLAG, int MUFLAG>
struct TagFixEfieldConstant{};
template<int QFLAG, int MUFLAG>
struct TagFixEfieldNonConstant{};
template<class DeviceType>
@ -43,11 +46,13 @@ class FixEfieldKokkos : public FixEfield {
void init() override;
void post_force(int) override;
template<int QFLAG, int MUFLAG>
KOKKOS_INLINE_FUNCTION
void operator()(TagFixEfieldConstant, const int&, value_type) const;
void operator()(TagFixEfieldConstant<QFLAG,MUFLAG>, const int&, value_type) const;
template<int QFLAG, int MUFLAG>
KOKKOS_INLINE_FUNCTION
void operator()(TagFixEfieldNonConstant, const int&, value_type) const;
void operator()(TagFixEfieldNonConstant<QFLAG,MUFLAG>, const int&, value_type) const;
const int value_count = 10;
@ -60,7 +65,9 @@ class FixEfieldKokkos : public FixEfield {
typename AT::t_x_array_randomread d_x;
typename AT::t_float_1d_randomread d_q;
typename AT::t_mu_array_randomread d_mu;
typename AT::t_f_array d_f;
typename AT::t_f_array d_torque;
typename AT::t_imageint_1d_randomread d_image;
typename AT::t_int_1d_randomread d_mask;

View File

@ -301,6 +301,9 @@ TEST(FixTimestep, plain)
EXPECT_POSITIONS("run_pos (normal run, verlet)", lmp->atom, test_config.run_pos, epsilon);
EXPECT_VELOCITIES("run_vel (normal run, verlet)", lmp->atom, test_config.run_vel, epsilon);
if(lmp->atom->torque_flag)
EXPECT_TORQUES("run_torques (normal run, verlet)", lmp->atom, test_config.run_torque, epsilon);
auto *ifix = lmp->modify->get_fix_by_id("test");
if (!ifix) {
@ -350,6 +353,8 @@ TEST(FixTimestep, plain)
EXPECT_POSITIONS("run_pos (restart, verlet)", lmp->atom, test_config.run_pos, epsilon);
EXPECT_VELOCITIES("run_vel (restart, verlet)", lmp->atom, test_config.run_vel, epsilon);
if(lmp->atom->torque_flag)
EXPECT_TORQUES("run_torque (restart, verlet)", lmp->atom, test_config.run_torque, epsilon);
ifix = lmp->modify->get_fix_by_id("test");
if (!ifix) {
@ -887,6 +892,8 @@ TEST(FixTimestep, kokkos_omp)
EXPECT_POSITIONS("run_pos (normal run, verlet)", lmp->atom, test_config.run_pos, epsilon);
EXPECT_VELOCITIES("run_vel (normal run, verlet)", lmp->atom, test_config.run_vel, epsilon);
if(lmp->atom->torque_flag)
EXPECT_TORQUES("run_torque (normal run, verlet)", lmp->atom, test_config.run_torque, epsilon);
auto *ifix = lmp->modify->get_fix_by_id("test");
@ -938,6 +945,8 @@ TEST(FixTimestep, kokkos_omp)
EXPECT_POSITIONS("run_pos (restart, verlet)", lmp->atom, test_config.run_pos, epsilon);
EXPECT_VELOCITIES("run_vel (restart, verlet)", lmp->atom, test_config.run_vel, epsilon);
if(lmp->atom->torque_flag)
EXPECT_TORQUES("run_torque (restart, verlet)", lmp->atom, test_config.run_torque, epsilon);
ifix = lmp->modify->get_fix_by_id("test");
if (!ifix) {

View File

@ -0,0 +1,109 @@
---
lammps_version: 27 Jun 2024
tags: generated
date_generated: Sun Aug 4 21:46:33 2024
epsilon: 2e-13
skip_tests:
prerequisites: ! |
atom full
fix efield
pre_commands: ! ""
post_commands: ! |
fix move all nve
fix test solute efield 0.0 -0.1 0.1
input_file: in.dipole
natoms: 29
global_scalar: 5.323551487649474
global_vector: ! |-
3 0 -2.220446049250313e-16 2.220446049250313e-16
run_pos: ! |2
1 -2.7803395919988250e-01 2.4746113957575506e+00 -1.7221055624989043e-01
2 3.0862275733044281e-01 2.9608256711658929e+00 -8.5204259894833823e-01
3 -6.9730353651054677e-01 1.2462185235506165e+00 -6.2333170008106076e-01
4 -1.5803707788642558e+00 1.4864216493511191e+00 -1.2553333144872691e+00
5 -9.0224637486770010e-01 9.3187101763772007e-01 4.0100026498818492e-01
6 2.9068098249777818e-01 2.3317755418235958e-01 -1.2787854346401060e+00
7 3.4003718022438006e-01 -1.1136458545317439e-02 -2.4674043539784920e+00
8 1.1653603994058781e+00 -4.8553538245393735e-01 -6.7455699042973893e-01
9 1.3798605257891061e+00 -2.5606949147401714e-01 2.7646698442033224e-01
10 2.0213511597812359e+00 -1.4294263001051324e+00 -9.6869511230628547e-01
11 1.7900398780219073e+00 -1.9910605295844079e+00 -1.8892677004539045e+00
12 3.0052519569684715e+00 -4.9050496445328290e-01 -1.6215568178297506e+00
13 4.0521826738629381e+00 -8.9321351964942697e-01 -1.6399622114060945e+00
14 2.6048704355881833e+00 -4.1699645854738832e-01 -2.6633172811775432e+00
15 2.9682789927413045e+00 5.5558820658819164e-01 -1.2357788915285541e+00
16 2.6531499373970879e+00 -2.3977947524956051e+00 3.1767580086883969e-02
17 2.2316478624956817e+00 -2.1010963925555934e+00 1.1526347069081506e+00
18 2.1372510164775917e+00 3.0158506000670471e+00 -3.5167916423912540e+00
19 1.5345707099325703e+00 2.6249696297497245e+00 -4.2370263294605586e+00
20 2.7732095850735732e+00 3.6929598470822609e+00 -3.9337745509644702e+00
21 4.9045170966506779e+00 -4.0748031756039733e+00 -3.6218925414637724e+00
22 4.3601484254173615e+00 -4.2118940901718647e+00 -4.4596265759840623e+00
23 5.7410255603426821e+00 -3.5837707365543663e+00 -3.8765903698198994e+00
24 2.0689205181437282e+00 3.1527432700151787e+00 3.1544823899087238e+00
25 1.3065187961786864e+00 3.2665243034421700e+00 2.5127268092211676e+00
26 2.5789541569135683e+00 4.0089379439900057e+00 3.2207820820981503e+00
27 -1.9618638791883916e+00 -4.3549504053758268e+00 2.1090482240812847e+00
28 -2.7443201293863742e+00 -4.0212170735729584e+00 1.5850082667482344e+00
29 -1.3141860113747614e+00 -3.5978986954166352e+00 2.2741894687371453e+00
run_vel: ! |2
1 1.1236143544142998e-03 1.3615061488813968e-03 1.9035146531107875e-05
2 3.8968322106659220e-03 4.6153851102938084e-03 1.3004266866309365e-03
3 -1.6759039090575756e-03 5.6410326296895460e-04 -6.5573998085605308e-04
4 -2.2599843514772115e-03 -3.8290476239094783e-03 -2.4796763793128265e-03
5 -6.0394625433784410e-03 -4.5348465561185066e-03 -1.3711951052336872e-03
6 -3.1023884715655490e-03 4.6637296517233725e-03 4.6189123645965016e-03
7 -5.2419935748452737e-05 -1.2319086507260619e-03 -3.2654613259055676e-03
8 8.3601735362959304e-04 -9.5637212087811387e-04 1.8785968961167793e-03
9 8.4122759994834529e-04 2.0922433389435784e-04 6.4346601850387691e-03
10 2.3678265535346989e-03 -1.5212081023084892e-03 -1.1281854658615922e-03
11 -2.5475261615126705e-03 -2.3919533481450207e-03 -2.2311276418214019e-03
12 1.1421771336981225e-03 -6.2449989986439278e-04 -1.3944269209182573e-03
13 3.3571788228550390e-03 4.5917035556149836e-03 -7.2280548749387651e-04
14 1.7062612115025355e-03 -4.9841491672042619e-03 -3.8873699403456042e-03
15 -3.0289993105478935e-03 -4.5330921360638319e-03 4.7358760686849613e-03
16 1.4739447117825949e-03 -1.5730324097209085e-03 -2.5910350086283409e-03
17 1.8178020207200592e-06 8.2471901124066651e-04 2.5861088770288477e-03
18 -6.1590009973258066e-04 -9.3553764271450690e-04 -3.7200153139999693e-04
19 3.2061425510644030e-04 -3.0287047640615156e-03 5.8636911223825961e-03
20 4.1715098782670965e-03 4.3790563537493962e-03 2.5400818877712398e-03
21 -9.7312009033477575e-04 1.5100049673511838e-04 -1.5172282348038986e-04
22 -5.2572212429860743e-03 -3.5787417430626820e-03 1.8543943930500865e-03
23 3.2939362683106128e-03 -2.8836279185067231e-03 2.6255213558360269e-03
24 2.5638398658457592e-04 4.3450813156814999e-04 -4.5928187145017301e-04
25 2.1619084724042686e-03 -4.4534715375427044e-03 7.6930725248380827e-04
26 1.6282501420738550e-04 5.6085644860791274e-05 3.9231484240579272e-03
27 -2.4066098679756474e-04 3.1636377958111164e-04 -5.3626843391511858e-04
28 -3.4277217399776316e-03 3.7010237059210787e-04 1.5959546005529568e-05
29 -8.6242002778640222e-04 1.5767896868750036e-03 3.2980383776088458e-03
run_torque: ! |2
1 -8.5357527435914071e-01 -5.3719824654427417e-01 -5.3719824654427417e-01
2 1.1164762300859654e+00 1.0884510402842875e+00 1.0884510402842875e+00
3 6.7627977540651552e-01 3.2882282463826995e-01 3.2882282463826995e-01
4 2.9575381610511360e+00 6.3262796353754214e-01 6.3262796353754214e-01
5 -2.0623461392521740e+00 8.4166297527803235e-01 8.4166297527803235e-01
6 9.8242175844085367e-01 -1.6908759916154248e-01 -1.6908759916154248e-01
7 -1.3684609891014952e+00 -8.0606058406150949e-01 -8.0606058406150949e-01
8 -1.1874337657028966e+00 -2.6646753617169627e-01 -2.6646753617169627e-01
9 -1.0177972619106430e+00 2.1477723017368913e+00 2.1477723017368913e+00
10 2.5538853609868983e+00 -1.3797674437477894e+00 -1.3797674437477894e+00
11 -1.3439139083704066e+00 1.5074058265158885e+00 1.5074058265158885e+00
12 2.9652524051282363e+00 -4.5726725480648156e-01 -4.5726725480648156e-01
13 -1.2321028588273288e+00 2.0829614135052950e+00 2.0829614135052950e+00
14 -2.3022900866870475e+00 3.4249143995027564e-01 3.4249143995027564e-01
15 -2.2389603707876993e-01 -1.0999871400210739e+00 -1.0999871400210739e+00
16 9.2419348248650579e-01 2.1428687117582701e+00 2.1428687117582701e+00
17 2.7094271617240540e+00 7.2665988123741851e-02 7.2665988123741851e-02
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
...

View File

@ -0,0 +1,118 @@
---
lammps_version: 27 Jun 2024
tags: generated
date_generated: Sun Aug 4 22:46:18 2024
epsilon: 2e-13
skip_tests:
prerequisites: ! |
atom full
fix efield
pre_commands: ! ""
post_commands: ! |
fix move all nve
variable xforce delete
variable xforce equal 0.1*step/10.0
variable yforce delete
variable yforce equal 0.2*step/20.0
variable zforce delete
variable zforce equal 0.3*step/30.0
fix test solute efield v_xforce v_yforce v_zforce
fix_modify test virial yes
input_file: in.dipole
natoms: 29
run_stress: ! |2-
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
global_scalar: 0
global_vector: ! |-
3 -1.1102230246251565e-16 -1.1102230246251565e-16 -1.1102230246251565e-16
run_pos: ! |2
1 -2.7803462088205888e-01 2.4746080899361873e+00 -1.7220863968422631e-01
2 3.0864099030230185e-01 2.9609184454137019e+00 -8.5209600355138704e-01
3 -6.9730358393070480e-01 1.2462183036890040e+00 -6.2333158600291183e-01
4 -1.5803650460394709e+00 1.4864488193383358e+00 -1.2553491245822981e+00
5 -9.0224083555581314e-01 9.3189811105149611e-01 4.0098458630849332e-01
6 2.9068221058927873e-01 2.3318328040718064e-01 -1.2787887242994260e+00
7 3.4003667591250708e-01 -1.1138891887048934e-02 -2.4674029540393323e+00
8 1.1653596712202525e+00 -4.8553870127449805e-01 -6.7455507659928038e-01
9 1.3798803918386071e+00 -2.5597543756832153e-01 2.7641311417048842e-01
10 2.0213513284917770e+00 -1.4294255167846066e+00 -9.6869557537003070e-01
11 1.7900455523978396e+00 -1.9910333303206023e+00 -1.8892835721159780e+00
12 3.0052513251780613e+00 -4.9050798224436865e-01 -1.6215550550329203e+00
13 4.0521883707492767e+00 -8.9318637207253593e-01 -1.6399780787400113e+00
14 2.6048761179356523e+00 -4.1696935840940191e-01 -2.6633329891570114e+00
15 2.9682846368976175e+00 5.5561522368460747e-01 -1.2357947529810707e+00
16 2.6531511203883147e+00 -2.3977890057416973e+00 3.1764256827161913e-02
17 2.2316473623837325e+00 -2.1010988247185729e+00 1.1526361129941032e+00
18 2.1372510164775789e+00 3.0158506000670355e+00 -3.5167916423912531e+00
19 1.5345707099325570e+00 2.6249696297497045e+00 -4.2370263294605177e+00
20 2.7732095850735634e+00 3.6929598470822547e+00 -3.9337745509644595e+00
21 4.9045170966506770e+00 -4.0748031756039724e+00 -3.6218925414637728e+00
22 4.3601484254173615e+00 -4.2118940901718629e+00 -4.4596265759840614e+00
23 5.7410255603426812e+00 -3.5837707365543650e+00 -3.8765903698198989e+00
24 2.0689205181437282e+00 3.1527432700151770e+00 3.1544823899087251e+00
25 1.3065187961786540e+00 3.2665243034421243e+00 2.5127268092211485e+00
26 2.5789541569135679e+00 4.0089379439900039e+00 3.2207820820981503e+00
27 -1.9618638791883911e+00 -4.3549504053758268e+00 2.1090482240812847e+00
28 -2.7443201293863759e+00 -4.0212170735729593e+00 1.5850082667482348e+00
29 -1.3141860113747683e+00 -3.5978986954166383e+00 2.2741894687371484e+00
run_vel: ! |2
1 1.1226228998813120e-03 1.3578676832028912e-03 2.0557170947250780e-05
2 3.9239288756989016e-03 4.7172177954433788e-03 1.2587212580222184e-03
3 -1.6759752389904064e-03 5.6386389592282232e-04 -6.5566849439663093e-04
4 -2.2512384997042472e-03 -3.7989938232970300e-03 -2.4924216203737527e-03
5 -6.0310935807221877e-03 -4.5049478412039637e-03 -1.3836695500793908e-03
6 -3.1005005132647293e-03 4.6700701138933255e-03 4.6163000387542787e-03
7 -5.3188586817768639e-05 -1.2346121248938561e-03 -3.2643401792630212e-03
8 8.3489219083866242e-04 -9.6003848332027136e-04 1.8801202990819514e-03
9 8.7162816848026234e-04 3.1364623622102896e-04 6.3917296813706522e-03
10 2.3680868557455818e-03 -1.5203429248592441e-03 -1.1285650316897892e-03
11 -2.5388840283489342e-03 -2.3618541252316532e-03 -2.2440122087485034e-03
12 1.1412159144708132e-03 -6.2782650780501229e-04 -1.3930048293318753e-03
13 3.3658569001843641e-03 4.6217055285812667e-03 -7.3566554681633899e-04
14 1.7149215410627553e-03 -4.9542364152862740e-03 -3.8999231155933270e-03
15 -3.0204251503176452e-03 -4.5033742607606102e-03 4.7230261700345021e-03
16 1.4757444573234482e-03 -1.5666516321294532e-03 -2.5937088506404159e-03
17 1.0571264012818976e-06 8.2201760099452344e-04 2.5872403829922935e-03
18 -6.1590009975964484e-04 -9.3553764274130838e-04 -3.7200153139700973e-04
19 3.2061425507972274e-04 -3.0287047641009905e-03 5.8636911224663182e-03
20 4.1715098782492523e-03 4.3790563537376538e-03 2.5400818877933480e-03
21 -9.7312009033487896e-04 1.5100049673665020e-04 -1.5172282348215765e-04
22 -5.2572212429864151e-03 -3.5787417430601385e-03 1.8543943930504219e-03
23 3.2939362683093013e-03 -2.8836279185044679e-03 2.6255213558361900e-03
24 2.5638398658362307e-04 4.3450813156448382e-04 -4.5928187144820296e-04
25 2.1619084723496903e-03 -4.4534715376318085e-03 7.6930725246239842e-04
26 1.6282501420679502e-04 5.6085644857617055e-05 3.9231484240590028e-03
27 -2.4066098679621984e-04 3.1636377958145940e-04 -5.3626843391455024e-04
28 -3.4277217399801899e-03 3.7010237059051832e-04 1.5959546006432193e-05
29 -8.6242002780014568e-04 1.5767896868705918e-03 3.2980383776149932e-03
run_torque: ! |2
1 -2.4436070050579253e+00 4.5061479554988704e-01 1.9929922095080381e+00
2 2.1195936058917191e+00 2.5755452131595669e-01 -2.3771481272076755e+00
3 -2.5250330905076650e+00 1.7960867151270548e+00 7.2894637538061047e-01
4 -8.3457683612426237e-01 2.1064060533126194e+00 -1.2718292171883570e+00
5 1.7827105075374519e+00 -1.0429633292471694e+00 -7.3974717829028225e-01
6 2.4804444324082988e+00 -9.8252359215704177e-01 -1.4979208402512567e+00
7 2.1855709506971714e+00 -2.2850183382383915e+00 9.9447387541219956e-02
8 2.4111434047810372e+00 -1.8937192376090342e+00 -5.1742416717200301e-01
9 4.8925439897630674e-01 1.0664717371371024e+00 -1.5557261361134094e+00
10 4.4248864855928816e-01 -3.0350413488311634e-01 -1.3898451367617182e-01
11 1.6560442813187830e+00 -1.5966304279484356e-01 -1.4963812385239397e+00
12 9.5494331320688497e-01 3.4281550160266666e-01 -1.2977588148095516e+00
13 5.3080735403713286e-01 9.0812431025473794e-01 -1.4389316642918708e+00
14 -1.8067673652119607e+00 2.5646079989138193e-01 1.5503065653205788e+00
15 -2.2860558945796523e+00 1.7347982044145904e-01 2.1125760741381931e+00
16 6.1857755737751563e-01 1.7746835837124604e+00 -2.3932611410899760e+00
17 -1.4497938429511878e+00 1.8668005766642088e+00 -4.1700673371302099e-01
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
...