Skip to content

Commit

Permalink
Adding an openACC interface to ParallelTaskManager
Browse files Browse the repository at this point in the history
  • Loading branch information
Iximiel committed Feb 27, 2025
1 parent ec9e7ff commit 61fce4f
Show file tree
Hide file tree
Showing 46 changed files with 1,178 additions and 126 deletions.
3 changes: 3 additions & 0 deletions regtest/targetGPU/rt-PBC/COLVAR.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#! FIELDS time d2
0.000000 1.000000
0.050000 9.000000
4 changes: 4 additions & 0 deletions regtest/targetGPU/rt-PBC/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
type=driver
plumed_needs="dlopen"
arg="--plumed plumed.dat --trajectory-stride 10 --timestep 0.005 --ixyz trajectory.xyz"
export NVCOMPILER_ACC_NOTIFY=31
138 changes: 138 additions & 0 deletions regtest/targetGPU/rt-PBC/pbctest.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Copyright (c) 2013 The plumed team
(see the PEOPLE file at the root of the distribution for a list of names)
See http://www.plumed-code.org for more information.
This file is part of plumed, version 2.0.
plumed is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
plumed is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with plumed. If not, see <http://www.gnu.org/licenses/>.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
#include "colvar/Colvar.h"
#include "core/ActionRegister.h"

#include <string>
#include <cmath>

using namespace std;

namespace PLMD{

class Distance : public colvar::Colvar {
bool components;
bool pbc;

public:
static void registerKeywords( Keywords& keys );
Distance(const ActionOptions&);
// active methods:
virtual void calculate();
};

PLUMED_REGISTER_ACTION(Distance,"TESTPBCS")

void Distance::registerKeywords( Keywords& keys ){
Colvar::registerKeywords( keys );
keys.add("atoms","ATOMS","the pair of atom that we are calculating the distance between");
keys.addFlag("COMPONENTS",false,"calculate the x, y and z components of the distance separately and store them as label.x, label.y and label.z");
}

Distance::Distance(const ActionOptions&ao):
PLUMED_COLVAR_INIT(ao),
components(false),
pbc(true)
{
vector<AtomNumber> atoms;
parseAtomList("ATOMS",atoms);
if(atoms.size()!=2)
error("Number of specified atoms should be 2");
parseFlag("COMPONENTS",components);
pbc=true;
checkRead();

log.printf(" between atoms %d %d\n",atoms[0].serial(),atoms[1].serial());
if(pbc) log.printf(" using periodic boundary conditions\n");
else log.printf(" without periodic boundary conditions\n");


if(!components){

addValueWithDerivatives(); setNotPeriodic();

} else{
addComponentWithDerivatives("x"); componentIsNotPeriodic("x");
addComponentWithDerivatives("y"); componentIsNotPeriodic("y");
addComponentWithDerivatives("z"); componentIsNotPeriodic("z");
}

requestAtoms(atoms);
}

void Distance::calculate(){


Vector a=getPosition(0);
Vector b=getPosition(1);
std::vector<Vector> d(1);
auto & pbc=getPbc();



//doing this on the GPU losing A lot of time, to check if pbc is correcly there
#pragma acc data copyin(a[0:3],b[0:3]) copyout(d[0:1])
{

#pragma acc kernels present(pbc)
{
d[0]=delta(a,b);
pbc.apply(d);
}

}
auto distance=d[0];

const double value=distance.modulo();
const double invvalue=1.0/value;

if(!components){

setAtomsDerivatives(0,-invvalue*distance);
setAtomsDerivatives(1,invvalue*distance);
setBoxDerivatives (-invvalue*Tensor(distance,distance));
setValue (value);

}else{

Value* valuex=getPntrToComponent("x");
Value* valuey=getPntrToComponent("y");
Value* valuez=getPntrToComponent("z");

setAtomsDerivatives (valuex,0,Vector(-1,0,0));
setAtomsDerivatives (valuex,1,Vector(+1,0,0));
setBoxDerivatives (valuex,Tensor(distance,Vector(-1,0,0)));
valuex->set(distance[0]);

setAtomsDerivatives (valuey,0,Vector(0,-1,0));
setAtomsDerivatives (valuey,1,Vector(0,+1,0));
setBoxDerivatives (valuey,Tensor(distance,Vector(0,-1,0)));
valuey->set(distance[1]);

setAtomsDerivatives (valuez,0,Vector(0,0,-1));
setAtomsDerivatives (valuez,1,Vector(0,0,+1));
setBoxDerivatives (valuez,Tensor(distance,Vector(0,0,-1)));
valuez->set(distance[2]);
};
}

}
8 changes: 8 additions & 0 deletions regtest/targetGPU/rt-PBC/plumed.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# This is loading a collective variable on the fly:
LOAD FILE=./pbctest.cpp

d2: TESTPBCS ATOMS=1,2

PRINT FILE=COLVAR ARG=d2

ENDPLUMED
20 changes: 20 additions & 0 deletions regtest/targetGPU/rt-PBC/trajectory.xyz
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
8
10 0 0 0 10 0 0 0 10
X 0.5 0.5 0.5
X 0.5 0.5 9.5
X 0.5 9.5 0.5
X 0.5 9.5 9.5
X 9.5 0.5 0.5
X 9.5 0.5 9.5
X 9.5 9.5 0.5
X 9.5 9.5 9.5
8
10 10 0 0 10 10 10 0 10
X 0.5 0.5 0.5
X 0.5 0.5 9.5
X 0.5 9.5 0.5
X 0.5 9.5 9.5
X 9.5 0.5 0.5
X 9.5 0.5 9.5
X 9.5 9.5 0.5
X 9.5 9.4 9.5
1 change: 1 addition & 0 deletions regtest/targetGPU/rt-basic-print/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include ../../scripts/test.make
6 changes: 6 additions & 0 deletions regtest/targetGPU/rt-basic-print/angles.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! FIELDS time a1 a2 a3 a4.1 a4.2 a4.3
0.000000 1.0395 0.0456 2.0492 1.0395 0.0456 2.0492
0.050000 1.0470 0.0616 2.0374 1.0470 0.0616 2.0374
0.100000 1.0147 0.0585 2.0184 1.0147 0.0585 2.0184
0.150000 0.9828 0.0960 1.9817 0.9828 0.0960 1.9817
0.200000 0.9937 0.1207 1.9483 0.9937 0.1207 1.9483
6 changes: 6 additions & 0 deletions regtest/targetGPU/rt-basic-print/cdipoles.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! FIELDS time cdip1.x cdip2.x cdip4.x.1 cdip4.x.2 cdip1.y cdip2.y cdip4.y.1 cdip4.y.2 cdip1.z cdip2.z cdip4.z.1 cdip4.z.2
0.000000 -0.4267 0.3432 -0.4267 0.3432 0.2611 -1.5313 0.2611 -1.5313 -1.5227 -3.1923 -1.5227 -3.1923
0.050000 -0.4213 0.2062 -0.4213 0.2062 0.2417 -1.6996 0.2417 -1.6996 -1.5227 -3.1625 -1.5227 -3.1625
0.100000 -0.4196 -0.1063 -0.4196 -0.1063 0.2235 -1.8309 0.2235 -1.8309 -1.5305 -3.2191 -1.5305 -3.2191
0.150000 -0.4213 -0.4574 -0.4213 -0.4574 0.2043 -1.8013 0.2043 -1.8013 -1.5469 -3.2733 -1.5469 -3.2733
0.200000 -0.4273 -0.7214 -0.4273 -0.7214 0.1736 -1.6515 0.1736 -1.6515 -1.5567 -3.3560 -1.5567 -3.3560
6 changes: 6 additions & 0 deletions regtest/targetGPU/rt-basic-print/cdists.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! FIELDS time cd1.x cd2.x cd3.x cd4.x.1 cd4.x.2 cd4.x.3 cd1.y cd2.y cd3.y cd4.y.1 cd4.y.2 cd4.y.3 cd1.z cd2.z cd3.z cd4.z.1 cd4.z.2 cd4.z.3
0.000000 0.9469 -0.7971 0.8627 0.9469 -0.7971 0.8627 -0.0122 0.0471 -0.0036 -0.0122 0.0471 -0.0036 0.8351 0.7525 0.8682 0.8351 0.7525 0.8682
0.050000 1.0252 -0.8061 0.8707 1.0252 -0.8061 0.8707 -0.0079 0.0553 -0.0081 -0.0079 0.0553 -0.0081 0.8276 0.6842 0.9041 0.8276 0.6842 0.9041
0.100000 1.1035 -0.8696 0.8712 1.1035 -0.8696 0.8712 -0.0087 0.0253 -0.0381 -0.0087 0.0253 -0.0381 0.8507 0.6663 0.9327 0.8507 0.6663 0.9327
0.150000 1.1806 -0.9524 0.8806 1.1806 -0.9524 0.8806 0.0050 0.0044 -0.0700 0.0050 0.0044 -0.0700 0.8849 0.6672 0.9457 0.8849 0.6672 0.9457
0.200000 1.2153 -1.0250 0.8986 1.2153 -1.0250 0.8986 0.0035 0.0151 -0.0441 0.0035 0.0151 -0.0441 0.8633 0.6541 0.9340 0.8633 0.6541 0.9340
25 changes: 25 additions & 0 deletions regtest/targetGPU/rt-basic-print/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#Hello!
# this test shows that when POSITIONS and DISTANCE are both using the GPU something breaks
type=driver
# this is to test a different name
arg="--plumed plumed.dat --trajectory-stride 10 --timestep 0.005 --ixyz trajectory.xyz --dump-forces forces --dump-forces-fmt=%10.6f --pdb test.pdb"
extra_files="../../trajectories/trajectory.xyz"



export NVCOMPILER_ACC_NOTIFY=0

#####NVCOMPILER_ACC_NOTIFY:
# With no argument, a debug message will be written to stderr for each kernel
# launch and/or data transfer. When set to an integer value, the value is used as
# a bit mask to print information about:
#
# 1: kernel launches
#
# 2: data transfers
#
# 4: region entry/exit
#
# 8: wait operations or synchronizations with the device
#
# 16: device memory allocates and deallocates
6 changes: 6 additions & 0 deletions regtest/targetGPU/rt-basic-print/ctorsions.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! FIELDS time ct1 ct2 ct3 ct4.1 ct4.2 ct4.3
0.000000 0.3599 1.0000 0.4204 0.3599 1.0000 0.4204
0.050000 0.4072 0.9999 0.4266 0.4072 0.9999 0.4266
0.100000 0.4886 0.9999 0.2833 0.4886 0.9999 0.2833
0.150000 0.5689 0.9993 0.1439 0.5689 0.9993 0.1439
0.200000 0.6255 0.9995 0.0727 0.6255 0.9995 0.0727
6 changes: 6 additions & 0 deletions regtest/targetGPU/rt-basic-print/ctorsions2.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! FIELDS time ct1 ct2 ct3 ct5.1 ct5.2 ct5.3
0.000000 0.3599 1.0000 0.4204 0.3599 1.0000 0.4204
0.050000 0.4072 0.9999 0.4266 0.4072 0.9999 0.4266
0.100000 0.4886 0.9999 0.2833 0.4886 0.9999 0.2833
0.150000 0.5689 0.9993 0.1439 0.5689 0.9993 0.1439
0.200000 0.6255 0.9995 0.0727 0.6255 0.9995 0.0727
6 changes: 6 additions & 0 deletions regtest/targetGPU/rt-basic-print/dipoles.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! FIELDS time dip1 dip2 dip4.1 dip4.2
0.000000 1.6028 3.5572 1.6028 3.5572
0.050000 1.5983 3.5962 1.5983 3.5962
0.100000 1.6026 3.7048 1.6026 3.7048
0.150000 1.6162 3.7641 1.6162 3.7641
0.200000 1.6235 3.8092 1.6235 3.8092
6 changes: 6 additions & 0 deletions regtest/targetGPU/rt-basic-print/dists.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! FIELDS time d1 d2 d3 d4.1 d4.2 d4.3
0.000000 1.2626 1.0972 1.2240 1.2626 1.0972 1.2240
0.050000 1.3176 1.0588 1.2552 1.3176 1.0588 1.2552
0.100000 1.3934 1.0958 1.2768 1.3934 1.0958 1.2768
0.150000 1.4755 1.1628 1.2941 1.4755 1.1628 1.2941
0.200000 1.4908 1.2160 1.2968 1.4908 1.2160 1.2968
61 changes: 61 additions & 0 deletions regtest/targetGPU/rt-basic-print/plumed.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
d1: DISTANCE ATOMS=1,2
d2: DISTANCE ATOMS=3,4
d3: DISTANCE ATOMS=5,6
d4: DISTANCE ATOMS1=1,2 ATOMS2=3,4 ATOMS3=5,6 USEGPU
PRINT ARG=d1,d2,d3,d4 FILE=dists FMT=%8.4f

cd1: DISTANCE ATOMS=1,2 COMPONENTS
cd2: DISTANCE ATOMS=3,4 COMPONENTS
cd3: DISTANCE ATOMS=5,6 COMPONENTS
cd4: DISTANCE ATOMS1=1,2 ATOMS2=3,4 ATOMS3=5,6 COMPONENTS USEGPU
PRINT ARG=cd1.x,cd2.x,cd3.x,cd4.x,cd1.y,cd2.y,cd3.y,cd4.y,cd1.z,cd2.z,cd3.z,cd4.z FILE=cdists FMT=%8.4f

scd1: DISTANCE ATOMS=1,2 SCALED_COMPONENTS
scd2: DISTANCE ATOMS=3,4 SCALED_COMPONENTS
scd3: DISTANCE ATOMS=5,6 SCALED_COMPONENTS
scd4: DISTANCE ATOMS1=1,2 ATOMS2=3,4 ATOMS3=5,6 SCALED_COMPONENTS USEGPU
PRINT ARG=scd1.a,scd2.a,scd3.a,scd4.a,scd1.b,scd2.b,scd3.b,scd4.b,scd1.c,scd2.c,scd3.c,scd4.c FILE=scdists FMT=%8.4f

a1: ANGLE ATOMS=1,2,3
a2: ANGLE ATOMS=4,5,6,7
a3: ANGLE ATOMS=8,9,10
a4: ANGLE ATOMS1=1,2,3 ATOMS2=4,5,6,7 ATOMS3=8,9,10 USEGPU
PRINT ARG=a1,a2,a3,a4 FILE=angles FMT=%8.4f

t1: TORSION ATOMS=1,2,3,4
t2: TORSION VECTORA=5,6 AXIS=7,8 VECTORB=9,10
t3: TORSION ATOMS=11,12,13,14
t4: TORSION ATOMS1=1,2,3,4 VECTORA2=5,6 AXIS2=7,8 VECTORB2=9,10 ATOMS3=11,12,13,14 USEGPU
PRINT ARG=t1,t2,t3,t4 FILE=torsions FMT=%8.4f

ct1: TORSION ATOMS=1,2,3,4 COSINE
ct2: TORSION VECTORA=5,6 AXIS=7,8 VECTORB=9,10 COSINE
ct3: TORSION ATOMS=11,12,13,14 COSINE
ct4: TORSION ATOMS1=1,2,3,4 VECTORA2=5,6 AXIS2=7,8 VECTORB2=9,10 ATOMS3=11,12,13,14 COSINE USEGPU
PRINT ARG=ct1,ct2,ct3,ct4 FILE=ctorsions FMT=%8.4f

tt4: TORSION ATOMS1=1,2,3,4 VECTORA2=5,6 AXIS2=7,8 VECTORB2=9,10 ATOMS3=11,12,13,14 USEGPU
ct5: CUSTOM ARG=tt4 FUNC=cos(x) PERIODIC=NO
PRINT ARG=ct1,ct2,ct3,ct5 FILE=ctorsions2 FMT=%8.4f

p1: POSITION ATOM=1
p2: POSITION ATOM=3
p3: POSITION ATOM=5
p4: POSITION ATOM1=1 ATOM2=3 ATOM3=5 USEGPU
PRINT ARG=p1.x,p2.x,p3.x,p4.x,p1.y,p2.y,p3.y,p4.y,p1.z,p2.z,p3.z,p4.z FILE=pos FMT=%8.4f

sp1: POSITION ATOM=1 SCALED_COMPONENTS
sp2: POSITION ATOM=3 SCALED_COMPONENTS
sp3: POSITION ATOM=5 SCALED_COMPONENTS
sp4: POSITION ATOM1=1 ATOM2=3 ATOM3=5 SCALED_COMPONENTS USEGPU
PRINT ARG=sp1.a,sp2.a,sp3.a,sp4.a,sp1.b,sp2.b,sp3.b,sp4.b,sp1.c,sp2.c,sp3.c,sp4.c FILE=spos FMT=%8.4f

dip1: DIPOLE GROUP=1-6
dip2: DIPOLE GROUP=7-12
dip4: DIPOLE GROUP1=1-6 GROUP2=7-12 USEGPU
PRINT ARG=dip1,dip2,dip4 FILE=dipoles FMT=%8.4f

cdip1: DIPOLE GROUP=1-6 COMPONENTS
cdip2: DIPOLE GROUP=7-12 COMPONENTS
cdip4: DIPOLE GROUP1=1-6 GROUP2=7-12 COMPONENTS USEGPU
PRINT ARG=cdip1.x,cdip2.x,cdip4.x,cdip1.y,cdip2.y,cdip4.y,cdip1.z,cdip2.z,cdip4.z FILE=cdipoles FMT=%8.4f
6 changes: 6 additions & 0 deletions regtest/targetGPU/rt-basic-print/pos.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#! FIELDS time p1.x p2.x p3.x p4.x.1 p4.x.2 p4.x.3 p1.y p2.y p3.y p4.y.1 p4.y.2 p4.y.3 p1.z p2.z p3.z p4.z.1 p4.z.2 p4.z.3
0.000000 -0.0344 0.8323 -0.0019 -0.0344 0.8323 -0.0019 -0.0030 0.8489 0.0445 -0.0030 0.8489 0.0445 0.0090 0.0428 1.6216 0.0090 0.0428 1.6216
0.050000 -0.0551 0.8420 -0.0082 -0.0551 0.8420 -0.0082 -0.0033 0.8616 0.0885 -0.0033 0.8616 0.0885 0.0122 0.0793 1.5777 0.0122 0.0793 1.5777
0.100000 -0.0728 0.8579 -0.0086 -0.0728 0.8579 -0.0086 0.0172 0.8613 0.1559 0.0172 0.8613 0.1559 0.0094 0.0861 1.5568 0.0094 0.0861 1.5568
0.150000 -0.0874 0.8938 -0.0086 -0.0874 0.8938 -0.0086 0.0351 0.8548 0.2284 0.0351 0.8548 0.2284 0.0130 0.0685 1.5670 0.0130 0.0685 1.5670
0.200000 -0.0914 0.9332 -0.0138 -0.0914 0.9332 -0.0138 0.0528 0.8608 0.2562 0.0528 0.8608 0.2562 0.0408 0.0482 1.5913 0.0408 0.0482 1.5913
30 changes: 30 additions & 0 deletions regtest/targetGPU/rt-basic-print/scdists.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#! FIELDS time scd1.a scd2.a scd3.a scd4.a.1 scd4.a.2 scd4.a.3 scd1.b scd2.b scd3.b scd4.b.1 scd4.b.2 scd4.b.3 scd1.c scd2.c scd3.c scd4.c.1 scd4.c.2 scd4.c.3
#! SET min_scd1.a -0.5
#! SET max_scd1.a +0.5
#! SET min_scd2.a -0.5
#! SET max_scd2.a +0.5
#! SET min_scd3.a -0.5
#! SET max_scd3.a +0.5
#! SET min_scd4.a -0.5
#! SET max_scd4.a +0.5
#! SET min_scd1.b -0.5
#! SET max_scd1.b +0.5
#! SET min_scd2.b -0.5
#! SET max_scd2.b +0.5
#! SET min_scd3.b -0.5
#! SET max_scd3.b +0.5
#! SET min_scd4.b -0.5
#! SET max_scd4.b +0.5
#! SET min_scd1.c -0.5
#! SET max_scd1.c +0.5
#! SET min_scd2.c -0.5
#! SET max_scd2.c +0.5
#! SET min_scd3.c -0.5
#! SET max_scd3.c +0.5
#! SET min_scd4.c -0.5
#! SET max_scd4.c +0.5
0.000000 0.1879 -0.1582 0.1712 0.1879 -0.1582 0.1712 -0.0024 0.0093 -0.0007 -0.0024 0.0093 -0.0007 0.1657 0.1494 0.1723 0.1657 0.1494 0.1723
0.050000 0.2035 -0.1600 0.1728 0.2035 -0.1600 0.1728 -0.0016 0.0110 -0.0016 -0.0016 0.0110 -0.0016 0.1642 0.1358 0.1794 0.1642 0.1358 0.1794
0.100000 0.2190 -0.1726 0.1729 0.2190 -0.1726 0.1729 -0.0017 0.0050 -0.0076 -0.0017 0.0050 -0.0076 0.1688 0.1322 0.1851 0.1688 0.1322 0.1851
0.150000 0.2343 -0.1890 0.1748 0.2343 -0.1890 0.1748 0.0010 0.0009 -0.0139 0.0010 0.0009 -0.0139 0.1756 0.1324 0.1877 0.1756 0.1324 0.1877
0.200000 0.2412 -0.2034 0.1783 0.2412 -0.2034 0.1783 0.0007 0.0030 -0.0088 0.0007 0.0030 -0.0088 0.1713 0.1298 0.1854 0.1713 0.1298 0.1854
30 changes: 30 additions & 0 deletions regtest/targetGPU/rt-basic-print/spos.reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#! FIELDS time sp1.a sp2.a sp3.a sp4.a.1 sp4.a.2 sp4.a.3 sp1.b sp2.b sp3.b sp4.b.1 sp4.b.2 sp4.b.3 sp1.c sp2.c sp3.c sp4.c.1 sp4.c.2 sp4.c.3
#! SET min_sp1.a -0.5
#! SET max_sp1.a +0.5
#! SET min_sp2.a -0.5
#! SET max_sp2.a +0.5
#! SET min_sp3.a -0.5
#! SET max_sp3.a +0.5
#! SET min_sp4.a -0.5
#! SET max_sp4.a +0.5
#! SET min_sp1.b -0.5
#! SET max_sp1.b +0.5
#! SET min_sp2.b -0.5
#! SET max_sp2.b +0.5
#! SET min_sp3.b -0.5
#! SET max_sp3.b +0.5
#! SET min_sp4.b -0.5
#! SET max_sp4.b +0.5
#! SET min_sp1.c -0.5
#! SET max_sp1.c +0.5
#! SET min_sp2.c -0.5
#! SET max_sp2.c +0.5
#! SET min_sp3.c -0.5
#! SET max_sp3.c +0.5
#! SET min_sp4.c -0.5
#! SET max_sp4.c +0.5
0.000000 -0.0068 0.1652 -0.0004 -0.0068 0.1652 -0.0004 -0.0006 0.1685 0.0088 -0.0006 0.1685 0.0088 0.0018 0.0085 0.3218 0.0018 0.0085 0.3218
0.050000 -0.0109 0.1671 -0.0016 -0.0109 0.1671 -0.0016 -0.0007 0.1710 0.0176 -0.0007 0.1710 0.0176 0.0024 0.0157 0.3131 0.0024 0.0157 0.3131
0.100000 -0.0145 0.1703 -0.0017 -0.0145 0.1703 -0.0017 0.0034 0.1709 0.0309 0.0034 0.1709 0.0309 0.0019 0.0171 0.3090 0.0019 0.0171 0.3090
0.150000 -0.0173 0.1774 -0.0017 -0.0173 0.1774 -0.0017 0.0070 0.1696 0.0453 0.0070 0.1696 0.0453 0.0026 0.0136 0.3110 0.0026 0.0136 0.3110
0.200000 -0.0181 0.1852 -0.0027 -0.0181 0.1852 -0.0027 0.0105 0.1708 0.0509 0.0105 0.1708 0.0509 0.0081 0.0096 0.3158 0.0081 0.0096 0.3158
Loading

0 comments on commit 61fce4f

Please sign in to comment.