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
45ed59f8
Commit
45ed59f8
authored
Apr 25, 2008
by
Peter Eastman
Browse files
Moved obsolete GBSA reference code back to where it was before
parent
f3e77e33
Changes
45
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
0 additions
and
784 deletions
+0
-784
platforms/reference/src/Gbsa/gmxGbsa.h
platforms/reference/src/Gbsa/gmxGbsa.h
+0
-59
platforms/reference/src/Gbsa/gromacsCpuGrycukInterface.cpp
platforms/reference/src/Gbsa/gromacsCpuGrycukInterface.cpp
+0
-204
platforms/reference/src/Gbsa/gromacsCpuGrycukInterface.h
platforms/reference/src/Gbsa/gromacsCpuGrycukInterface.h
+0
-78
platforms/reference/src/Gbsa/gromacsCpuObcInterface.cpp
platforms/reference/src/Gbsa/gromacsCpuObcInterface.cpp
+0
-319
platforms/reference/src/Gbsa/gromacsCpuObcInterface.h
platforms/reference/src/Gbsa/gromacsCpuObcInterface.h
+0
-124
No files found.
platforms/reference/src/Gbsa/gmxGbsa.h
deleted
100644 → 0
View file @
f3e77e33
/* Portions copyright (c) 2006 Stanford University and Simbios.
* Contributors: Pande Group
*
* 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.
*/
#ifndef __GmxGbsa_H__
#define __GmxGbsa_H__
// Include gromacs types
#include "typedefs.h"
#ifdef __cplusplus
#define externC extern "C"
#else
#define externC extern
#endif
/* Set parameters for GBSA on CPU (Simbios) */
externC
int
cpuSetGbsaParameters
(
int
numberOfAtoms
,
const
t_topology
*
top
,
FILE
*
log
,
bool
includeAceApproximation
,
float
innerDielectric
,
float
solventDielectric
);
/* Calculate GBSA forces on CPU (Simbios) (test/example) */
externC
float
**
cpuCalculateGbsaForces
(
const
rvec
*
atomCoordinates
,
const
float
*
partialCharges
,
float
**
forces
,
FILE
*
log
);
/* Get GBSA energy */
externC
float
cpuGetEnergy
(
void
);
/* Delete Gbsa memory */
externC
int
cpuDeleteGbsaParameters
(
void
);
#endif
platforms/reference/src/Gbsa/gromacsCpuGrycukInterface.cpp
deleted
100644 → 0
View file @
f3e77e33
/* Portions copyright (c) 2006 Stanford University and Simbios.
* Contributors: Pande Group
*
* 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 "SimTKOpenMMGromacsUtilities.h"
#include "gromacsCpuGrycukInterface.h"
#include "cpuGrycukInterface.h"
#include "CpuGrycuk.h"
#include "SimTKOpenMMLog.h"
#include "SimTKOpenMMUtilities.h"
#include "SimTKOpenMMRealType.h"
/**---------------------------------------------------------------------------------------
Setup for Grycuk calculations from Gromacs
@param top Gromacs t_topology data struct
@param log log reference (stdlog in md.c)
@param includeAceApproximation if true, then include nonpolar
ACE term in calculations
@param soluteDielectric solute dielectric
@param solventDielectric solvent dielectric
The method creates a CpuGrycuk instance
The created object is a static member of the
class CpuGrycuk; when the force routine, cpuCalculateGrycukForces, is called,
the object is used to compute the forces and energy
The arrays atomicRadii & grycukScaleFactors are allocated off heap
@return 0
--------------------------------------------------------------------------------------- */
extern
"C"
int
gromacsCpuInitialSetupGrycuk
(
const
t_topology
*
top
,
FILE
*
log
,
int
includeAceApproximation
,
float
soluteDielectric
,
float
solventDielectric
){
// ---------------------------------------------------------------------------------------
static
const
char
*
methodName
=
"
\n
gromacsGrycukCpuInitialSetup: "
;
static
int
debug
=
true
;
// ---------------------------------------------------------------------------------------
// set log file, if available
fprintf
(
log
,
"%s %.3f %.3f %d"
,
methodName
,
soluteDielectric
,
solventDielectric
,
includeAceApproximation
);
fflush
(
log
);
if
(
soluteDielectric
<
1.0
){
soluteDielectric
=
1.0
f
;
}
if
(
solventDielectric
<
50.0
){
solventDielectric
=
78.3
f
;
}
if
(
log
){
SimTKOpenMMLog
::
setSimTKOpenMMLog
(
log
);
}
// Grycuk scale factors based on atomic mass
int
numberOfAtoms
=
top
->
atoms
.
nr
;
RealOpenMM
*
grycukScaleFactors
=
(
RealOpenMM
*
)
malloc
(
sizeof
(
RealOpenMM
)
*
numberOfAtoms
);
SimTKOpenMMGromacsUtilities
::
getObcScaleFactors
(
top
,
grycukScaleFactors
);
// get/set atomic radii (from file)
RealOpenMM
*
atomicRadii
=
(
RealOpenMM
*
)
malloc
(
sizeof
(
RealOpenMM
)
*
numberOfAtoms
);
std
::
string
parameterFileName
=
GrycukParameters
::
ParameterFileName
;
int
returnStatus
=
SimTKOpenMMGromacsUtilities
::
getMacroModelAtomicRadii
(
numberOfAtoms
,
parameterFileName
,
top
,
atomicRadii
);
// abort if problem reading parameter file
if
(
returnStatus
!=
SimTKOpenMMCommon
::
DefaultReturn
){
(
void
)
fprintf
(
(
log
?
log
:
stderr
),
"%s problem getting atomic radii from file=<%s>"
,
methodName
,
parameterFileName
.
c_str
()
);
(
void
)
fflush
(
log
);
exit
(
-
1
);
}
else
if
(
log
){
(
void
)
fprintf
(
log
,
"%s obtained atomic radii from file=<%s>"
,
methodName
,
parameterFileName
.
c_str
()
);
(
void
)
fflush
(
log
);
}
int
status
=
cpuSetGrycukParameters
(
numberOfAtoms
,
atomicRadii
,
grycukScaleFactors
,
includeAceApproximation
,
soluteDielectric
,
solventDielectric
,
log
);
// set flags so that atomicRadii & scaleFactor arrays are deleted
// if parameter array is deleted
CpuImplicitSolvent
*
cpuImplicitSolvent
=
CpuImplicitSolvent
::
getCpuImplicitSolvent
();
CpuGrycuk
*
cpuGrycuk
=
static_cast
<
CpuGrycuk
*>
(
cpuImplicitSolvent
);
GrycukParameters
*
grycukParameters
=
cpuGrycuk
->
getGrycukParameters
();
grycukParameters
->
setOwnAtomicRadii
(
true
);
grycukParameters
->
setOwnScaleFactors
(
true
);
return
status
;
}
/**---------------------------------------------------------------------------------------
Calculate Grycuk forces and energy
@param atomCoordinates Gromacs atom coordinates ('x' in md.c)
@param partialCharges Gromacs charges ('mdatoms->chargeA' in md.c)
@param forces output forces in kJ/mol.A; the computed forces
are added to the entries in the array
Function calls a static method in CpuGrycuk class to calculate forces/energy
@return 0
--------------------------------------------------------------------------------------- */
extern
"C"
int
gromacsCpuCalculateGrycukForces
(
const
rvec
*
atomCoordinates
,
const
RealOpenMM
*
partialChargesIn
,
rvec
*
forces
){
// ---------------------------------------------------------------------------------------
static
const
char
*
methodName
=
"
\n
gromacsCpuCalculateGrycukForces: "
;
static
RealOpenMM
*
partialCharges
=
NULL
;
static
RealOpenMM
**
coordinates
=
NULL
;
static
RealOpenMM
**
localForces
=
NULL
;
static
const
int
updateBornRadii
=
0
;
// ---------------------------------------------------------------------------------------
CpuImplicitSolvent
*
cpuImplicitSolvent
=
CpuImplicitSolvent
::
getCpuImplicitSolvent
();
if
(
cpuImplicitSolvent
==
NULL
){
(
void
)
fprintf
(
stderr
,
"%s implicit solvent not initialized -- aborting"
);
(
void
)
fflush
(
stderr
);
exit
(
-
1
);
}
int
numberOfAtoms
=
cpuImplicitSolvent
->
getNumberOfAtoms
();
// first time through, allocate memory for coordinates, ..
// Note: memory never freed!
if
(
coordinates
==
NULL
){
coordinates
=
SimTKOpenMMUtilities
::
allocateTwoDRealOpenMMArray
(
numberOfAtoms
,
3
,
NULL
,
true
,
(
RealOpenMM
)
0.0
);
localForces
=
SimTKOpenMMUtilities
::
allocateTwoDRealOpenMMArray
(
numberOfAtoms
,
3
,
NULL
,
true
,
(
RealOpenMM
)
0.0
);
// required if Gromacs float != RealOpenMM (i.e., RealOpenMM = double)
partialCharges
=
new
RealOpenMM
[
numberOfAtoms
];
for
(
int
ii
=
0
;
ii
<
numberOfAtoms
;
ii
++
){
partialCharges
[
ii
]
=
(
RealOpenMM
)
partialChargesIn
[
ii
];
}
}
// convert coordinates from nm -> Angstrom
RealOpenMM
distanceScaleFactor
=
(
RealOpenMM
)
10.0
;
for
(
int
ii
=
0
;
ii
<
numberOfAtoms
;
ii
++
){
coordinates
[
ii
][
0
]
=
(
RealOpenMM
)
(
distanceScaleFactor
*
atomCoordinates
[
ii
][
0
]);
coordinates
[
ii
][
1
]
=
(
RealOpenMM
)
(
distanceScaleFactor
*
atomCoordinates
[
ii
][
1
]);
coordinates
[
ii
][
2
]
=
(
RealOpenMM
)
(
distanceScaleFactor
*
atomCoordinates
[
ii
][
2
]);
}
CpuImplicitSolvent
::
computeImplicitSolventForces
(
coordinates
,
partialCharges
,
localForces
,
updateBornRadii
);
float
forceScaleFactor
=
0.4184
f
;
for
(
int
ii
=
0
;
ii
<
numberOfAtoms
;
ii
++
){
forces
[
ii
][
0
]
+=
(
float
)
forceScaleFactor
*
localForces
[
ii
][
0
];
forces
[
ii
][
1
]
+=
(
float
)
forceScaleFactor
*
localForces
[
ii
][
1
];
forces
[
ii
][
2
]
+=
(
float
)
forceScaleFactor
*
localForces
[
ii
][
2
];
}
//RealOpenMM energy = cpuImplicitSolvent->getEnergy();
//printf( "\ngromacsCpuCalculateGrycukForces E=%.5e", energy );
return
0
;
}
platforms/reference/src/Gbsa/gromacsCpuGrycukInterface.h
deleted
100644 → 0
View file @
f3e77e33
/* Portions copyright (c) 2006 Stanford University and Simbios.
* Contributors: Pande Group
*
* 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.
*/
#ifndef __GromacsCpuGrycukInterface_H__
#define __GromacsCpuGrycukInterface_H__
#ifdef __cplusplus
#define externC extern "C"
#else
#define externC extern
#endif
/**---------------------------------------------------------------------------------------
Setup for Grycuk calculations
@param top Gromacs t_topology (as in md.c)
@param log log reference (stdlog in md.c)
@param includeAceApproximation if true, then include nonpolar
ACE term in calculataions
@param soluteDielectric solute dielectric
@param solventDielectric solvent dielectric
Method creates a CpuGrycuk instance w/ Grycuk parameters set
The created object is a static member of the
class CpuGrycuk that is referenced to calculate the implicit solvation
forces and energy
@return 0
--------------------------------------------------------------------------------------- */
externC
int
gromacsCpuInitialSetupGrycuk
(
const
t_topology
*
top
,
FILE
*
log
,
int
includeAceApproximation
,
float
soluteDielectric
,
float
solventDielectric
);
/**---------------------------------------------------------------------------------------
Calculate Grycuk forces and energy
@param atomCoordinates Gromacs atom coordinates ('x' in md.c)
@param partialCharges Gromacs charges ('mdatoms->chargeA' in md.c)
@param forces output forces in kJ/mol.A; the computed forces
are added to the entries in the array
Function calls a static method in CpuGrycuk class to calculate forces/energy
@return 0
--------------------------------------------------------------------------------------- */
externC
int
gromacsCpuCalculateGrycukForces
(
const
rvec
*
atomCoordinates
,
const
float
*
partialChargesIn
,
rvec
*
forces
);
#endif
platforms/reference/src/Gbsa/gromacsCpuObcInterface.cpp
deleted
100644 → 0
View file @
f3e77e33
/* Portions copyright (c) 2006 Stanford University and Simbios.
* Contributors: Pande Group
*
* 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 "SimTKOpenMMGromacsUtilities.h"
#include "gromacsCpuObcInterface.h"
#include "cpuObcInterface.h"
#include "CpuObc.h"
#include "SimTKOpenMMLog.h"
#include "SimTKOpenMMUtilities.h"
#include "SimTKOpenMMRealType.h"
/**---------------------------------------------------------------------------------------
Setup for Obc calculations from Gromacs
@param top Gromacs t_topology data struct
@param log log reference (stdlog in md.c)
@param includeAceApproximation if true, then include nonpolar
ACE term in calculations
@param soluteDielectric solute dielectric
@param solventDielectric solvent dielectric
The method creates a CpuObc instance
The created object is a static member of the
class CpuObc; when the force routine, cpuCalculateObcForces, is called,
the object is used to compute the forces and energy
The arrays atomicRadii & obcScaleFactors are allocated off heap
@return 0
--------------------------------------------------------------------------------------- */
extern
"C"
int
gromacsCpuInitialSetupObc
(
const
t_topology
*
top
,
FILE
*
log
,
int
includeAceApproximation
,
float
soluteDielectric
,
float
solventDielectric
){
// ---------------------------------------------------------------------------------------
static
const
char
*
methodName
=
"
\n
gromacsObcCpuInitialSetup: "
;
static
int
debug
=
true
;
// ---------------------------------------------------------------------------------------
// set log file, if available
fprintf
(
log
,
"%s %.3f %.3f %d"
,
methodName
,
soluteDielectric
,
solventDielectric
,
includeAceApproximation
);
fflush
(
log
);
if
(
soluteDielectric
<
1.0
){
soluteDielectric
=
1.0
f
;
}
if
(
solventDielectric
<
50.0
){
solventDielectric
=
78.3
f
;
}
if
(
log
){
SimTKOpenMMLog
::
setSimTKOpenMMLog
(
log
);
}
// OBC scale factors based on atomic mass
int
numberOfAtoms
=
top
->
atoms
.
nr
;
RealOpenMM
*
obcScaleFactors
=
(
RealOpenMM
*
)
malloc
(
sizeof
(
RealOpenMM
)
*
numberOfAtoms
);
SimTKOpenMMGromacsUtilities
::
getObcScaleFactors
(
top
,
obcScaleFactors
);
// get/set atomic radii (from file)
RealOpenMM
*
atomicRadii
=
(
RealOpenMM
*
)
malloc
(
sizeof
(
RealOpenMM
)
*
numberOfAtoms
);
std
::
string
parameterFileName
=
ObcParameters
::
ParameterFileName
;
int
returnStatus
=
SimTKOpenMMGromacsUtilities
::
getMacroModelAtomicRadii
(
numberOfAtoms
,
parameterFileName
,
top
,
atomicRadii
);
// abort if problem reading parameter file
if
(
returnStatus
!=
SimTKOpenMMCommon
::
DefaultReturn
){
(
void
)
fprintf
(
(
log
?
log
:
stderr
),
"%s problem getting atomic radii from file=<%s>"
,
methodName
,
parameterFileName
.
c_str
()
);
(
void
)
fflush
(
log
);
exit
(
-
1
);
}
else
if
(
log
){
(
void
)
fprintf
(
log
,
"%s obtained atomic radii from file=<%s>"
,
methodName
,
parameterFileName
.
c_str
()
);
(
void
)
fflush
(
log
);
}
int
status
=
cpuSetObcParameters
(
numberOfAtoms
,
atomicRadii
,
obcScaleFactors
,
includeAceApproximation
,
soluteDielectric
,
solventDielectric
,
log
);
// set flags so that atomicRadii & scaleFactor arrays are deleted
// if parameter array is deleted
CpuImplicitSolvent
*
cpuImplicitSolvent
=
CpuImplicitSolvent
::
getCpuImplicitSolvent
();
CpuObc
*
cpuObc
=
static_cast
<
CpuObc
*>
(
cpuImplicitSolvent
);
ObcParameters
*
obcParameters
=
cpuObc
->
getObcParameters
();
obcParameters
->
setOwnAtomicRadii
(
true
);
obcParameters
->
setOwnScaleFactors
(
true
);
return
status
;
}
/**---------------------------------------------------------------------------------------
Calculate Obc forces and energy
@param atomCoordinates Gromacs atom coordinates ('x' in md.c)
@param partialCharges Gromacs charges ('mdatoms->chargeA' in md.c)
@param forces output forces in kJ/mol.A; the computed forces
are added to the entries in the array
Function calls a static method in CpuObc class to calculate forces/energy
@return 0
--------------------------------------------------------------------------------------- */
extern
"C"
int
gromacsCpuCalculateObcForces
(
const
rvec
*
atomCoordinates
,
const
RealOpenMM
*
partialChargesIn
,
rvec
*
forces
){
// ---------------------------------------------------------------------------------------
static
const
char
*
methodName
=
"
\n
gromacsCpuCalculateObcForces: "
;
static
RealOpenMM
*
partialCharges
=
NULL
;
static
RealOpenMM
**
coordinates
=
NULL
;
static
RealOpenMM
**
localForces
=
NULL
;
static
const
int
updateBornRadii
=
0
;
static
int
debug
=
0
;
// ---------------------------------------------------------------------------------------
CpuImplicitSolvent
*
cpuImplicitSolvent
=
CpuImplicitSolvent
::
getCpuImplicitSolvent
();
if
(
cpuImplicitSolvent
==
NULL
){
(
void
)
fprintf
(
stderr
,
"%s implicit solvent not initialized -- aborting"
);
(
void
)
fflush
(
stderr
);
exit
(
-
1
);
}
int
numberOfAtoms
=
cpuImplicitSolvent
->
getNumberOfAtoms
();
// first time through, allocate memory for coordinates, ..
// Note: memory never freed!
if
(
coordinates
==
NULL
){
coordinates
=
SimTKOpenMMUtilities
::
allocateTwoDRealOpenMMArray
(
numberOfAtoms
,
3
,
NULL
,
true
,
(
RealOpenMM
)
0.0
);
localForces
=
SimTKOpenMMUtilities
::
allocateTwoDRealOpenMMArray
(
numberOfAtoms
,
3
,
NULL
,
true
,
(
RealOpenMM
)
0.0
);
// required if Gromacs float != RealOpenMM (i.e., RealOpenMM = double)
partialCharges
=
new
RealOpenMM
[
numberOfAtoms
];
for
(
int
ii
=
0
;
ii
<
numberOfAtoms
;
ii
++
){
partialCharges
[
ii
]
=
(
RealOpenMM
)
partialChargesIn
[
ii
];
}
}
// convert coordinates from nm -> Angstrom
RealOpenMM
distanceScaleFactor
=
(
RealOpenMM
)
10.0
;
//RealOpenMM distanceScaleFactor = (RealOpenMM) 1.0;
for
(
int
ii
=
0
;
ii
<
numberOfAtoms
;
ii
++
){
coordinates
[
ii
][
0
]
=
(
RealOpenMM
)
(
distanceScaleFactor
*
atomCoordinates
[
ii
][
0
]);
coordinates
[
ii
][
1
]
=
(
RealOpenMM
)
(
distanceScaleFactor
*
atomCoordinates
[
ii
][
1
]);
coordinates
[
ii
][
2
]
=
(
RealOpenMM
)
(
distanceScaleFactor
*
atomCoordinates
[
ii
][
2
]);
}
CpuImplicitSolvent
::
computeImplicitSolventForces
(
coordinates
,
partialCharges
,
localForces
,
updateBornRadii
);
float
forceScaleFactor
=
41.84
f
;
for
(
int
ii
=
0
;
ii
<
numberOfAtoms
;
ii
++
){
forces
[
ii
][
0
]
+=
(
float
)
forceScaleFactor
*
localForces
[
ii
][
0
];
forces
[
ii
][
1
]
+=
(
float
)
forceScaleFactor
*
localForces
[
ii
][
1
];
forces
[
ii
][
2
]
+=
(
float
)
forceScaleFactor
*
localForces
[
ii
][
2
];
}
if
(
debug
){
int
maxPrint
=
10
;
std
::
stringstream
message
;
message
<<
methodName
;
message
<<
"
\n
Sample OBC forces:
\n
"
;
for
(
int
ii
=
0
;
ii
<
numberOfAtoms
&&
ii
<
maxPrint
;
ii
++
){
message
<<
" "
<<
ii
<<
" Obc["
<<
forceScaleFactor
*
localForces
[
ii
][
0
]
<<
" "
<<
forceScaleFactor
*
localForces
[
ii
][
1
]
<<
" "
<<
forceScaleFactor
*
localForces
[
ii
][
2
];
message
<<
"] F["
<<
forces
[
ii
][
0
]
<<
" "
<<
forces
[
ii
][
1
]
<<
" "
<<
forces
[
ii
][
2
]
<<
"]"
<<
std
::
endl
;
}
SimTKOpenMMLog
::
printMessage
(
message
);
debug
=
0
;
}
//RealOpenMM energy = cpuImplicitSolvent->getEnergy();
//printf( "\ngromacsCpuCalculateObcForces E=%.5e", energy );
return
0
;
}
/**---------------------------------------------------------------------------------------
Write Tinker Xyz file
@param atomCoordinates Gromacs atom coordinates ('x' in md.c)
@param top Gromacs t_topology (as in md.c)
@param inputHeader xyz file header
@param inputXyzFileName xyz file name
@param log log file reference (may be NULL)
@return 0
--------------------------------------------------------------------------------------- */
extern
"C"
int
cpuWriteXyzFile
(
const
rvec
*
atomCoordinates
,
const
t_topology
*
top
,
const
char
*
inputHeader
,
const
char
*
inputXyzFileName
,
FILE
*
log
){
// ---------------------------------------------------------------------------------------
// static const char* methodName = "\ncpuWriteXyzFile: ";
// ---------------------------------------------------------------------------------------
// set logging, if log != NULL
if
(
log
){
SimTKOpenMMLog
::
setSimTKOpenMMLog
(
log
);
}
// set header & file name
std
::
string
header
;
if
(
inputHeader
){
header
=
std
::
string
(
inputHeader
);
}
else
{
header
=
"Test"
;
}
std
::
string
xyzFileName
;
if
(
inputXyzFileName
){
xyzFileName
=
std
::
string
(
inputXyzFileName
);
}
else
{
xyzFileName
=
"Test"
;
}
// write file
SimTKOpenMMGromacsUtilities
::
writeTinkerXyzFile
(
top
->
atoms
.
nr
,
atomCoordinates
,
header
,
xyzFileName
,
top
);
return
0
;
}
/**---------------------------------------------------------------------------------------
Read Xyz file
@param numberOfAtoms number of atoms
@param atomCoordinates Gromacs atom coordinates ('x' in md.c)
@param top Gromacs t_topology (as in md.c)
@param inputXyzFileName xyz file name
@param log log file reference (may be NULL)
@return 0
--------------------------------------------------------------------------------------- */
extern
"C"
int
cpuReadXyzFile
(
int
numberOfAtoms
,
rvec
*
atomCoordinates
,
const
t_topology
*
top
,
const
char
*
inputXyzFileName
,
FILE
*
log
){
// ---------------------------------------------------------------------------------------
// static const char* methodName = "\ncpuReadXyzFile: ";
// ---------------------------------------------------------------------------------------
// set logging, if log != NULL
if
(
log
){
SimTKOpenMMLog
::
setSimTKOpenMMLog
(
log
);
}
// set file name
const
char
*
xyzFileName
;
if
(
inputXyzFileName
){
xyzFileName
=
inputXyzFileName
;
}
else
{
xyzFileName
=
"Test"
;
}
// read file
SimTKOpenMMGromacsUtilities
::
readXyzFile
(
top
->
atoms
.
nr
,
atomCoordinates
,
top
,
xyzFileName
);
return
0
;
}
platforms/reference/src/Gbsa/gromacsCpuObcInterface.h
deleted
100644 → 0
View file @
f3e77e33
/* Portions copyright (c) 2006 Stanford University and Simbios.
* Contributors: Pande Group
*
* 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.
*/
#ifndef __GromacsCpuObcInterface_H__
#define __GromacsCpuObcInterface_H__
#ifdef __cplusplus
#define externC extern "C"
#else
#define externC extern
#endif
/**---------------------------------------------------------------------------------------
Setup for Obc calculations
@param top Gromacs t_topology (as in md.c)
@param log log reference (stdlog in md.c)
@param includeAceApproximation if true, then include nonpolar
ACE term in calculataions
@param soluteDielectric solute dielectric
@param solventDielectric solvent dielectric
Method creates a CpuObc instance w/ OBC parameters set
The created object is a static member of the
class CpuObc that is referenced to calculate the implicit solvation
forces and energy
@return 0
--------------------------------------------------------------------------------------- */
externC
int
gromacsCpuInitialSetupObc
(
const
t_topology
*
top
,
FILE
*
log
,
int
includeAceApproximation
,
float
soluteDielectric
,
float
solventDielectric
);
/**---------------------------------------------------------------------------------------
Calculate Obc forces and energy
@param atomCoordinates Gromacs atom coordinates ('x' in md.c)
@param partialCharges Gromacs charges ('mdatoms->chargeA' in md.c)
@param forces output forces in kJ/mol.A; the computed forces
are added to the entries in the array
Function calls a static method in CpuObc class to calculate forces/energy
@return 0
--------------------------------------------------------------------------------------- */
externC
int
gromacsCpuCalculateObcForces
(
const
rvec
*
atomCoordinates
,
const
float
*
partialChargesIn
,
rvec
*
forces
);
/**---------------------------------------------------------------------------------------
Read Xyz file
@param numberOfAtoms number of atoms
@param atomCoordinates Gromacs atom coordinates ('x' in md.c)
@param top Gromacs t_topology (as in md.c)
@param inputXyzFileName xyz file name
@param log log file reference (may be NULL)
@return 0
--------------------------------------------------------------------------------------- */
externC
int
cpuReadXyzFile
(
int
numberOfAtoms
,
rvec
*
atomCoordinates
,
const
t_topology
*
top
,
const
char
*
inputXyzFileName
,
FILE
*
log
);
/**---------------------------------------------------------------------------------------
Write Tinker Xyz file \n
@param atomCoordinates Gromacs atom coordinates ('x' in md.c)
@param top Gromacs t_topology (as in md.c)
@param inputHeader xyz file header
@param inputXyzFileName xyz file name
@param log log file reference (may be NULL)
@return 0
--------------------------------------------------------------------------------------- */
externC
int
cpuWriteXyzFile
(
const
rvec
*
atomCoordinates
,
const
t_topology
*
top
,
const
char
*
inputHeader
,
const
char
*
inputXyzFileName
,
FILE
*
log
);
/**---------------------------------------------------------------------------------------
Retrieve the calculated implicit solvation energy from the static class member
@return the calculated energy from the static class member
--------------------------------------------------------------------------------------- */
externC
float
cpuGetObcEnergy
(
void
);
#endif
Prev
1
2
3
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