Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
d95b90b9
"vscode:/vscode.git/clone" did not exist on "84b5dc78050a3842d64364babf38901601004c48"
Commit
d95b90b9
authored
Feb 23, 2015
by
peastman
Browse files
Cleaned up formatting in AMOEBA code
parent
a568bb12
Changes
77
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
169 additions
and
169 deletions
+169
-169
libraries/validate/include/ValidateOpenMM.h
libraries/validate/include/ValidateOpenMM.h
+2
-2
libraries/validate/include/ValidateOpenMMForces.h
libraries/validate/include/ValidateOpenMMForces.h
+36
-36
libraries/validate/src/ValidateOpenMM.cpp
libraries/validate/src/ValidateOpenMM.cpp
+2
-2
libraries/validate/src/ValidateOpenMMForces.cpp
libraries/validate/src/ValidateOpenMMForces.cpp
+12
-12
plugins/amoeba/openmmapi/include/openmm/AmoebaAngleForce.h
plugins/amoeba/openmmapi/include/openmm/AmoebaAngleForce.h
+8
-8
plugins/amoeba/openmmapi/include/openmm/AmoebaBondForce.h
plugins/amoeba/openmmapi/include/openmm/AmoebaBondForce.h
+6
-6
plugins/amoeba/openmmapi/include/openmm/AmoebaGeneralizedKirkwoodForce.h
...openmmapi/include/openmm/AmoebaGeneralizedKirkwoodForce.h
+1
-1
plugins/amoeba/openmmapi/include/openmm/AmoebaInPlaneAngleForce.h
...amoeba/openmmapi/include/openmm/AmoebaInPlaneAngleForce.h
+8
-8
plugins/amoeba/openmmapi/include/openmm/AmoebaStretchBendForce.h
.../amoeba/openmmapi/include/openmm/AmoebaStretchBendForce.h
+1
-1
plugins/amoeba/openmmapi/include/openmm/amoebaKernels.h
plugins/amoeba/openmmapi/include/openmm/amoebaKernels.h
+3
-3
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaMultipoleForceImpl.h
...nmmapi/include/openmm/internal/AmoebaMultipoleForceImpl.h
+7
-7
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaTorsionTorsionForceImpl.h
...i/include/openmm/internal/AmoebaTorsionTorsionForceImpl.h
+1
-1
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaWcaDispersionForceImpl.h
...pi/include/openmm/internal/AmoebaWcaDispersionForceImpl.h
+2
-2
plugins/amoeba/openmmapi/src/AmoebaAngleForce.cpp
plugins/amoeba/openmmapi/src/AmoebaAngleForce.cpp
+6
-6
plugins/amoeba/openmmapi/src/AmoebaBondForce.cpp
plugins/amoeba/openmmapi/src/AmoebaBondForce.cpp
+5
-5
plugins/amoeba/openmmapi/src/AmoebaGeneralizedKirkwoodForce.cpp
...s/amoeba/openmmapi/src/AmoebaGeneralizedKirkwoodForce.cpp
+4
-4
plugins/amoeba/openmmapi/src/AmoebaInPlaneAngleForce.cpp
plugins/amoeba/openmmapi/src/AmoebaInPlaneAngleForce.cpp
+8
-8
plugins/amoeba/openmmapi/src/AmoebaMultipoleForce.cpp
plugins/amoeba/openmmapi/src/AmoebaMultipoleForce.cpp
+28
-28
plugins/amoeba/openmmapi/src/AmoebaMultipoleForceImpl.cpp
plugins/amoeba/openmmapi/src/AmoebaMultipoleForceImpl.cpp
+24
-24
plugins/amoeba/openmmapi/src/AmoebaOutOfPlaneBendForce.cpp
plugins/amoeba/openmmapi/src/AmoebaOutOfPlaneBendForce.cpp
+5
-5
No files found.
libraries/validate/include/ValidateOpenMM.h
View file @
d95b90b9
...
...
@@ -83,7 +83,7 @@ typedef StringStringVectorMap::const_iterator StringStringVectorMapCI;
class
ValidateOpenMM
{
public:
ValidateOpenMM
(
void
);
ValidateOpenMM
();
~
ValidateOpenMM
();
// force names
...
...
@@ -166,7 +166,7 @@ public:
* @return log
*
*/
FILE
*
getLog
(
)
const
;
FILE
*
getLog
()
const
;
/**
*
...
...
libraries/validate/include/ValidateOpenMMForces.h
View file @
d95b90b9
...
...
@@ -41,7 +41,7 @@ typedef MapIntInt::const_iterator MapIntIntCI;
class
ForceValidationResult
{
public:
ForceValidationResult
(
const
Context
&
context1
,
const
Context
&
context2
,
StringUIntMap
&
forceNamesMap
);
ForceValidationResult
(
const
Context
&
context1
,
const
Context
&
context2
,
StringUIntMap
&
forceNamesMap
);
~
ForceValidationResult
();
/**
...
...
@@ -51,7 +51,7 @@ public:
*
* @throws OpenMMException if energyIndex is not 0 or 1
*/
double
getPotentialEnergy
(
int
energyIndex
)
const
;
double
getPotentialEnergy
(
int
energyIndex
)
const
;
/**
* Get array of forces at specified platform index (0 || 1)
...
...
@@ -60,7 +60,7 @@ public:
*
* @throws OpenMMException if forceIndex is not 0 or 1
*/
std
::
vector
<
double
>
getForceNorms
(
int
forceIndex
)
const
;
std
::
vector
<
double
>
getForceNorms
(
int
forceIndex
)
const
;
/**
* Get array of forces at platform index (0 || 1)
...
...
@@ -69,7 +69,7 @@ public:
*
* @throws OpenMMException if forceIndex is not 0 or 1
*/
std
::
vector
<
Vec3
>
getForces
(
int
forceIndex
)
const
;
std
::
vector
<
Vec3
>
getForces
(
int
forceIndex
)
const
;
/**
* Get maximum delta in force norm
...
...
@@ -78,7 +78,7 @@ public:
*
* @return max delta in norm of forces
*/
double
getMaxDeltaForceNorm
(
int
*
maxIndex
=
NULL
)
const
;
double
getMaxDeltaForceNorm
(
int
*
maxIndex
=
NULL
)
const
;
/**
* Get maximum relative delta in force norm
...
...
@@ -87,7 +87,7 @@ public:
*
* @return max relative delta in norm of forces
*/
double
getMaxRelativeDeltaForceNorm
(
int
*
maxIndex
=
NULL
)
const
;
double
getMaxRelativeDeltaForceNorm
(
int
*
maxIndex
=
NULL
)
const
;
/**
* Get maximum dot product between forces
...
...
@@ -96,7 +96,7 @@ public:
*
* @return max dot product between forces
*/
double
getMaxDotProduct
(
int
*
maxIndex
=
NULL
)
const
;
double
getMaxDotProduct
(
int
*
maxIndex
=
NULL
)
const
;
/**
* Get name of force associated w/ computed results
...
...
@@ -104,7 +104,7 @@ public:
* @return force name(s); if more than one force active in computation,
* then names are concatenated and separated by '::' (e.g., 'NB_FORCE::GBSA_OBC_FORCE')
*/
std
::
string
getForceName
(
void
)
const
;
std
::
string
getForceName
()
const
;
/**
* Get platform name
...
...
@@ -115,7 +115,7 @@ public:
*
* @throws OpenMMException if index is not 0 or 1
*/
std
::
string
getPlatformName
(
int
index
)
const
;
std
::
string
getPlatformName
(
int
index
)
const
;
/**
* Register index of two entries that differ by a specified tolerance
...
...
@@ -123,46 +123,46 @@ public:
* @param index inconsistent index
*
*/
void
registerInconsistentForceIndex
(
int
index
,
int
value
=
1
);
void
registerInconsistentForceIndex
(
int
index
,
int
value
=
1
);
/**
* Clear list of entries that differ by a specified tolerance
*
*/
void
clearInconsistentForceIndexList
(
void
);
void
clearInconsistentForceIndexList
();
/**
* Get list of entries that differ by a specified tolerance
*
*/
void
getInconsistentForceIndexList
(
std
::
vector
<
int
>&
inconsistentIndices
)
const
;
void
getInconsistentForceIndexList
(
std
::
vector
<
int
>&
inconsistentIndices
)
const
;
/**
* Get number of entries in inconsistent index list
*
*/
int
getNumberOfInconsistentForceEntries
(
void
)
const
;
int
getNumberOfInconsistentForceEntries
()
const
;
/**
* Return true if nans were detected
*
* @return true if nans were detected
*/
int
nansDetected
(
void
)
const
;
int
nansDetected
()
const
;
/**
* Determine if force norms are valid
*
* @param tolerance tolerance
*/
void
compareForceNorms
(
double
tolerance
);
void
compareForceNorms
(
double
tolerance
);
/**
* Determine if forces are valid
*
* @param tolerance tolerance
*/
void
compareForces
(
double
tolerance
);
void
compareForces
(
double
tolerance
);
private:
...
...
@@ -193,13 +193,13 @@ private:
* Calculate norms of vectors
*
*/
void
_calculateNorms
(
void
);
void
_calculateNorms
();
/**
* Calculate norms of specified vector
*
*/
void
_calculateNormOfForceVector
(
int
forceIndex
);
void
_calculateNormOfForceVector
(
int
forceIndex
);
// stat indices
...
...
@@ -216,7 +216,7 @@ private:
* Find vector stats
*
*/
void
_findStatsForDouble
(
const
std
::
vector
<
double
>&
array
,
std
::
vector
<
double
>&
statVector
)
const
;
void
_findStatsForDouble
(
const
std
::
vector
<
double
>&
array
,
std
::
vector
<
double
>&
statVector
)
const
;
};
// Class used to compare forces/potential energies on two platforms
...
...
@@ -224,7 +224,7 @@ private:
class
ValidateOpenMMForces
:
public
ValidateOpenMM
{
public:
OPENMM_VALIDATE_EXPORT
ValidateOpenMMForces
(
void
);
OPENMM_VALIDATE_EXPORT
ValidateOpenMMForces
();
OPENMM_VALIDATE_EXPORT
~
ValidateOpenMMForces
();
/**
...
...
@@ -236,7 +236,7 @@ public:
*
* @return number of inconsistent entries
*/
int
OPENMM_VALIDATE_EXPORT
compareWithReferencePlatform
(
Context
&
context
,
std
::
string
*
summaryString
=
NULL
);
int
OPENMM_VALIDATE_EXPORT
compareWithReferencePlatform
(
Context
&
context
,
std
::
string
*
summaryString
=
NULL
);
/**
* Validate force/energy by comparing the results between the forces/energies computed on two different platforms
...
...
@@ -250,7 +250,7 @@ public:
* on the two input platforms
*/
ForceValidationResult
*
compareForce
(
Context
&
context
,
std
::
vector
<
int
>&
compareForces
,
Platform
&
platform1
,
Platform
&
platform2
)
const
;
Platform
&
platform1
,
Platform
&
platform2
)
const
;
/**
* Compare individual forces by comparing calculations across two platforms (platform associated w/ input context and
...
...
@@ -261,42 +261,42 @@ public:
* @param forceValidationResults output vector of ForceValidationResult ptrs (user is responsible for deleting
* individual ForceValidationResult objects)
*/
void
compareOpenMMForces
(
Context
&
context
,
Platform
&
comparisonPlatform
,
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
void
compareOpenMMForces
(
Context
&
context
,
Platform
&
comparisonPlatform
,
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
/**
* Determine if results are consistent
*
* @param forceValidationResults vector of ForceValidationResult ptrs to check if forces are consistent
*/
void
checkForInconsistentForceEntries
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
void
checkForInconsistentForceEntries
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
/**
* Get total number of force entries that are inconsistent
*
* @param forceValidationResults vector of ForceValidationResult ptrs to check if forces are consistent
*/
int
getTotalNumberOfInconsistentForceEntries
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
int
getTotalNumberOfInconsistentForceEntries
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
/**
* Get summary string of results
*
* @param forceValidationResults vector of ForceValidationResult ptrs
*/
std
::
string
getSummary
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
std
::
string
getSummary
(
std
::
vector
<
ForceValidationResult
*>&
forceValidationResults
)
const
;
/**
* Set force tolerance
*
* @param tolerance force tolerance
*/
void
setForceTolerance
(
double
tolerance
);
void
setForceTolerance
(
double
tolerance
);
/**
* Get force tolerance
*
* @return force tolerance
*/
double
getForceTolerance
(
void
)
const
;
double
getForceTolerance
()
const
;
/*
* Get force tolerance for specified force
...
...
@@ -307,7 +307,7 @@ public:
*
* */
double
getForceTolerance
(
const
std
::
string
&
forceName
)
const
;
double
getForceTolerance
(
const
std
::
string
&
forceName
)
const
;
/*
* Get max errors to print in summary string
...
...
@@ -316,7 +316,7 @@ public:
*
* */
int
getMaxErrorsToPrint
(
void
)
const
;
int
getMaxErrorsToPrint
()
const
;
/*
* Set max errors to print in summary string
...
...
@@ -325,7 +325,7 @@ public:
*
* */
void
setMaxErrorsToPrint
(
int
maxErrorsToPrint
);
void
setMaxErrorsToPrint
(
int
maxErrorsToPrint
);
/*
* Return true if force is not to be validated (Andersen thermostat, CM motion remover, ...)
...
...
@@ -335,13 +335,13 @@ public:
* @return true if force is not currently validated
**/
int
isExcludedForce
(
std
::
string
forceName
)
const
;
int
isExcludedForce
(
std
::
string
forceName
)
const
;
private:
// initialize class entries
void
_initialize
(
void
);
void
_initialize
();
/*
* Format output line
...
...
@@ -354,9 +354,9 @@ private:
*
* */
std
::
string
_getLine
(
const
std
::
string
&
tab
,
std
::
string
_getLine
(
const
std
::
string
&
tab
,
const
std
::
string
&
description
,
const
std
::
string
&
value
)
const
;
const
std
::
string
&
value
)
const
;
std
::
vector
<
ForceValidationResult
*>
_forceValidationResults
;
...
...
libraries/validate/src/ValidateOpenMM.cpp
View file @
d95b90b9
...
...
@@ -54,7 +54,7 @@ const std::string ValidateOpenMM::CUSTOM_EXTERNAL_FORCE = "CustomExter
const
std
::
string
ValidateOpenMM
::
CUSTOM_NONBONDED_FORCE
=
"CustomNonBonded"
;
ValidateOpenMM
::
ValidateOpenMM
(
void
)
{
ValidateOpenMM
::
ValidateOpenMM
()
{
_log
=
NULL
;
...
...
@@ -82,7 +82,7 @@ int ValidateOpenMM::isNanOrInfinity( double number ){
return
(
number
!=
number
||
number
==
std
::
numeric_limits
<
double
>::
infinity
()
||
number
==
-
std
::
numeric_limits
<
double
>::
infinity
())
?
1
:
0
;
}
FILE
*
ValidateOpenMM
::
getLog
(
void
)
const
{
FILE
*
ValidateOpenMM
::
getLog
()
const
{
return
_log
;
}
...
...
libraries/validate/src/ValidateOpenMMForces.cpp
View file @
d95b90b9
...
...
@@ -68,7 +68,7 @@ ForceValidationResult::ForceValidationResult( const Context& context1, const Con
ForceValidationResult
::~
ForceValidationResult
(
){
}
void
ForceValidationResult
::
_calculateNorms
(
void
){
void
ForceValidationResult
::
_calculateNorms
(){
// ---------------------------------------------------------------------------------------
...
...
@@ -195,7 +195,7 @@ std::vector<double> ForceValidationResult::getForceNorms( int forceIndex ) cons
}
}
int
ForceValidationResult
::
nansDetected
(
void
)
const
{
int
ForceValidationResult
::
nansDetected
()
const
{
return
_nansDetected
;
}
...
...
@@ -203,7 +203,7 @@ void ForceValidationResult::registerInconsistentForceIndex( int index, int value
_inconsistentForceIndicies
[
index
]
=
value
;
}
void
ForceValidationResult
::
clearInconsistentForceIndexList
(
void
){
void
ForceValidationResult
::
clearInconsistentForceIndexList
(){
_inconsistentForceIndicies
.
clear
();
}
...
...
@@ -213,7 +213,7 @@ void ForceValidationResult::getInconsistentForceIndexList( std::vector<int>& inc
}
}
int
ForceValidationResult
::
getNumberOfInconsistentForceEntries
(
void
)
const
{
int
ForceValidationResult
::
getNumberOfInconsistentForceEntries
()
const
{
return
static_cast
<
int
>
(
_inconsistentForceIndicies
.
size
()
);
}
...
...
@@ -329,7 +329,7 @@ double ForceValidationResult::getMaxDotProduct( int* maxIndex ) const {
return
maxDotProduct
;
}
std
::
string
ForceValidationResult
::
getForceName
(
void
)
const
{
std
::
string
ForceValidationResult
::
getForceName
()
const
{
// ---------------------------------------------------------------------------------------
...
...
@@ -376,7 +376,7 @@ void ForceValidationResult::compareForces( double tolerance ){
std
::
vector
<
Vec3
>
forces2
=
getForces
(
1
);
std
::
vector
<
double
>
forceNorms2
=
getForceNorms
(
1
);
clearInconsistentForceIndexList
(
);
clearInconsistentForceIndexList
();
for
(
unsigned
int
jj
=
0
;
jj
<
forces1
.
size
();
jj
++
){
if
(
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms1
[
jj
]
)
||
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms2
[
jj
]
)
){
registerInconsistentForceIndex
(
jj
);
...
...
@@ -406,7 +406,7 @@ void ForceValidationResult::compareForceNorms( double tolerance ){
std
::
vector
<
double
>
forceNorms0
=
getForceNorms
(
0
);
std
::
vector
<
double
>
forceNorms1
=
getForceNorms
(
1
);
clearInconsistentForceIndexList
(
);
clearInconsistentForceIndexList
();
for
(
unsigned
int
jj
=
0
;
jj
<
forceNorms0
.
size
();
jj
++
){
if
(
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms0
[
jj
]
)
||
ValidateOpenMM
::
isNanOrInfinity
(
forceNorms1
[
jj
]
)
){
registerInconsistentForceIndex
(
jj
);
...
...
@@ -420,11 +420,11 @@ void ForceValidationResult::compareForceNorms( double tolerance ){
}
}
ValidateOpenMMForces
::
ValidateOpenMMForces
(
void
)
{
ValidateOpenMMForces
::
ValidateOpenMMForces
()
{
_initialize
();
}
void
ValidateOpenMMForces
::
_initialize
(
void
){
void
ValidateOpenMMForces
::
_initialize
(){
_forceTolerance
=
1.0e-02
;
_maxErrorsToPrint
=
25
;
...
...
@@ -450,7 +450,7 @@ void ValidateOpenMMForces::_initialize( void ){
_forcesToBeExcluded
[
ANDERSEN_THERMOSTAT
]
=
1
;
}
ValidateOpenMMForces
::~
ValidateOpenMMForces
(
){
ValidateOpenMMForces
::~
ValidateOpenMMForces
(){
for
(
unsigned
int
ii
=
0
;
ii
<
_forceValidationResults
.
size
();
ii
++
){
delete
_forceValidationResults
[
ii
];
...
...
@@ -459,7 +459,7 @@ ValidateOpenMMForces::~ValidateOpenMMForces( ){
}
double
ValidateOpenMMForces
::
getForceTolerance
(
void
)
const
{
double
ValidateOpenMMForces
::
getForceTolerance
()
const
{
return
_forceTolerance
;
}
...
...
@@ -706,7 +706,7 @@ double ValidateOpenMMForces::getForceTolerance( const std::string& forceName ) c
return
_forceTolerance
;
}
int
ValidateOpenMMForces
::
getMaxErrorsToPrint
(
void
)
const
{
int
ValidateOpenMMForces
::
getMaxErrorsToPrint
()
const
{
return
_maxErrorsToPrint
;
}
...
...
plugins/amoeba/openmmapi/include/openmm/AmoebaAngleForce.h
View file @
d95b90b9
...
...
@@ -70,7 +70,7 @@ public:
*
* @param cubicK the cubic force constant for the angle
*/
void
setAmoebaGlobalAngleCubic
(
double
cubicK
);
void
setAmoebaGlobalAngleCubic
(
double
cubicK
);
/**
* Get the global cubic term
...
...
@@ -84,7 +84,7 @@ public:
*
* @param quarticK the quartic force constant for the angle
*/
void
setAmoebaGlobalAngleQuartic
(
double
quarticK
);
void
setAmoebaGlobalAngleQuartic
(
double
quarticK
);
/**
* Get the global quartic term
...
...
@@ -98,7 +98,7 @@ public:
*
* @param penticK the pentic force constant for the angle
*/
void
setAmoebaGlobalAnglePentic
(
double
penticK
);
void
setAmoebaGlobalAnglePentic
(
double
penticK
);
/**
* Get the global pentic term
...
...
@@ -112,7 +112,7 @@ public:
*
* @param sexticK the sextic force constant for the angle
*/
void
setAmoebaGlobalAngleSextic
(
double
sexticK
);
void
setAmoebaGlobalAngleSextic
(
double
sexticK
);
/**
* Get the global sextic term
...
...
@@ -131,7 +131,7 @@ public:
* @param quadratic k the quadratic force constant for the angle, measured in kJ/mol/radian^2
* @return the index of the angle that was added
*/
int
addAngle
(
int
particle1
,
int
particle2
,
int
particle3
,
double
length
,
double
quadraticK
);
int
addAngle
(
int
particle1
,
int
particle2
,
int
particle3
,
double
length
,
double
quadraticK
);
/**
* Get the force field parameters for an angle term.
...
...
@@ -143,7 +143,7 @@ public:
* @param length the equilibrium angle, measured in degress
* @param quadratic k the quadratic force constant for the angle, measured in kJ/mol/radian^2
*/
void
getAngleParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
int
&
particle3
,
double
&
length
,
double
&
quadraticK
)
const
;
void
getAngleParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
int
&
particle3
,
double
&
length
,
double
&
quadraticK
)
const
;
/**
* Set the force field parameters for an angle term.
...
...
@@ -155,7 +155,7 @@ public:
* @param length the equilibrium angle, measured in degrees
* @param quadratic k the quadratic force constant for the angle, measured in kJ/mol/radian^2
*/
void
setAngleParameters
(
int
index
,
int
particle1
,
int
particle2
,
int
particle3
,
double
length
,
double
quadraticK
);
void
setAngleParameters
(
int
index
,
int
particle1
,
int
particle2
,
int
particle3
,
double
length
,
double
quadraticK
);
/**
* Update the per-angle parameters in a Context to match those stored in this Force object. This method provides
* an efficient method to update certain parameters in an existing Context without needing to reinitialize it.
...
...
@@ -195,7 +195,7 @@ public:
particle1
=
particle2
=
particle3
=
-
1
;
length
=
quadraticK
=
0.0
;
}
AngleInfo
(
int
particle1
,
int
particle2
,
int
particle3
,
double
length
,
double
quadraticK
)
:
AngleInfo
(
int
particle1
,
int
particle2
,
int
particle3
,
double
length
,
double
quadraticK
)
:
particle1
(
particle1
),
particle2
(
particle2
),
particle3
(
particle3
),
length
(
length
),
quadraticK
(
quadraticK
)
{
}
};
...
...
plugins/amoeba/openmmapi/include/openmm/AmoebaBondForce.h
View file @
d95b90b9
...
...
@@ -71,7 +71,7 @@ public:
*
* @param cubicK the cubic force constant for the bond
*/
void
setAmoebaGlobalBondCubic
(
double
cubicK
);
void
setAmoebaGlobalBondCubic
(
double
cubicK
);
/**
* Get the global cubic term
...
...
@@ -85,7 +85,7 @@ public:
*
* @param quarticK the quartic force constant for the bond
*/
void
setAmoebaGlobalBondQuartic
(
double
quarticK
);
void
setAmoebaGlobalBondQuartic
(
double
quarticK
);
/**
* Get the global quartic term
...
...
@@ -104,7 +104,7 @@ public:
* @return the index of the bond that was added
*/
int
addBond
(
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
);
int
addBond
(
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
);
/**
* Get the force field parameters for a bond term.
...
...
@@ -116,7 +116,7 @@ public:
* @param quadratic k the quadratic force constant for the bond
*/
void
getBondParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
double
&
length
,
double
&
quadraticK
)
const
;
void
getBondParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
double
&
length
,
double
&
quadraticK
)
const
;
/**
* Set the force field parameters for a bond term.
...
...
@@ -127,7 +127,7 @@ public:
* @param length the equilibrium length of the bond, measured in nm
* @param k the quadratic force constant for the bond
*/
void
setBondParameters
(
int
index
,
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
);
void
setBondParameters
(
int
index
,
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
);
/**
* Update the per-bond parameters in a Context to match those stored in this Force object. This method provides
* an efficient method to update certain parameters in an existing Context without needing to reinitialize it.
...
...
@@ -167,7 +167,7 @@ public:
particle1
=
particle2
=
-
1
;
length
=
quadraticK
=
0.0
;
}
BondInfo
(
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
)
:
BondInfo
(
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
)
:
particle1
(
particle1
),
particle2
(
particle2
),
length
(
length
),
quadraticK
(
quadraticK
)
{
}
};
...
...
plugins/amoeba/openmmapi/include/openmm/AmoebaGeneralizedKirkwoodForce.h
View file @
d95b90b9
...
...
@@ -152,7 +152,7 @@ public:
/**
* Set the surface area factor kJ/(nm*nm) used in SASA contribution
*/
void
setSurfaceAreaFactor
(
double
surfaceAreaFactor
);
void
setSurfaceAreaFactor
(
double
surfaceAreaFactor
);
/**
* Update the per-particle parameters in a Context to match those stored in this Force object. This method provides
* an efficient method to update certain parameters in an existing Context without needing to reinitialize it.
...
...
plugins/amoeba/openmmapi/include/openmm/AmoebaInPlaneAngleForce.h
View file @
d95b90b9
...
...
@@ -70,7 +70,7 @@ public:
*
* @param cubicK the cubic force constant for the angle
*/
void
setAmoebaGlobalInPlaneAngleCubic
(
double
cubicK
);
void
setAmoebaGlobalInPlaneAngleCubic
(
double
cubicK
);
/**
* Get the global cubic term
...
...
@@ -84,7 +84,7 @@ public:
*
* @param quarticK the quartic force constant for the angle
*/
void
setAmoebaGlobalInPlaneAngleQuartic
(
double
quarticK
);
void
setAmoebaGlobalInPlaneAngleQuartic
(
double
quarticK
);
/**
* Get the global quartic term
...
...
@@ -98,7 +98,7 @@ public:
*
* @param penticK the pentic force constant for the angle
*/
void
setAmoebaGlobalInPlaneAnglePentic
(
double
penticK
);
void
setAmoebaGlobalInPlaneAnglePentic
(
double
penticK
);
/**
* Get the global pentic term
...
...
@@ -112,7 +112,7 @@ public:
*
* @param sexticK the sextic force constant for the angle
*/
void
setAmoebaGlobalInPlaneAngleSextic
(
double
sexticK
);
void
setAmoebaGlobalInPlaneAngleSextic
(
double
sexticK
);
/**
* Get the global sextic term
...
...
@@ -133,7 +133,7 @@ public:
* @return the index of the angle that was added
*/
int
addAngle
(
int
particle1
,
int
particle2
,
int
particle3
,
int
particle4
,
double
length
,
double
quadraticK
);
double
quadraticK
);
/**
* Get the force field parameters for an angle term.
...
...
@@ -147,7 +147,7 @@ public:
* @param quadratic k the quadratic force constant for the angle measured in kJ/mol/radian^2
*/
void
getAngleParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
int
&
particle3
,
int
&
particle4
,
double
&
length
,
double
&
quadraticK
)
const
;
double
&
quadraticK
)
const
;
/**
* Set the force field parameters for an angle term.
...
...
@@ -160,7 +160,7 @@ public:
* @param length the equilibrium angle, measured in radians
* @param quadratic k the quadratic force constant for the angle, measured in kJ/mol/radian^2
*/
void
setAngleParameters
(
int
index
,
int
particle1
,
int
particle2
,
int
particle3
,
int
particle4
,
double
length
,
double
quadraticK
);
void
setAngleParameters
(
int
index
,
int
particle1
,
int
particle2
,
int
particle3
,
int
particle4
,
double
length
,
double
quadraticK
);
/**
* Update the per-angle parameters in a Context to match those stored in this Force object. This method provides
* an efficient method to update certain parameters in an existing Context without needing to reinitialize it.
...
...
@@ -200,7 +200,7 @@ public:
particle1
=
particle2
=
particle3
=
particle4
=
-
1
;
length
=
quadraticK
=
0.0
;
}
AngleInfo
(
int
particle1
,
int
particle2
,
int
particle3
,
int
particle4
,
double
length
,
double
quadraticK
)
:
AngleInfo
(
int
particle1
,
int
particle2
,
int
particle3
,
int
particle4
,
double
length
,
double
quadraticK
)
:
particle1
(
particle1
),
particle2
(
particle2
),
particle3
(
particle3
),
particle4
(
particle4
),
length
(
length
),
quadraticK
(
quadraticK
)
{
}
...
...
plugins/amoeba/openmmapi/include/openmm/AmoebaStretchBendForce.h
View file @
d95b90b9
...
...
@@ -148,7 +148,7 @@ public:
lengthAB
=
lengthCB
=
angle
=
k1
=
k2
=
0.0
;
}
StretchBendInfo
(
int
particle1
,
int
particle2
,
int
particle3
,
double
lengthAB
,
double
lengthCB
,
double
angle
,
double
k1
,
double
k2
)
:
double
lengthAB
,
double
lengthCB
,
double
angle
,
double
k1
,
double
k2
)
:
particle1
(
particle1
),
particle2
(
particle2
),
particle3
(
particle3
),
lengthAB
(
lengthAB
),
lengthCB
(
lengthCB
),
angle
(
angle
),
k1
(
k1
),
k2
(
k2
)
{
}
...
...
plugins/amoeba/openmmapi/include/openmm/amoebaKernels.h
View file @
d95b90b9
...
...
@@ -350,10 +350,10 @@ public:
virtual
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
)
=
0
;
virtual
void
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
std
::
vector
<
double
>&
outputElectrostaticPotential
)
=
0
;
virtual
void
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
std
::
vector
<
double
>&
outputElectrostaticPotential
)
=
0
;
virtual
void
getSystemMultipoleMoments
(
ContextImpl
&
context
,
std
::
vector
<
double
>&
outputMultipoleMoments
)
=
0
;
virtual
void
getSystemMultipoleMoments
(
ContextImpl
&
context
,
std
::
vector
<
double
>&
outputMultipoleMoments
)
=
0
;
/**
* Copy changed parameters over to a context.
*
...
...
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaMultipoleForceImpl.h
View file @
d95b90b9
...
...
@@ -70,9 +70,9 @@ public:
* @param minCovalentIndex minimum covalent index
* @param maxCovalentIndex maximum covalent index
*/
static
void
getCovalentRange
(
const
AmoebaMultipoleForce
&
force
,
int
index
,
static
void
getCovalentRange
(
const
AmoebaMultipoleForce
&
force
,
int
index
,
const
std
::
vector
<
AmoebaMultipoleForce
::
CovalentType
>&
lists
,
int
*
minCovalentIndex
,
int
*
maxCovalentIndex
);
int
*
minCovalentIndex
,
int
*
maxCovalentIndex
);
/**
* Get the covalent degree for the CovalentEnd lists
...
...
@@ -80,14 +80,14 @@ public:
* @param force AmoebaMultipoleForce force reference
* @param covalentDegree covalent degrees for the CovalentEnd lists
*/
static
void
getCovalentDegree
(
const
AmoebaMultipoleForce
&
force
,
std
::
vector
<
int
>&
covalentDegree
);
static
void
getCovalentDegree
(
const
AmoebaMultipoleForce
&
force
,
std
::
vector
<
int
>&
covalentDegree
);
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
void
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
std
::
vector
<
double
>&
outputElectrostaticPotential
);
void
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
std
::
vector
<
double
>&
outputElectrostaticPotential
);
void
getSystemMultipoleMoments
(
ContextImpl
&
context
,
std
::
vector
<
double
>&
outputMultipoleMoments
);
void
getSystemMultipoleMoments
(
ContextImpl
&
context
,
std
::
vector
<
double
>&
outputMultipoleMoments
);
void
updateParametersInContext
(
ContextImpl
&
context
);
...
...
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaTorsionTorsionForceImpl.h
View file @
d95b90b9
...
...
@@ -61,7 +61,7 @@ public:
}
std
::
vector
<
std
::
string
>
getKernelNames
();
OPENMM_EXPORT_AMOEBA
static
void
reorderGrid
(
const
TorsionTorsionGrid
&
grid
,
TorsionTorsionGrid
&
reorderedGrid
);
OPENMM_EXPORT_AMOEBA
static
void
reorderGrid
(
const
TorsionTorsionGrid
&
grid
,
TorsionTorsionGrid
&
reorderedGrid
);
private:
const
AmoebaTorsionTorsionForce
&
owner
;
...
...
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaWcaDispersionForceImpl.h
View file @
d95b90b9
...
...
@@ -69,7 +69,7 @@ public:
* @param particleIndex the particle index
* @param maxDispersionEnergy maximum dispersion energy
*/
static
void
getMaximumDispersionEnergy
(
const
AmoebaWcaDispersionForce
&
force
,
int
particleIndex
,
double
&
maxDispersionEnergy
);
static
void
getMaximumDispersionEnergy
(
const
AmoebaWcaDispersionForce
&
force
,
int
particleIndex
,
double
&
maxDispersionEnergy
);
/**
* Get the total maximum dispersion energy
...
...
@@ -78,7 +78,7 @@ public:
*
* @return total maximum dispersion energy for the system
*/
static
double
getTotalMaximumDispersionEnergy
(
const
AmoebaWcaDispersionForce
&
force
);
static
double
getTotalMaximumDispersionEnergy
(
const
AmoebaWcaDispersionForce
&
force
);
void
updateParametersInContext
(
ContextImpl
&
context
);
private:
...
...
plugins/amoeba/openmmapi/src/AmoebaAngleForce.cpp
View file @
d95b90b9
...
...
@@ -46,7 +46,7 @@ int AmoebaAngleForce::addAngle(int particle1, int particle2, int particle3, dou
}
void
AmoebaAngleForce
::
getAngleParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
int
&
particle3
,
double
&
length
,
double
&
quadraticK
)
const
{
double
&
length
,
double
&
quadraticK
)
const
{
particle1
=
angles
[
index
].
particle1
;
particle2
=
angles
[
index
].
particle2
;
particle3
=
angles
[
index
].
particle3
;
...
...
@@ -55,7 +55,7 @@ void AmoebaAngleForce::getAngleParameters(int index, int& particle1, int& partic
}
void
AmoebaAngleForce
::
setAngleParameters
(
int
index
,
int
particle1
,
int
particle2
,
int
particle3
,
double
length
,
double
quadraticK
)
{
double
length
,
double
quadraticK
)
{
angles
[
index
].
particle1
=
particle1
;
angles
[
index
].
particle2
=
particle2
;
angles
[
index
].
particle3
=
particle3
;
...
...
@@ -67,7 +67,7 @@ double AmoebaAngleForce::getAmoebaGlobalAngleCubic() const {
return
_globalCubicK
;
}
void
AmoebaAngleForce
::
setAmoebaGlobalAngleCubic
(
double
cubicK
)
{
void
AmoebaAngleForce
::
setAmoebaGlobalAngleCubic
(
double
cubicK
)
{
_globalCubicK
=
cubicK
;
}
...
...
@@ -75,7 +75,7 @@ double AmoebaAngleForce::getAmoebaGlobalAngleQuartic() const {
return
_globalQuarticK
;
}
void
AmoebaAngleForce
::
setAmoebaGlobalAngleQuartic
(
double
quarticK
)
{
void
AmoebaAngleForce
::
setAmoebaGlobalAngleQuartic
(
double
quarticK
)
{
_globalQuarticK
=
quarticK
;
}
...
...
@@ -83,7 +83,7 @@ double AmoebaAngleForce::getAmoebaGlobalAnglePentic() const {
return
_globalPenticK
;
}
void
AmoebaAngleForce
::
setAmoebaGlobalAnglePentic
(
double
penticK
)
{
void
AmoebaAngleForce
::
setAmoebaGlobalAnglePentic
(
double
penticK
)
{
_globalPenticK
=
penticK
;
}
...
...
@@ -91,7 +91,7 @@ double AmoebaAngleForce::getAmoebaGlobalAngleSextic() const {
return
_globalSexticK
;
}
void
AmoebaAngleForce
::
setAmoebaGlobalAngleSextic
(
double
sexticK
)
{
void
AmoebaAngleForce
::
setAmoebaGlobalAngleSextic
(
double
sexticK
)
{
_globalSexticK
=
sexticK
;
}
...
...
plugins/amoeba/openmmapi/src/AmoebaBondForce.cpp
View file @
d95b90b9
...
...
@@ -41,29 +41,29 @@ AmoebaBondForce::AmoebaBondForce() {
}
int
AmoebaBondForce
::
addBond
(
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
)
{
bonds
.
push_back
(
BondInfo
(
particle1
,
particle2
,
length
,
quadraticK
));
bonds
.
push_back
(
BondInfo
(
particle1
,
particle2
,
length
,
quadraticK
));
return
bonds
.
size
()
-
1
;
}
void
AmoebaBondForce
::
getBondParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
double
&
length
,
double
&
quadraticK
)
const
{
void
AmoebaBondForce
::
getBondParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
double
&
length
,
double
&
quadraticK
)
const
{
particle1
=
bonds
[
index
].
particle1
;
particle2
=
bonds
[
index
].
particle2
;
length
=
bonds
[
index
].
length
;
quadraticK
=
bonds
[
index
].
quadraticK
;
}
void
AmoebaBondForce
::
setBondParameters
(
int
index
,
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
)
{
void
AmoebaBondForce
::
setBondParameters
(
int
index
,
int
particle1
,
int
particle2
,
double
length
,
double
quadraticK
)
{
bonds
[
index
].
particle1
=
particle1
;
bonds
[
index
].
particle2
=
particle2
;
bonds
[
index
].
length
=
length
;
bonds
[
index
].
quadraticK
=
quadraticK
;
}
void
AmoebaBondForce
::
setAmoebaGlobalBondCubic
(
double
cubicK
)
{
void
AmoebaBondForce
::
setAmoebaGlobalBondCubic
(
double
cubicK
)
{
_globalCubicK
=
cubicK
;
}
void
AmoebaBondForce
::
setAmoebaGlobalBondQuartic
(
double
quarticK
)
{
void
AmoebaBondForce
::
setAmoebaGlobalBondQuartic
(
double
quarticK
)
{
_globalQuarticK
=
quarticK
;
}
...
...
plugins/amoeba/openmmapi/src/AmoebaGeneralizedKirkwoodForce.cpp
View file @
d95b90b9
...
...
@@ -62,7 +62,7 @@ double AmoebaGeneralizedKirkwoodForce::getDielectricOffset() const {
return dielectricOffset;
}
void AmoebaGeneralizedKirkwoodForce::setDielectricOffset(double inputDielectricOffset
) {
void AmoebaGeneralizedKirkwoodForce::setDielectricOffset(double inputDielectricOffset) {
dielectricOffset = inputDielectricOffset;
} */
...
...
@@ -70,7 +70,7 @@ int AmoebaGeneralizedKirkwoodForce::getIncludeCavityTerm() const {
return
includeCavityTerm
;
}
void
AmoebaGeneralizedKirkwoodForce
::
setIncludeCavityTerm
(
int
inputIncludeCavityTerm
)
{
void
AmoebaGeneralizedKirkwoodForce
::
setIncludeCavityTerm
(
int
inputIncludeCavityTerm
)
{
includeCavityTerm
=
inputIncludeCavityTerm
;
}
...
...
@@ -78,7 +78,7 @@ double AmoebaGeneralizedKirkwoodForce::getProbeRadius() const {
return
probeRadius
;
}
void
AmoebaGeneralizedKirkwoodForce
::
setProbeRadius
(
double
inputProbeRadius
)
{
void
AmoebaGeneralizedKirkwoodForce
::
setProbeRadius
(
double
inputProbeRadius
)
{
probeRadius
=
inputProbeRadius
;
}
...
...
@@ -86,7 +86,7 @@ double AmoebaGeneralizedKirkwoodForce::getSurfaceAreaFactor() const {
return
surfaceAreaFactor
;
}
void
AmoebaGeneralizedKirkwoodForce
::
setSurfaceAreaFactor
(
double
inputSurfaceAreaFactor
)
{
void
AmoebaGeneralizedKirkwoodForce
::
setSurfaceAreaFactor
(
double
inputSurfaceAreaFactor
)
{
surfaceAreaFactor
=
inputSurfaceAreaFactor
;
}
...
...
plugins/amoeba/openmmapi/src/AmoebaInPlaneAngleForce.cpp
View file @
d95b90b9
...
...
@@ -40,13 +40,13 @@ AmoebaInPlaneAngleForce::AmoebaInPlaneAngleForce() {
_globalCubicK
=
_globalQuarticK
=
_globalPenticK
=
_globalSexticK
=
0.0
;
}
int
AmoebaInPlaneAngleForce
::
addAngle
(
int
particle1
,
int
particle2
,
int
particle3
,
int
particle4
,
double
length
,
double
quadraticK
)
{
angles
.
push_back
(
AngleInfo
(
particle1
,
particle2
,
particle3
,
particle4
,
length
,
quadraticK
));
int
AmoebaInPlaneAngleForce
::
addAngle
(
int
particle1
,
int
particle2
,
int
particle3
,
int
particle4
,
double
length
,
double
quadraticK
)
{
angles
.
push_back
(
AngleInfo
(
particle1
,
particle2
,
particle3
,
particle4
,
length
,
quadraticK
));
return
angles
.
size
()
-
1
;
}
void
AmoebaInPlaneAngleForce
::
getAngleParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
int
&
particle3
,
int
&
particle4
,
double
&
length
,
double
&
quadraticK
)
const
{
double
&
length
,
double
&
quadraticK
)
const
{
particle1
=
angles
[
index
].
particle1
;
particle2
=
angles
[
index
].
particle2
;
particle3
=
angles
[
index
].
particle3
;
...
...
@@ -56,7 +56,7 @@ void AmoebaInPlaneAngleForce::getAngleParameters(int index, int& particle1, int&
}
void
AmoebaInPlaneAngleForce
::
setAngleParameters
(
int
index
,
int
particle1
,
int
particle2
,
int
particle3
,
int
particle4
,
double
length
,
double
quadraticK
)
{
double
length
,
double
quadraticK
)
{
angles
[
index
].
particle1
=
particle1
;
angles
[
index
].
particle2
=
particle2
;
angles
[
index
].
particle3
=
particle3
;
...
...
@@ -65,11 +65,11 @@ void AmoebaInPlaneAngleForce::setAngleParameters(int index, int particle1, int p
angles
[
index
].
quadraticK
=
quadraticK
;
}
void
AmoebaInPlaneAngleForce
::
setAmoebaGlobalInPlaneAngleCubic
(
double
cubicK
)
{
void
AmoebaInPlaneAngleForce
::
setAmoebaGlobalInPlaneAngleCubic
(
double
cubicK
)
{
_globalCubicK
=
cubicK
;
}
void
AmoebaInPlaneAngleForce
::
setAmoebaGlobalInPlaneAngleQuartic
(
double
quarticK
)
{
void
AmoebaInPlaneAngleForce
::
setAmoebaGlobalInPlaneAngleQuartic
(
double
quarticK
)
{
_globalQuarticK
=
quarticK
;
}
...
...
@@ -81,11 +81,11 @@ double AmoebaInPlaneAngleForce::getAmoebaGlobalInPlaneAngleQuartic() const {
return
_globalQuarticK
;
}
void
AmoebaInPlaneAngleForce
::
setAmoebaGlobalInPlaneAnglePentic
(
double
cubicK
)
{
void
AmoebaInPlaneAngleForce
::
setAmoebaGlobalInPlaneAnglePentic
(
double
cubicK
)
{
_globalPenticK
=
cubicK
;
}
void
AmoebaInPlaneAngleForce
::
setAmoebaGlobalInPlaneAngleSextic
(
double
quarticK
)
{
void
AmoebaInPlaneAngleForce
::
setAmoebaGlobalInPlaneAngleSextic
(
double
quarticK
)
{
_globalSexticK
=
quarticK
;
}
...
...
plugins/amoeba/openmmapi/src/AmoebaMultipoleForce.cpp
View file @
d95b90b9
...
...
@@ -49,7 +49,7 @@ AmoebaMultipoleForce::NonbondedMethod AmoebaMultipoleForce::getNonbondedMethod()
return
nonbondedMethod
;
}
void
AmoebaMultipoleForce
::
setNonbondedMethod
(
AmoebaMultipoleForce
::
NonbondedMethod
method
)
{
void
AmoebaMultipoleForce
::
setNonbondedMethod
(
AmoebaMultipoleForce
::
NonbondedMethod
method
)
{
nonbondedMethod
=
method
;
}
...
...
@@ -57,7 +57,7 @@ AmoebaMultipoleForce::PolarizationType AmoebaMultipoleForce::getPolarizationType
return
polarizationType
;
}
void
AmoebaMultipoleForce
::
setPolarizationType
(
AmoebaMultipoleForce
::
PolarizationType
type
)
{
void
AmoebaMultipoleForce
::
setPolarizationType
(
AmoebaMultipoleForce
::
PolarizationType
type
)
{
polarizationType
=
type
;
}
...
...
@@ -73,7 +73,7 @@ double AmoebaMultipoleForce::getAEwald() const {
return
aewald
;
}
void
AmoebaMultipoleForce
::
setAEwald
(
double
inputAewald
)
{
void
AmoebaMultipoleForce
::
setAEwald
(
double
inputAewald
)
{
aewald
=
inputAewald
;
}
...
...
@@ -81,11 +81,11 @@ int AmoebaMultipoleForce::getPmeBSplineOrder() const {
return
pmeBSplineOrder
;
}
void
AmoebaMultipoleForce
::
getPmeGridDimensions
(
std
::
vector
<
int
>&
gridDimension
)
const
{
if
(
gridDimension
.
size
()
<
3
){
void
AmoebaMultipoleForce
::
getPmeGridDimensions
(
std
::
vector
<
int
>&
gridDimension
)
const
{
if
(
gridDimension
.
size
()
<
3
)
{
gridDimension
.
resize
(
3
);
}
if
(
pmeGridDimension
.
size
()
>
2
){
if
(
pmeGridDimension
.
size
()
>
2
)
{
gridDimension
[
0
]
=
pmeGridDimension
[
0
];
gridDimension
[
1
]
=
pmeGridDimension
[
1
];
gridDimension
[
2
]
=
pmeGridDimension
[
2
];
...
...
@@ -95,7 +95,7 @@ void AmoebaMultipoleForce::getPmeGridDimensions( std::vector<int>& gridDimension
return
;
}
void
AmoebaMultipoleForce
::
setPmeGridDimensions
(
const
std
::
vector
<
int
>&
gridDimension
)
{
void
AmoebaMultipoleForce
::
setPmeGridDimensions
(
const
std
::
vector
<
int
>&
gridDimension
)
{
pmeGridDimension
.
resize
(
3
);
pmeGridDimension
[
0
]
=
gridDimension
[
0
];
pmeGridDimension
[
1
]
=
gridDimension
[
1
];
...
...
@@ -107,7 +107,7 @@ int AmoebaMultipoleForce::getMutualInducedMaxIterations() const {
return
mutualInducedMaxIterations
;
}
void
AmoebaMultipoleForce
::
setMutualInducedMaxIterations
(
int
inputMutualInducedMaxIterations
)
{
void
AmoebaMultipoleForce
::
setMutualInducedMaxIterations
(
int
inputMutualInducedMaxIterations
)
{
mutualInducedMaxIterations
=
inputMutualInducedMaxIterations
;
}
...
...
@@ -115,7 +115,7 @@ double AmoebaMultipoleForce::getMutualInducedTargetEpsilon() const {
return
mutualInducedTargetEpsilon
;
}
void
AmoebaMultipoleForce
::
setMutualInducedTargetEpsilon
(
double
inputMutualInducedTargetEpsilon
)
{
void
AmoebaMultipoleForce
::
setMutualInducedTargetEpsilon
(
double
inputMutualInducedTargetEpsilon
)
{
mutualInducedTargetEpsilon
=
inputMutualInducedTargetEpsilon
;
}
...
...
@@ -127,22 +127,22 @@ void AmoebaMultipoleForce::setEwaldErrorTolerance(double tol) {
ewaldErrorTol
=
tol
;
}
int
AmoebaMultipoleForce
::
addMultipole
(
double
charge
,
const
std
::
vector
<
double
>&
molecularDipole
,
const
std
::
vector
<
double
>&
molecularQuadrupole
,
int
axisType
,
int
AmoebaMultipoleForce
::
addMultipole
(
double
charge
,
const
std
::
vector
<
double
>&
molecularDipole
,
const
std
::
vector
<
double
>&
molecularQuadrupole
,
int
axisType
,
int
multipoleAtomZ
,
int
multipoleAtomX
,
int
multipoleAtomY
,
double
thole
,
double
dampingFactor
,
double
polarity
)
{
multipoles
.
push_back
(
MultipoleInfo
(
charge
,
molecularDipole
,
molecularQuadrupole
,
axisType
,
multipoleAtomZ
,
multipoleAtomX
,
multipoleAtomY
,
thole
,
dampingFactor
,
polarity
));
multipoles
.
push_back
(
MultipoleInfo
(
charge
,
molecularDipole
,
molecularQuadrupole
,
axisType
,
multipoleAtomZ
,
multipoleAtomX
,
multipoleAtomY
,
thole
,
dampingFactor
,
polarity
));
return
multipoles
.
size
()
-
1
;
}
void
AmoebaMultipoleForce
::
getMultipoleParameters
(
int
index
,
double
&
charge
,
std
::
vector
<
double
>&
molecularDipole
,
std
::
vector
<
double
>&
molecularQuadrupole
,
int
&
axisType
,
int
&
multipoleAtomZ
,
int
&
multipoleAtomX
,
int
&
multipoleAtomY
,
double
&
thole
,
double
&
dampingFactor
,
double
&
polarity
)
const
{
int
&
axisType
,
int
&
multipoleAtomZ
,
int
&
multipoleAtomX
,
int
&
multipoleAtomY
,
double
&
thole
,
double
&
dampingFactor
,
double
&
polarity
)
const
{
charge
=
multipoles
[
index
].
charge
;
molecularDipole
.
resize
(
3
);
molecularDipole
.
resize
(
3
);
molecularDipole
[
0
]
=
multipoles
[
index
].
molecularDipole
[
0
];
molecularDipole
[
1
]
=
multipoles
[
index
].
molecularDipole
[
1
];
molecularDipole
[
2
]
=
multipoles
[
index
].
molecularDipole
[
2
];
molecularQuadrupole
.
resize
(
9
);
molecularQuadrupole
.
resize
(
9
);
molecularQuadrupole
[
0
]
=
multipoles
[
index
].
molecularQuadrupole
[
0
];
molecularQuadrupole
[
1
]
=
multipoles
[
index
].
molecularQuadrupole
[
1
];
molecularQuadrupole
[
2
]
=
multipoles
[
index
].
molecularQuadrupole
[
2
];
...
...
@@ -164,7 +164,7 @@ void AmoebaMultipoleForce::getMultipoleParameters(int index, double& charge, std
}
void
AmoebaMultipoleForce
::
setMultipoleParameters
(
int
index
,
double
charge
,
const
std
::
vector
<
double
>&
molecularDipole
,
const
std
::
vector
<
double
>&
molecularQuadrupole
,
int
axisType
,
int
multipoleAtomZ
,
int
multipoleAtomX
,
int
multipoleAtomY
,
double
thole
,
double
dampingFactor
,
double
polarity
)
{
int
axisType
,
int
multipoleAtomZ
,
int
multipoleAtomX
,
int
multipoleAtomY
,
double
thole
,
double
dampingFactor
,
double
polarity
)
{
multipoles
[
index
].
charge
=
charge
;
...
...
@@ -192,34 +192,34 @@ void AmoebaMultipoleForce::setMultipoleParameters(int index, double charge, cons
}
void
AmoebaMultipoleForce
::
setCovalentMap
(
int
index
,
CovalentType
typeId
,
const
std
::
vector
<
int
>&
covalentAtoms
)
{
void
AmoebaMultipoleForce
::
setCovalentMap
(
int
index
,
CovalentType
typeId
,
const
std
::
vector
<
int
>&
covalentAtoms
)
{
std
::
vector
<
int
>&
covalentList
=
multipoles
[
index
].
covalentInfo
[
typeId
];
covalentList
.
resize
(
covalentAtoms
.
size
()
);
for
(
unsigned
int
ii
=
0
;
ii
<
covalentAtoms
.
size
();
ii
++
){
covalentList
.
resize
(
covalentAtoms
.
size
());
for
(
unsigned
int
ii
=
0
;
ii
<
covalentAtoms
.
size
();
ii
++
)
{
covalentList
[
ii
]
=
covalentAtoms
[
ii
];
}
}
void
AmoebaMultipoleForce
::
getCovalentMap
(
int
index
,
CovalentType
typeId
,
std
::
vector
<
int
>&
covalentAtoms
)
const
{
void
AmoebaMultipoleForce
::
getCovalentMap
(
int
index
,
CovalentType
typeId
,
std
::
vector
<
int
>&
covalentAtoms
)
const
{
// load covalent atom index entries for atomId==index and covalentId==typeId into covalentAtoms
std
::
vector
<
int
>
covalentList
=
multipoles
[
index
].
covalentInfo
[
typeId
];
covalentAtoms
.
resize
(
covalentList
.
size
()
);
for
(
unsigned
int
ii
=
0
;
ii
<
covalentList
.
size
();
ii
++
){
covalentAtoms
.
resize
(
covalentList
.
size
());
for
(
unsigned
int
ii
=
0
;
ii
<
covalentList
.
size
();
ii
++
)
{
covalentAtoms
[
ii
]
=
covalentList
[
ii
];
}
}
void
AmoebaMultipoleForce
::
getCovalentMaps
(
int
index
,
std
::
vector
<
std
::
vector
<
int
>
>&
covalentLists
)
const
{
void
AmoebaMultipoleForce
::
getCovalentMaps
(
int
index
,
std
::
vector
<
std
::
vector
<
int
>
>&
covalentLists
)
const
{
covalentLists
.
resize
(
CovalentEnd
);
for
(
unsigned
int
jj
=
0
;
jj
<
CovalentEnd
;
jj
++
){
covalentLists
.
resize
(
CovalentEnd
);
for
(
unsigned
int
jj
=
0
;
jj
<
CovalentEnd
;
jj
++
)
{
std
::
vector
<
int
>
covalentList
=
multipoles
[
index
].
covalentInfo
[
jj
];
std
::
vector
<
int
>
covalentAtoms
;
covalentAtoms
.
resize
(
covalentList
.
size
()
);
for
(
unsigned
int
ii
=
0
;
ii
<
covalentList
.
size
();
ii
++
){
covalentAtoms
.
resize
(
covalentList
.
size
());
for
(
unsigned
int
ii
=
0
;
ii
<
covalentList
.
size
();
ii
++
)
{
covalentAtoms
[
ii
]
=
covalentList
[
ii
];
}
covalentLists
[
jj
]
=
covalentAtoms
;
...
...
@@ -230,11 +230,11 @@ void AmoebaMultipoleForce::getInducedDipoles(Context& context, vector<Vec3>& dip
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getInducedDipoles
(
getContextImpl
(
context
),
dipoles
);
}
void
AmoebaMultipoleForce
::
getElectrostaticPotential
(
const
std
::
vector
<
Vec3
>&
inputGrid
,
Context
&
context
,
std
::
vector
<
double
>&
outputElectrostaticPotential
){
void
AmoebaMultipoleForce
::
getElectrostaticPotential
(
const
std
::
vector
<
Vec3
>&
inputGrid
,
Context
&
context
,
std
::
vector
<
double
>&
outputElectrostaticPotential
)
{
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getElectrostaticPotential
(
getContextImpl
(
context
),
inputGrid
,
outputElectrostaticPotential
);
}
void
AmoebaMultipoleForce
::
getSystemMultipoleMoments
(
Context
&
context
,
std
::
vector
<
double
>&
outputMultipoleMoments
){
void
AmoebaMultipoleForce
::
getSystemMultipoleMoments
(
Context
&
context
,
std
::
vector
<
double
>&
outputMultipoleMoments
)
{
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getSystemMultipoleMoments
(
getContextImpl
(
context
),
outputMultipoleMoments
);
}
...
...
plugins/amoeba/openmmapi/src/AmoebaMultipoleForceImpl.cpp
View file @
d95b90b9
...
...
@@ -64,26 +64,26 @@ void AmoebaMultipoleForceImpl::initialize(ContextImpl& context) {
}
double
quadrupoleValidationTolerance
=
1.0e-05
;
for
(
int
ii
=
0
;
ii
<
system
.
getNumParticles
();
ii
++
){
for
(
int
ii
=
0
;
ii
<
system
.
getNumParticles
();
ii
++
)
{
int
axisType
,
multipoleAtomZ
,
multipoleAtomX
,
multipoleAtomY
;
double
charge
,
thole
,
dampingFactor
,
polarity
;
std
::
vector
<
double
>
molecularDipole
;
std
::
vector
<
double
>
molecularQuadrupole
;
owner
.
getMultipoleParameters
(
ii
,
charge
,
molecularDipole
,
molecularQuadrupole
,
axisType
,
multipoleAtomZ
,
multipoleAtomX
,
multipoleAtomY
,
thole
,
dampingFactor
,
polarity
);
owner
.
getMultipoleParameters
(
ii
,
charge
,
molecularDipole
,
molecularQuadrupole
,
axisType
,
multipoleAtomZ
,
multipoleAtomX
,
multipoleAtomY
,
thole
,
dampingFactor
,
polarity
);
// check quadrupole is traceless and symmetric
double
trace
=
fabs
(
molecularQuadrupole
[
0
]
+
molecularQuadrupole
[
4
]
+
molecularQuadrupole
[
8
]
);
if
(
trace
>
quadrupoleValidationTolerance
){
double
trace
=
fabs
(
molecularQuadrupole
[
0
]
+
molecularQuadrupole
[
4
]
+
molecularQuadrupole
[
8
]);
if
(
trace
>
quadrupoleValidationTolerance
)
{
std
::
stringstream
buffer
;
buffer
<<
"AmoebaMultipoleForce: qudarupole for particle="
<<
ii
;
buffer
<<
" has nonzero trace: "
<<
trace
<<
"; AMOEBA plugin assumes traceless quadrupole."
;
throw
OpenMMException
(
buffer
.
str
());
}
if
(
fabs
(
molecularQuadrupole
[
1
]
-
molecularQuadrupole
[
3
]
)
>
quadrupoleValidationTolerance
){
if
(
fabs
(
molecularQuadrupole
[
1
]
-
molecularQuadrupole
[
3
])
>
quadrupoleValidationTolerance
)
{
std
::
stringstream
buffer
;
buffer
<<
"AmoebaMultipoleForce: XY and YX components of quadrupole for particle="
<<
ii
;
buffer
<<
" are not equal: ["
<<
molecularQuadrupole
[
1
]
<<
" "
<<
molecularQuadrupole
[
3
]
<<
"];"
;
...
...
@@ -91,7 +91,7 @@ void AmoebaMultipoleForceImpl::initialize(ContextImpl& context) {
throw
OpenMMException
(
buffer
.
str
());
}
if
(
fabs
(
molecularQuadrupole
[
2
]
-
molecularQuadrupole
[
6
]
)
>
quadrupoleValidationTolerance
){
if
(
fabs
(
molecularQuadrupole
[
2
]
-
molecularQuadrupole
[
6
])
>
quadrupoleValidationTolerance
)
{
std
::
stringstream
buffer
;
buffer
<<
"AmoebaMultipoleForce: XZ and ZX components of quadrupole for particle="
<<
ii
;
buffer
<<
" are not equal: ["
<<
molecularQuadrupole
[
2
]
<<
" "
<<
molecularQuadrupole
[
6
]
<<
"];"
;
...
...
@@ -99,7 +99,7 @@ void AmoebaMultipoleForceImpl::initialize(ContextImpl& context) {
throw
OpenMMException
(
buffer
.
str
());
}
if
(
fabs
(
molecularQuadrupole
[
5
]
-
molecularQuadrupole
[
7
]
)
>
quadrupoleValidationTolerance
){
if
(
fabs
(
molecularQuadrupole
[
5
]
-
molecularQuadrupole
[
7
])
>
quadrupoleValidationTolerance
)
{
std
::
stringstream
buffer
;
buffer
<<
"AmoebaMultipoleForce: YZ and ZY components of quadrupole for particle="
<<
ii
;
buffer
<<
" are not equal: ["
<<
molecularQuadrupole
[
5
]
<<
" "
<<
molecularQuadrupole
[
7
]
<<
"];"
;
...
...
@@ -109,9 +109,9 @@ void AmoebaMultipoleForceImpl::initialize(ContextImpl& context) {
// only 'Z-then-X', 'Bisector', Z-Bisect, ThreeFold currently handled
if
(
axisType
!=
AmoebaMultipoleForce
::
ZThenX
&&
axisType
!=
AmoebaMultipoleForce
::
Bisector
&&
if
(
axisType
!=
AmoebaMultipoleForce
::
ZThenX
&&
axisType
!=
AmoebaMultipoleForce
::
Bisector
&&
axisType
!=
AmoebaMultipoleForce
::
ZBisect
&&
axisType
!=
AmoebaMultipoleForce
::
ThreeFold
&&
axisType
!=
AmoebaMultipoleForce
::
ZOnly
&&
axisType
!=
AmoebaMultipoleForce
::
NoAxisType
)
{
axisType
!=
AmoebaMultipoleForce
::
ZOnly
&&
axisType
!=
AmoebaMultipoleForce
::
NoAxisType
)
{
std
::
stringstream
buffer
;
buffer
<<
"AmoebaMultipoleForce: axis type="
<<
axisType
;
buffer
<<
" not currently handled - only axisTypes[ "
;
...
...
@@ -139,7 +139,7 @@ std::vector<std::string> AmoebaMultipoleForceImpl::getKernelNames() {
}
const
int
*
AmoebaMultipoleForceImpl
::
getCovalentDegrees
()
{
if
(
!
initializedCovalentDegrees
){
if
(
!
initializedCovalentDegrees
)
{
initializedCovalentDegrees
=
true
;
CovalentDegrees
[
AmoebaMultipoleForce
::
Covalent12
]
=
1
;
CovalentDegrees
[
AmoebaMultipoleForce
::
Covalent13
]
=
2
;
...
...
@@ -153,20 +153,20 @@ const int* AmoebaMultipoleForceImpl::getCovalentDegrees() {
return
CovalentDegrees
;
}
void
AmoebaMultipoleForceImpl
::
getCovalentRange
(
const
AmoebaMultipoleForce
&
force
,
int
atomIndex
,
const
std
::
vector
<
AmoebaMultipoleForce
::
CovalentType
>&
lists
,
int
*
minCovalentIndex
,
int
*
maxCovalentIndex
){
void
AmoebaMultipoleForceImpl
::
getCovalentRange
(
const
AmoebaMultipoleForce
&
force
,
int
atomIndex
,
const
std
::
vector
<
AmoebaMultipoleForce
::
CovalentType
>&
lists
,
int
*
minCovalentIndex
,
int
*
maxCovalentIndex
)
{
*
minCovalentIndex
=
999999999
;
*
maxCovalentIndex
=
-
999999999
;
for
(
unsigned
int
kk
=
0
;
kk
<
lists
.
size
();
kk
++
){
for
(
unsigned
int
kk
=
0
;
kk
<
lists
.
size
();
kk
++
)
{
AmoebaMultipoleForce
::
CovalentType
jj
=
lists
[
kk
];
std
::
vector
<
int
>
covalentList
;
force
.
getCovalentMap
(
atomIndex
,
jj
,
covalentList
);
for
(
unsigned
int
ii
=
0
;
ii
<
covalentList
.
size
();
ii
++
){
if
(
*
minCovalentIndex
>
covalentList
[
ii
]
){
force
.
getCovalentMap
(
atomIndex
,
jj
,
covalentList
);
for
(
unsigned
int
ii
=
0
;
ii
<
covalentList
.
size
();
ii
++
)
{
if
(
*
minCovalentIndex
>
covalentList
[
ii
])
{
*
minCovalentIndex
=
covalentList
[
ii
];
}
if
(
*
maxCovalentIndex
<
covalentList
[
ii
]
){
if
(
*
maxCovalentIndex
<
covalentList
[
ii
])
{
*
maxCovalentIndex
=
covalentList
[
ii
];
}
}
...
...
@@ -174,10 +174,10 @@ void AmoebaMultipoleForceImpl::getCovalentRange( const AmoebaMultipoleForce& for
return
;
}
void
AmoebaMultipoleForceImpl
::
getCovalentDegree
(
const
AmoebaMultipoleForce
&
force
,
std
::
vector
<
int
>&
covalentDegree
){
covalentDegree
.
resize
(
AmoebaMultipoleForce
::
CovalentEnd
);
void
AmoebaMultipoleForceImpl
::
getCovalentDegree
(
const
AmoebaMultipoleForce
&
force
,
std
::
vector
<
int
>&
covalentDegree
)
{
covalentDegree
.
resize
(
AmoebaMultipoleForce
::
CovalentEnd
);
const
int
*
CovalentDegrees
=
AmoebaMultipoleForceImpl
::
getCovalentDegrees
();
for
(
unsigned
int
kk
=
0
;
kk
<
AmoebaMultipoleForce
::
CovalentEnd
;
kk
++
){
for
(
unsigned
int
kk
=
0
;
kk
<
AmoebaMultipoleForce
::
CovalentEnd
;
kk
++
)
{
covalentDegree
[
kk
]
=
CovalentDegrees
[
kk
];
}
return
;
...
...
@@ -187,12 +187,12 @@ void AmoebaMultipoleForceImpl::getInducedDipoles(ContextImpl& context, vector<Ve
kernel
.
getAs
<
CalcAmoebaMultipoleForceKernel
>
().
getInducedDipoles
(
context
,
dipoles
);
}
void
AmoebaMultipoleForceImpl
::
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
std
::
vector
<
double
>&
outputElectrostaticPotential
){
void
AmoebaMultipoleForceImpl
::
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
std
::
vector
<
double
>&
outputElectrostaticPotential
)
{
kernel
.
getAs
<
CalcAmoebaMultipoleForceKernel
>
().
getElectrostaticPotential
(
context
,
inputGrid
,
outputElectrostaticPotential
);
}
void
AmoebaMultipoleForceImpl
::
getSystemMultipoleMoments
(
ContextImpl
&
context
,
std
::
vector
<
double
>&
outputMultipoleMoments
){
void
AmoebaMultipoleForceImpl
::
getSystemMultipoleMoments
(
ContextImpl
&
context
,
std
::
vector
<
double
>&
outputMultipoleMoments
)
{
kernel
.
getAs
<
CalcAmoebaMultipoleForceKernel
>
().
getSystemMultipoleMoments
(
context
,
outputMultipoleMoments
);
}
...
...
plugins/amoeba/openmmapi/src/AmoebaOutOfPlaneBendForce.cpp
View file @
d95b90b9
...
...
@@ -48,7 +48,7 @@ double AmoebaOutOfPlaneBendForce::getAmoebaGlobalOutOfPlaneBendCubic() const {
return
_globalCubicK
;
}
void
AmoebaOutOfPlaneBendForce
::
setAmoebaGlobalOutOfPlaneBendCubic
(
double
cubicK
)
{
void
AmoebaOutOfPlaneBendForce
::
setAmoebaGlobalOutOfPlaneBendCubic
(
double
cubicK
)
{
_globalCubicK
=
cubicK
;
}
...
...
@@ -56,7 +56,7 @@ double AmoebaOutOfPlaneBendForce::getAmoebaGlobalOutOfPlaneBendQuartic() const {
return
_globalQuarticK
;
}
void
AmoebaOutOfPlaneBendForce
::
setAmoebaGlobalOutOfPlaneBendQuartic
(
double
quarticK
)
{
void
AmoebaOutOfPlaneBendForce
::
setAmoebaGlobalOutOfPlaneBendQuartic
(
double
quarticK
)
{
_globalQuarticK
=
quarticK
;
}
...
...
@@ -64,7 +64,7 @@ double AmoebaOutOfPlaneBendForce::getAmoebaGlobalOutOfPlaneBendPentic() const {
return
_globalPenticK
;
}
void
AmoebaOutOfPlaneBendForce
::
setAmoebaGlobalOutOfPlaneBendPentic
(
double
penticK
)
{
void
AmoebaOutOfPlaneBendForce
::
setAmoebaGlobalOutOfPlaneBendPentic
(
double
penticK
)
{
_globalPenticK
=
penticK
;
}
...
...
@@ -72,7 +72,7 @@ double AmoebaOutOfPlaneBendForce::getAmoebaGlobalOutOfPlaneBendSextic() const {
return
_globalSexticK
;
}
void
AmoebaOutOfPlaneBendForce
::
setAmoebaGlobalOutOfPlaneBendSextic
(
double
sexticK
)
{
void
AmoebaOutOfPlaneBendForce
::
setAmoebaGlobalOutOfPlaneBendSextic
(
double
sexticK
)
{
_globalSexticK
=
sexticK
;
}
...
...
@@ -82,7 +82,7 @@ int AmoebaOutOfPlaneBendForce::addOutOfPlaneBend(int particle1, int particle2, i
}
void
AmoebaOutOfPlaneBendForce
::
getOutOfPlaneBendParameters
(
int
index
,
int
&
particle1
,
int
&
particle2
,
int
&
particle3
,
int
&
particle4
,
double
&
k
)
const
{
double
&
k
)
const
{
particle1
=
outOfPlaneBends
[
index
].
particle1
;
particle2
=
outOfPlaneBends
[
index
].
particle2
;
particle3
=
outOfPlaneBends
[
index
].
particle3
;
...
...
Prev
1
2
3
4
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment