Skip to content

Commit

Permalink
No longer passing pointer to action in calculateCV as first step to g…
Browse files Browse the repository at this point in the history
…etting this command running on GPU
  • Loading branch information
Gareth Aneurin Tribello authored and Gareth Aneurin Tribello committed Feb 5, 2025
1 parent 2986098 commit baaa901
Show file tree
Hide file tree
Showing 11 changed files with 66 additions and 80 deletions.
8 changes: 3 additions & 5 deletions src/colvar/Angle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,7 @@ class Angle : public Colvar {
static void registerKeywords( Keywords& keys );
static void parseAtomList( const int& num, std::vector<AtomNumber>& t, ActionAtomistic* aa );
static unsigned getModeAndSetupValues( ActionWithValue* av );
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa );
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial );
};

typedef ColvarShortcut<Angle> AngleShortcut;
Expand Down Expand Up @@ -168,14 +167,13 @@ Angle::Angle(const ActionOptions&ao):
void Angle::calculate() {

if(pbc) makeWhole();
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial );
setValue( value[0] );
for(unsigned i=0; i<derivs[0].size(); ++i) setAtomsDerivatives( i, derivs[0][i] );
setBoxDerivatives( virial[0] );
}

void Angle::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa ) {
void Angle::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial ) {
Vector dij,dik;
dij=delta(cvin.pos[2],cvin.pos[3]);
dik=delta(cvin.pos[1],cvin.pos[0]);
Expand Down
8 changes: 3 additions & 5 deletions src/colvar/DihedralCorrelation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ class DihedralCorrelation : public Colvar {
static void parseAtomList( const int& num, std::vector<AtomNumber>& t, ActionAtomistic* aa );
static unsigned getModeAndSetupValues( ActionWithValue* av );
void calculate() override;
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa );
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial );
};

typedef ColvarShortcut<DihedralCorrelation> DihedralCorrelationShortcut;
Expand Down Expand Up @@ -125,14 +124,13 @@ unsigned DihedralCorrelation::getModeAndSetupValues( ActionWithValue* av ) {
void DihedralCorrelation::calculate() {

if(pbc) makeWhole();
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial );
setValue( value[0] );
for(unsigned i=0; i<derivs[0].size(); ++i) setAtomsDerivatives( i, derivs[0][i] );
setBoxDerivatives( virial[0] );
}

void DihedralCorrelation::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa ) {
void DihedralCorrelation::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial ) {
const Vector d10=delta(cvin.pos[1],cvin.pos[0]);
const Vector d11=delta(cvin.pos[2],cvin.pos[1]);
const Vector d12=delta(cvin.pos[3],cvin.pos[2]);
Expand Down
12 changes: 5 additions & 7 deletions src/colvar/Dipole.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,7 @@ class Dipole : public Colvar {
static unsigned getModeAndSetupValues( ActionWithValue* av );
void calculate() override;
static void registerKeywords(Keywords& keys);
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa );
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial );
};

typedef ColvarShortcut<Dipole> DipoleShortcut;
Expand All @@ -122,7 +121,7 @@ Dipole::Dipole(const ActionOptions&ao):
derivs(1),
virial(1)
{
parseAtomList(-1,ga_lista,this);
parseAtomList(-1,ga_lista,this);
components=(getModeAndSetupValues(this)==1);
if( components ) {
value.resize(3); derivs.resize(3); virial.resize(3);
Expand Down Expand Up @@ -171,12 +170,12 @@ void Dipole::calculate()
unsigned N=getNumberOfAtoms();

if(!components) {
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial );
for(unsigned i=0; i<N; i++) setAtomsDerivatives(i,derivs[0][i]);
setBoxDerivatives(virial[0]);
setValue(value[0]);
} else {
calculateCV( ColvarInput::createColvarInput( 1, getPositions(), this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 1, getPositions(), this ), value, derivs, virial );
for(unsigned i=0; i<N; i++) {
setAtomsDerivatives(valuex,i,derivs[0][i]);
setAtomsDerivatives(valuey,i,derivs[1][i]);
Expand All @@ -191,8 +190,7 @@ void Dipole::calculate()
}
}

void Dipole::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa ) {
void Dipole::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial ) {
unsigned N=cvin.pos.size(); double ctot=0.;
for(unsigned i=0; i<N; ++i) ctot += cvin.charges[i];
ctot/=(double)N;
Expand Down
26 changes: 12 additions & 14 deletions src/colvar/Distance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,7 @@ class Distance : public Colvar {
static unsigned getModeAndSetupValues( ActionWithValue* av );
// active methods:
void calculate() override;
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa );
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial );
};

typedef ColvarShortcut<Distance> DistanceShortcut;
Expand Down Expand Up @@ -226,7 +225,7 @@ void Distance::calculate() {
if(pbc) makeWhole();

if( components ) {
calculateCV( ColvarInput::createColvarInput( 1, getPositions(), this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 1, getPositions(), this ), value, derivs, virial );
Value* valuex=getPntrToComponent("x");
Value* valuey=getPntrToComponent("y");
Value* valuez=getPntrToComponent("z");
Expand All @@ -243,7 +242,7 @@ void Distance::calculate() {
setBoxDerivatives(valuez,virial[2]);
valuez->set(value[2]);
} else if( scaled_components ) {
calculateCV( ColvarInput::createColvarInput( 2, getPositions(), this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 2, getPositions(), this ), value, derivs, virial );

Value* valuea=getPntrToComponent("a");
Value* valueb=getPntrToComponent("b");
Expand All @@ -255,15 +254,14 @@ void Distance::calculate() {
for(unsigned i=0; i<2; ++i) setAtomsDerivatives(valuec,i,derivs[2][i] );
valuec->set(value[2]);
} else {
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial );
for(unsigned i=0; i<2; ++i) setAtomsDerivatives(i,derivs[0][i] );
setBoxDerivatives(virial[0]);
setValue (value[0]);
}
}

void Distance::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa ) {
void Distance::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial ) {
Vector distance=delta(cvin.pos[0],cvin.pos[1]);
const double value=distance.modulo();
const double invvalue=1.0/value;
Expand All @@ -282,15 +280,15 @@ void Distance::calculateCV( const ColvarInput& cvin, std::vector<double>& vals,
vals[2] = distance[2];
setBoxDerivativesNoPbc( cvin.pos, derivs, virial );
} else if(cvin.mode==2) {
Vector d=aa->getPbc().realToScaled(distance);
derivs[0][0] = matmul(aa->getPbc().getInvBox(),Vector(-1,0,0));
derivs[0][1] = matmul(aa->getPbc().getInvBox(),Vector(+1,0,0));
Vector d=cvin.pbc.realToScaled(distance);
derivs[0][0] = matmul(cvin.pbc.getInvBox(),Vector(-1,0,0));
derivs[0][1] = matmul(cvin.pbc.getInvBox(),Vector(+1,0,0));
vals[0] = Tools::pbc(d[0]);
derivs[1][0] = matmul(aa->getPbc().getInvBox(),Vector(0,-1,0));
derivs[1][1] = matmul(aa->getPbc().getInvBox(),Vector(0,+1,0));
derivs[1][0] = matmul(cvin.pbc.getInvBox(),Vector(0,-1,0));
derivs[1][1] = matmul(cvin.pbc.getInvBox(),Vector(0,+1,0));
vals[1] = Tools::pbc(d[1]);
derivs[2][0] = matmul(aa->getPbc().getInvBox(),Vector(0,0,-1));
derivs[2][1] = matmul(aa->getPbc().getInvBox(),Vector(0,0,+1));
derivs[2][0] = matmul(cvin.pbc.getInvBox(),Vector(0,0,-1));
derivs[2][1] = matmul(cvin.pbc.getInvBox(),Vector(0,0,+1));
vals[2] = Tools::pbc(d[2]);
} else {
derivs[0][0] = -invvalue*distance;
Expand Down
13 changes: 7 additions & 6 deletions src/colvar/MultiColvarTemplate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,17 @@
namespace PLMD {
namespace colvar {

ColvarInput::ColvarInput( const unsigned& m, const std::vector<Vector>& p, const std::vector<double>& w, const std::vector<double>& q ) :
mode(m),
pos(p),
mass(w),
charges(q)
ColvarInput::ColvarInput( const unsigned& m, const std::vector<Vector>& p, const std::vector<double>& w, const std::vector<double>& q, const Pbc& box ) :
mode(m),
pbc(box),
pos(p),
mass(w),
charges(q)
{
}

ColvarInput ColvarInput::createColvarInput( const unsigned& m, const std::vector<Vector>& p, const Colvar* colv ) {
return ColvarInput( m, p, colv->getMasses(), colv->getCharges(true) );
return ColvarInput( m, p, colv->getMasses(), colv->getCharges(true), colv->getPbc() );
}

}
Expand Down
5 changes: 3 additions & 2 deletions src/colvar/MultiColvarTemplate.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,11 @@ namespace colvar {
class ColvarInput {
public:
unsigned mode;
const Pbc& pbc;
const std::vector<Vector>& pos;
const std::vector<double>& mass;
const std::vector<double>& charges;
ColvarInput( const unsigned& m, const std::vector<Vector>& p, const std::vector<double>& w, const std::vector<double>& q );
ColvarInput( const unsigned& m, const std::vector<Vector>& p, const std::vector<double>& w, const std::vector<double>& q, const Pbc& box );
static ColvarInput createColvarInput( const unsigned& m, const std::vector<Vector>& p, const Colvar* colv );
};

Expand Down Expand Up @@ -177,7 +178,7 @@ void MultiColvarTemplate<T>::performTask( const unsigned& task_index, MultiValue
std::vector<Tensor> & virial( myvals.getFirstAtomVirialVector() );
std::vector<std::vector<Vector> > & derivs( myvals.getFirstAtomDerivativeVector() );
// Calculate the CVs using the method in the Colvar
T::calculateCV( ColvarInput(mode, fpositions, mass, charge), values, derivs, virial, this );
T::calculateCV( ColvarInput(mode, fpositions, mass, charge, getPbc() ), values, derivs, virial );
for(unsigned i=0; i<values.size(); ++i) myvals.setValue( i, values[i] );
// Finish if there are no derivatives
if( doNotCalculateDerivatives() ) return;
Expand Down
8 changes: 3 additions & 5 deletions src/colvar/Plane.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,7 @@ class Plane : public Colvar {
static unsigned getModeAndSetupValues( ActionWithValue* av );
// active methods:
void calculate() override;
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa );
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial );
};

typedef ColvarShortcut<Plane> PlaneShortcut;
Expand Down Expand Up @@ -134,14 +133,13 @@ Plane::Plane(const ActionOptions&ao):
void Plane::calculate() {

if(pbc) makeWhole();
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial );
setValue( value[0] );
for(unsigned i=0; i<derivs[0].size(); ++i) setAtomsDerivatives( i, derivs[0][i] );
setBoxDerivatives( virial[0] );
}

void Plane::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa ) {
void Plane::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial ) {
Vector d1=delta( cvin.pos[1], cvin.pos[0] );
Vector d2=delta( cvin.pos[2], cvin.pos[3] );
Vector cp = crossProduct( d1, d2 );
Expand Down
18 changes: 8 additions & 10 deletions src/colvar/Position.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ class Position : public Colvar {
static unsigned getModeAndSetupValues( ActionWithValue* av );
// active methods:
void calculate() override;
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa );
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial );
};

typedef ColvarShortcut<Position> PositionShortcut;
Expand Down Expand Up @@ -184,7 +183,7 @@ void Position::calculate() {
}

if(scaled_components) {
calculateCV( ColvarInput::createColvarInput( 1, distance, this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 1, distance, this ), value, derivs, virial );
Value* valuea=getPntrToComponent("a");
Value* valueb=getPntrToComponent("b");
Value* valuec=getPntrToComponent("c");
Expand All @@ -195,7 +194,7 @@ void Position::calculate() {
setAtomsDerivatives (valuec,0,derivs[2][0]);
valuec->set(value[2]);
} else {
calculateCV( ColvarInput::createColvarInput( 0, distance, this ), value, derivs, virial, this );
calculateCV( ColvarInput::createColvarInput( 0, distance, this ), value, derivs, virial );
Value* valuex=getPntrToComponent("x");
Value* valuey=getPntrToComponent("y");
Value* valuez=getPntrToComponent("z");
Expand All @@ -214,14 +213,13 @@ void Position::calculate() {
}
}

void Position::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa ) {
void Position::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial ) {
if( cvin.mode==1 ) {
Vector d=aa->getPbc().realToScaled(cvin.pos[0]);
Vector d=cvin.pbc.realToScaled(cvin.pos[0]);
vals[0]=Tools::pbc(d[0]); vals[1]=Tools::pbc(d[1]); vals[2]=Tools::pbc(d[2]);
derivs[0][0]=matmul(aa->getPbc().getInvBox(),Vector(+1,0,0));
derivs[1][0]=matmul(aa->getPbc().getInvBox(),Vector(0,+1,0));
derivs[2][0]=matmul(aa->getPbc().getInvBox(),Vector(0,0,+1));
derivs[0][0]=matmul(cvin.pbc.getInvBox(),Vector(+1,0,0));
derivs[1][0]=matmul(cvin.pbc.getInvBox(),Vector(0,+1,0));
derivs[2][0]=matmul(cvin.pbc.getInvBox(),Vector(0,0,+1));
} else {
for(unsigned i=0; i<3; ++i) vals[i]=cvin.pos[0][i];
derivs[0][0]=Vector(+1,0,0); derivs[1][0]=Vector(0,+1,0); derivs[2][0]=Vector(0,0,+1);
Expand Down
30 changes: 15 additions & 15 deletions src/colvar/SelectMassCharge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,9 @@ Get the mass of one or multiple atoms
namespace PLMD {
namespace colvar {

class SelectMassCharge :
public ActionAtomistic,
public ActionWithValue {
class SelectMassCharge :
public ActionAtomistic,
public ActionWithValue {
public:
static void registerKeywords( Keywords& keys );
explicit SelectMassCharge(const ActionOptions&);
Expand Down Expand Up @@ -112,13 +112,13 @@ SelectMassCharge::SelectMassCharge(const ActionOptions&ao):
std::vector<AtomNumber> atoms; parseAtomList("ATOMS",atoms);
log.printf(" getting %s of atoms : ", getName().c_str() );
for(unsigned i=0; i<atoms.size(); ++i) {
std::pair<std::size_t,std::size_t> p = getValueIndices( atoms[i] );
if( getName()=="MASS" && !masv[p.first]->isConstant() ) error("cannot deal with non-constant " + getName() + " values");
if( getName()=="CHARGE" && !chargev[p.first]->isConstant() ) error("cannot deal with non-constant " + getName() + " values");
log.printf("%d ", atoms[i].serial() );
std::pair<std::size_t,std::size_t> p = getValueIndices( atoms[i] );
if( getName()=="MASS" && !masv[p.first]->isConstant() ) error("cannot deal with non-constant " + getName() + " values");
if( getName()=="CHARGE" && !chargev[p.first]->isConstant() ) error("cannot deal with non-constant " + getName() + " values");
log.printf("%d ", atoms[i].serial() );
}
log.printf("\n"); requestAtoms(atoms);
std::vector<unsigned> shape(1);
std::vector<unsigned> shape(1);
if(atoms.size()==1) shape.resize(0);
else shape[0] = atoms.size();
addValue( shape ); setNotPeriodic();
Expand All @@ -127,13 +127,13 @@ SelectMassCharge::SelectMassCharge(const ActionOptions&ao):

// calculator
void SelectMassCharge::calculate() {
Value* myval = getPntrToComponent(0);
if( getName()=="CHARGES" ) {
if( !chargesWereSet ) error("cannot determine charges are charges were not set");
for(unsigned i=0; i<getNumberOfAtoms(); ++i) myval->set( i, getCharge(i) );
} else {
for(unsigned i=0; i<getNumberOfAtoms(); ++i) myval->set( i, getMass(i) );
}
Value* myval = getPntrToComponent(0);
if( getName()=="CHARGES" ) {
if( !chargesWereSet ) error("cannot determine charges are charges were not set");
for(unsigned i=0; i<getNumberOfAtoms(); ++i) myval->set( i, getCharge(i) );
} else {
for(unsigned i=0; i<getNumberOfAtoms(); ++i) myval->set( i, getMass(i) );
}
}

}
Expand Down
10 changes: 4 additions & 6 deletions src/colvar/Torsion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,7 @@ class Torsion : public Colvar {
static unsigned getModeAndSetupValues( ActionWithValue* av );
// active methods:
void calculate() override;
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa );
static void calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial );
static void registerKeywords(Keywords& keys);
};

Expand Down Expand Up @@ -224,14 +223,13 @@ unsigned Torsion::getModeAndSetupValues( ActionWithValue* av ) {
// calculator
void Torsion::calculate() {
if(pbc) makeWhole();
if(do_cosine) calculateCV( ColvarInput::createColvarInput( 1, getPositions(), this ), value, derivs, virial, this );
else calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial, this );
if(do_cosine) calculateCV( ColvarInput::createColvarInput( 1, getPositions(), this ), value, derivs, virial );
else calculateCV( ColvarInput::createColvarInput( 0, getPositions(), this ), value, derivs, virial );
for(unsigned i=0; i<6; ++i) setAtomsDerivatives(i,derivs[0][i] );
setValue(value[0]); setBoxDerivatives( virial[0] );
}

void Torsion::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs,
std::vector<Tensor>& virial, const ActionAtomistic* aa ) {
void Torsion::calculateCV( const ColvarInput& cvin, std::vector<double>& vals, std::vector<std::vector<Vector> >& derivs, std::vector<Tensor>& virial ) {
Vector d0=delta(cvin.pos[1],cvin.pos[0]);
Vector d1=delta(cvin.pos[3],cvin.pos[2]);
Vector d2=delta(cvin.pos[5],cvin.pos[4]);
Expand Down
Loading

1 comment on commit baaa901

@PlumedBot
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found broken examples in automatic/ANGLES.tmp
Found broken examples in automatic/ANN.tmp
Found broken examples in automatic/CAVITY.tmp
Found broken examples in automatic/CLASSICAL_MDS.tmp
Found broken examples in automatic/CLUSTER_DIAMETER.tmp
Found broken examples in automatic/CLUSTER_DISTRIBUTION.tmp
Found broken examples in automatic/CLUSTER_PROPERTIES.tmp
Found broken examples in automatic/CONSTANT.tmp
Found broken examples in automatic/CONTACT_MATRIX.tmp
Found broken examples in automatic/CONTACT_MATRIX_PROPER.tmp
Found broken examples in automatic/COORDINATIONNUMBER.tmp
Found broken examples in automatic/DFSCLUSTERING.tmp
Found broken examples in automatic/DISTANCE_FROM_CONTOUR.tmp
Found broken examples in automatic/EDS.tmp
Found broken examples in automatic/EMMI.tmp
Found broken examples in automatic/ENVIRONMENTSIMILARITY.tmp
Found broken examples in automatic/FIND_CONTOUR.tmp
Found broken examples in automatic/FIND_CONTOUR_SURFACE.tmp
Found broken examples in automatic/FIND_SPHERICAL_CONTOUR.tmp
Found broken examples in automatic/FOURIER_TRANSFORM.tmp
Found broken examples in automatic/FUNCPATHGENERAL.tmp
Found broken examples in automatic/FUNCPATHMSD.tmp
Found broken examples in automatic/FUNNEL.tmp
Found broken examples in automatic/FUNNEL_PS.tmp
Found broken examples in automatic/GHBFIX.tmp
Found broken examples in automatic/GPROPERTYMAP.tmp
Found broken examples in automatic/HBOND_MATRIX.tmp
Found broken examples in automatic/INCLUDE.tmp
Found broken examples in automatic/INCYLINDER.tmp
Found broken examples in automatic/INENVELOPE.tmp
Found broken examples in automatic/INTERPOLATE_GRID.tmp
Found broken examples in automatic/LOCAL_AVERAGE.tmp
Found broken examples in automatic/MAZE_OPTIMIZER_BIAS.tmp
Found broken examples in automatic/MAZE_RANDOM_ACCELERATION_MD.tmp
Found broken examples in automatic/MAZE_SIMULATED_ANNEALING.tmp
Found broken examples in automatic/MAZE_STEERED_MD.tmp
Found broken examples in automatic/METATENSOR.tmp
Found broken examples in automatic/MULTICOLVARDENS.tmp
Found broken examples in automatic/OUTPUT_CLUSTER.tmp
Found broken examples in automatic/PAMM.tmp
Found broken examples in automatic/PCA.tmp
Found broken examples in automatic/PCAVARS.tmp
Found broken examples in automatic/PIV.tmp
Found broken examples in automatic/PLUMED.tmp
Found broken examples in automatic/PYCVINTERFACE.tmp
Found broken examples in automatic/PYTHONFUNCTION.tmp
Found broken examples in automatic/Q3.tmp
Found broken examples in automatic/Q4.tmp
Found broken examples in automatic/Q6.tmp
Found broken examples in automatic/QUATERNION.tmp
Found broken examples in automatic/SIZESHAPE_POSITION_LINEAR_PROJ.tmp
Found broken examples in automatic/SIZESHAPE_POSITION_MAHA_DIST.tmp
Found broken examples in automatic/SPRINT.tmp
Found broken examples in automatic/TETRAHEDRALPORE.tmp
Found broken examples in automatic/TORSIONS.tmp
Found broken examples in automatic/WHAM_WEIGHTS.tmp
Found broken examples in AnalysisPP.md
Found broken examples in CollectiveVariablesPP.md
Found broken examples in MiscelaneousPP.md

Please sign in to comment.