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
655700e8
"...ssh:/git@developer.sourcefind.cn:2222/tsoc/openmm.git" did not exist on "c3e361d2476d00628c6abbae490b66abab834cb7"
Commit
655700e8
authored
Dec 10, 2008
by
Mark Friedrichs
Browse files
Need to commit to rename
parent
01199ddc
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
394 additions
and
0 deletions
+394
-0
platforms/brook/src/BrookCalcLJ14ForceKernel.cpp
platforms/brook/src/BrookCalcLJ14ForceKernel.cpp
+222
-0
platforms/brook/src/BrookCalcLJ14ForceKernel.h
platforms/brook/src/BrookCalcLJ14ForceKernel.h
+172
-0
No files found.
platforms/brook/src/BrookCalcLJ14ForceKernel.cpp
0 → 100644
View file @
655700e8
/* -------------------------------------------------------------------------- *
* OpenMM *
* -------------------------------------------------------------------------- *
* This is part of the OpenMM molecular simulation toolkit originating from *
* Simbios, the NIH National Center for Physics-Based Simulation of *
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* *
* Portions copyright (c) 2008 Stanford University and the Authors. *
* Authors: Peter Eastman, Mark Friedrichs *
* Contributors: *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the "Software"), *
* to deal in the Software without restriction, including without limitation *
* the rights to use, copy, modify, merge, publish, distribute, sublicense, *
* and/or sell copies of the Software, and to permit persons to whom the *
* Software is furnished to do so, subject to the following conditions: *
* *
* The above copyright notice and this permission notice shall be included in *
* all copies or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *
* THE AUTHORS, CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
* USE OR OTHER DEALINGS IN THE SOFTWARE. *
* -------------------------------------------------------------------------- */
#include "OpenMMException.h"
#include <sstream>
#include "BrookCalcHarmonicLJ14ForceKernel.h"
using
namespace
OpenMM
;
using
namespace
std
;
const
std
::
string
BrookCalcHarmonicLJ14ForceKernel
::
BondName
=
"HarmonicLJ14"
;
/**
* BrookCalcHarmonicLJ14ForceKernel constructor
*
* @param name kernel name
* @param platform platform
* @param OpenMMBrookInterface OpenMM-Brook interface
* @param System System reference
*
*/
BrookCalcHarmonicLJ14ForceKernel
::
BrookCalcHarmonicLJ14ForceKernel
(
std
::
string
name
,
const
Platform
&
platform
,
OpenMMBrookInterface
&
openMMBrookInterface
,
System
&
system
)
:
CalcHarmonicLJ14ForceKernel
(
name
,
platform
),
_openMMBrookInterface
(
openMMBrookInterface
),
_system
(
system
){
// ---------------------------------------------------------------------------------------
// static const std::string methodName = "BrookCalcHarmonicLJ14ForceKernel::BrookCalcHarmonicLJ14ForceKernel";
// static const int debug = 1;
// ---------------------------------------------------------------------------------------
_brookBondParameters
=
NULL
;
_log
=
NULL
;
const
BrookPlatform
brookPlatform
=
dynamic_cast
<
const
BrookPlatform
&>
(
platform
);
if
(
brookPlatform
.
getLog
()
!=
NULL
){
setLog
(
brookPlatform
.
getLog
()
);
}
}
/**
* BrookCalcHarmonicLJ14ForceKernel destructor
*
*/
BrookCalcHarmonicLJ14ForceKernel
::~
BrookCalcHarmonicLJ14ForceKernel
(
){
// ---------------------------------------------------------------------------------------
// static const std::string methodName = "BrookCalcHarmonicLJ14ForceKernel::BrookCalcHarmonicLJ14ForceKernel";
// static const int debug = 1;
// ---------------------------------------------------------------------------------------
delete
_brookBondParameters
;
}
/**
* Get log file reference
*
* @return log file reference
*
*/
FILE
*
BrookCalcHarmonicLJ14ForceKernel
::
getLog
(
void
)
const
{
return
_log
;
}
/**
* Set log file reference
*
* @param log file reference
*
* @return DefaultReturnValue
*
*/
int
BrookCalcHarmonicLJ14ForceKernel
::
setLog
(
FILE
*
log
){
_log
=
log
;
return
BrookCommon
::
DefaultReturnValue
;
}
/**
* Initialize the kernel, setting up the values of all the force field parameters.
*
* @param system System reference
* @param force HarmonicLJ14Force reference
*
*/
void
BrookCalcHarmonicLJ14ForceKernel
::
initialize
(
const
System
&
system
,
const
HarmonicLJ14Force
&
force
){
// ---------------------------------------------------------------------------------------
static
const
std
::
string
methodName
=
"BrookCalcHarmonicLJ14ForceKernel::initialize"
;
// ---------------------------------------------------------------------------------------
FILE
*
log
=
getLog
();
// ---------------------------------------------------------------------------------------
// create _brookBondParameters object containing atom indices/parameters
int
numberOfBonds
=
force
.
getNumLJ14s
();
if
(
_brookBondParameters
){
delete
_brookBondParameters
;
}
_brookBondParameters
=
new
BrookBondParameters
(
BondName
,
NumberOfAtomsInBond
,
NumberOfParametersInBond
,
numberOfBonds
,
getLog
()
);
for
(
int
ii
=
0
;
ii
<
numberOfBonds
;
ii
++
){
int
particle1
,
particle2
,
particle3
;
double
angle
,
k
;
int
particles
[
NumberOfAtomsInBond
];
double
parameters
[
NumberOfParametersInBond
];
force
.
getLJ14Parameters
(
ii
,
particle1
,
particle2
,
particle3
,
angle
,
k
);
particles
[
0
]
=
particle1
;
particles
[
1
]
=
particle2
;
particles
[
2
]
=
particle3
;
parameters
[
0
]
=
angle
;
parameters
[
1
]
=
k
;
_brookBondParameters
->
setBond
(
ii
,
particles
,
parameters
);
}
_openMMBrookInterface
.
setHarmonicLJ14ForceParameters
(
_brookBondParameters
);
_openMMBrookInterface
.
setTriggerForceKernel
(
this
);
_openMMBrookInterface
.
setTriggerEnergyKernel
(
this
);
if
(
log
){
std
::
string
contents
=
_brookBondParameters
->
getContentsString
(
);
(
void
)
fprintf
(
log
,
"%s brookGbsa::contents
\n
%s"
,
methodName
.
c_str
(),
contents
.
c_str
()
);
(
void
)
fflush
(
log
);
}
// ---------------------------------------------------------------------------------------
}
/**
* Compute forces given atom coordinates
*
* @param context OpenMMContextImpl context
*
*/
void
BrookCalcHarmonicLJ14ForceKernel
::
executeForces
(
OpenMMContextImpl
&
context
){
// ---------------------------------------------------------------------------------------
//static const std::string methodName = "BrookCalcHarmonicLJ14ForceKernel::executeForces";
// ---------------------------------------------------------------------------------------
if
(
_openMMBrookInterface
.
getTriggerForceKernel
()
==
this
){
_openMMBrookInterface
.
computeForces
(
context
);
}
return
;
// ---------------------------------------------------------------------------------------
}
/**
* Execute the kernel to calculate the energy
*
* @param context OpenMMContextImpl context
*
* @return potential energy
*
*/
double
BrookCalcHarmonicLJ14ForceKernel
::
executeEnergy
(
OpenMMContextImpl
&
context
){
// ---------------------------------------------------------------------------------------
//static const std::string methodName = "BrookCalcHarmonicLJ14ForceKernel::executeEnergy";
// ---------------------------------------------------------------------------------------
if
(
_openMMBrookInterface
.
getTriggerEnergyKernel
()
==
this
){
return
(
double
)
_openMMBrookInterface
.
computeEnergy
(
context
);
}
else
{
return
0.0
;
}
}
platforms/brook/src/BrookCalcLJ14ForceKernel.h
0 → 100644
View file @
655700e8
#ifndef OPENMM_BROOK_CALC_LJ14_FORCE_KERNEL_H_
#define OPENMM_BROOK_CALC_LJ14_FORCE_KERNEL_H_
/* -------------------------------------------------------------------------- *
* OpenMM *
* -------------------------------------------------------------------------- *
* This is part of the OpenMM molecular simulation toolkit originating from *
* Simbios, the NIH National Center for Physics-Based Simulation of *
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* *
* Portions copyright (c) 2008 Stanford University and the Authors. *
* Authors: Peter Eastman, Mark Friedrichs *
* Contributors: *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the "Software"), *
* to deal in the Software without restriction, including without limitation *
* the rights to use, copy, modify, merge, publish, distribute, sublicense, *
* and/or sell copies of the Software, and to permit persons to whom the *
* Software is furnished to do so, subject to the following conditions: *
* *
* The above copyright notice and this permission notice shall be included in *
* all copies or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *
* THE AUTHORS, CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
* USE OR OTHER DEALINGS IN THE SOFTWARE. *
* -------------------------------------------------------------------------- */
#include "kernels.h"
#include "BrookPlatform.h"
#include "BrookBondParameters.h"
#include "OpenMMBrookInterface.h"
namespace
OpenMM
{
/**
* This kernel is invoked to calculate the harmonic angle forces acting on the system.
*/
class
BrookCalcHarmonicLJ14ForceKernel
:
public
CalcHarmonicLJ14ForceKernel
{
public:
/**
* BrookCalcHarmonicLJ14ForceKernel constructor
*/
BrookCalcHarmonicLJ14ForceKernel
(
std
::
string
name
,
const
Platform
&
platform
,
OpenMMBrookInterface
&
openMMBrookInterface
,
System
&
system
);
/**
* BrookCalcHarmonicLJ14ForceKernel destructor
*/
~
BrookCalcHarmonicLJ14ForceKernel
();
/**
* Initialize the kernel, setting up the values to calculate harmonic bond force & energy
*
* @param system System reference
* @param force HarmonicLJ14Force reference
*
*/
void
initialize
(
const
System
&
system
,
const
HarmonicLJ14Force
&
force
);
/**
* Execute the kernel to calculate the forces.
*
* @param positions atom coordiantes
* @param forces output forces
*
*/
void
executeForces
(
OpenMMContextImpl
&
context
);
/**
* Execute the kernel to calculate the energy.
*
* @param context the context in which to execute this kernel
*
* @return potential energy associated with the harmonic angle force
*
*/
double
executeEnergy
(
OpenMMContextImpl
&
context
);
/**
* Set log file reference
*
* @param log file reference
*
* @return DefaultReturnValue
*
*/
int
setLog
(
FILE
*
log
);
/*
* Get contents of object
*
* @param level of dump
*
* @return string containing contents
*
* */
std
::
string
getContents
(
int
level
)
const
;
/**
* Get log file reference
*
* @return log file reference
*
*/
FILE
*
getLog
(
void
)
const
;
/**
* Get number of bonds
*
* @return number of bonds
*
*/
int
getNumberOfBonds
(
void
)
const
;
/**
* Get indices/parameters
*
* @return BrookBondParameters containing atom indices/parameters
*
*/
BrookBondParameters
*
getBrookBondParameters
(
void
)
const
;
private:
static
const
int
NumberOfAtomsInBond
=
3
;
static
const
int
NumberOfParametersInBond
=
2
;
// bond name
static
const
std
::
string
BondName
;
// log file reference
FILE
*
_log
;
// Brook bond parameters
BrookBondParameters
*
_brookBondParameters
;
// interface
OpenMMBrookInterface
&
_openMMBrookInterface
;
// System reference
System
&
_system
;
};
}
// namespace OpenMM
#endif
/* OPENMM_BROOK_CALC_LJ14_FORCE_KERNEL_H_ */
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