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
513303d8
Commit
513303d8
authored
Jun 26, 2009
by
Michael Sherman
Browse files
Fortran Module now has bonded interface and more complete nonbond interface (untested).
parent
c8a984f8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
349 additions
and
68 deletions
+349
-68
examples/OpenMM_Module.f90
examples/OpenMM_Module.f90
+349
-68
No files found.
examples/OpenMM_Module.f90
View file @
513303d8
...
...
@@ -55,6 +55,9 @@ module OpenMM_Types
type
OpenMM_Vec3Array
character
,
pointer
::
handle
=>
NULL
()
end
type
type
OpenMM_BondArray
character
,
pointer
::
handle
=>
NULL
()
end
type
type
OpenMM_String
character
,
pointer
::
handle
=>
NULL
()
end
type
...
...
@@ -68,6 +71,15 @@ module OpenMM_Types
type
OpenMM_GBSAOBCForce
character
,
pointer
::
handle
=>
NULL
()
end
type
type
OpenMM_HarmonicBondForce
character
,
pointer
::
handle
=>
NULL
()
end
type
type
OpenMM_HarmonicAngleForce
character
,
pointer
::
handle
=>
NULL
()
end
type
type
OpenMM_PeriodicTorsionForce
character
,
pointer
::
handle
=>
NULL
()
end
type
type
OpenMM_VerletIntegrator
character
,
pointer
::
handle
=>
NULL
()
end
type
...
...
@@ -103,56 +115,61 @@ module OpenMM_Types
end
module
OpenMM_Types
module
OpenMM
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
interface
! -------------------------
! OpenMM::Vec3Array
! -------------------------
! OpenMM_Vec3Array is an interface to the std::vector<Vec3>
! arrays used in various contexts by OpenMM. It is not the
! same as a Fortran array of Vec3s would be.
! You can create this with zero elements and then
! append to it and it will grow as needed.
subroutine
OpenMM_Vec3Array_create
(
array
,
n
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Vec3Array
)
array
integer
*
4
n
end
function
OpenMM_Vec3Array_size
(
array
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
integer
*
4
OpenMM_Vec3Array_size
type
(
OpenMM_Vec3Array
)
array
end
subroutine
OpenMM_Vec3Array_resize
(
array
,
n
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Vec3Array
)
array
integer
*
4
n
end
subroutine
OpenMM_Vec3Array_destroy
(
array
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Vec3Array
)
array
end
subroutine
OpenMM_Vec3Array_append
(
array
,
v3
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Vec3Array
)
array
real
*
8
v3
(
3
)
end
subroutine
OpenMM_Vec3Array_get
(
array
,
i
,
v3
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Vec3Array
)
array
integer
*
4
i
real
*
8
,
intent
(
out
)
::
v3
(
3
)
end
subroutine
OpenMM_Vec3Array_getScaled
(
array
,
i
,
s
,
v3
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Vec3Array
)
array
integer
*
4
i
real
*
8
s
real
*
8
,
intent
(
out
)
::
v3
(
3
)
end
subroutine
OpenMM_Vec3Array_set
(
array
,
i
,
v3
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Vec3Array
)
array
integer
*
4
i
real
*
8
,
intent
(
in
)
::
v3
(
3
)
end
subroutine
OpenMM_Vec3Array_setScaled
(
array
,
i
,
v3
,
s
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Vec3Array
)
array
integer
*
4
i
real
*
8
,
intent
(
in
)
::
v3
(
3
)
...
...
@@ -164,288 +181,552 @@ module OpenMM
real
*
8
,
intent
(
out
)
::
v3out
(
3
)
end
! -------------------------
! OpenMM::BondArray
! -------------------------
! OpenMM_BondArray is an interface to the
! std::vector<std::pair<int,int>> arrays used for
! bond lists by OpenMM. It is not the
! same as a Fortran array of integer(2)'s would be.
! You can create this with zero elements and then
! append to it and it will grow as needed.
subroutine
OpenMM_BondArray_create
(
array
,
n
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_BondArray
)
array
integer
*
4
n
end
function
OpenMM_BondArray_size
(
array
)
use
OpenMM_Types
;
implicit
none
integer
*
4
OpenMM_BondArray_size
type
(
OpenMM_BondArray
)
array
end
subroutine
OpenMM_BondArray_resize
(
array
,
n
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_BondArray
)
array
integer
*
4
n
end
subroutine
OpenMM_BondArray_destroy
(
array
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_BondArray
)
array
end
subroutine
OpenMM_BondArray_append
(
array
,
p1
,
p2
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_BondArray
)
array
integer
*
4
p1
,
p2
end
subroutine
OpenMM_BondArray_get
(
array
,
i
,
p1
,
p2
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_BondArray
)
array
integer
*
4
i
integer
*
4
p1
,
p2
end
subroutine
OpenMM_BondArray_set
(
array
,
i
,
p1
,
p2
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_BondArray
)
array
integer
*
4
i
integer
*
4
p1
,
p2
end
! -------------------------
! OpenMM::String
! -------------------------
! OpenMM_String is an interface to std::string, with some
! crude ability to copy from and out to fixed-size Fortran
! character arrays (with blank padding).
subroutine
OpenMM_String_create
(
string
,
initVal
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_String
)
string
character
(
*
)
initVal
end
subroutine
OpenMM_String_destroy
(
string
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_String
)
string
end
function
OpenMM_String_length
(
string
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
integer
*
4
OpenMM_String_length
type
(
OpenMM_String
)
string
end
subroutine
OpenMM_String_get
(
string
,
fstring
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_String
)
string
character
(
*
)
fstring
end
subroutine
OpenMM_String_set
(
string
,
fstring
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_String
)
string
character
(
*
)
fstring
end
! -------------------------
! OpenMM::Platform
! -------------------------
subroutine
OpenMM_Platform_loadPluginsFromDirectory
(
dirName
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_String
)
dirName
end
subroutine
OpenMM_Platform_getDefaultPluginsDirectory
(
dirName
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_String
)
dirName
end
! -------------------------
! OpenMM::System
! -------------------------
subroutine
OpenMM_System_create
(
system
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_System
)
system
end
subroutine
OpenMM_System_destroy
(
system
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_System
)
system
end
subroutine
OpenMM_System_addForce
(
system
,
force
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_System
)
system
type
(
OpenMM_Force
)
force
end
subroutine
OpenMM_System_addParticle
(
system
,
mass
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_System
)
system
real
*
8
mass
end
! -------------------------
! OpenMM::NonbondedForce
! -------------------------
subroutine
OpenMM_NonbondedForce_create
(
nonbond
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
end
subroutine
OpenMM_NonbondedForce_destroy
(
nonbond
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
end
subroutine
OpenMM_NonbondedForce_asForce
(
nonbond
,
force
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
type
(
OpenMM_Force
)
force
end
subroutine
OpenMM_NonbondedForce_setNonbondedMethod
(
nonbond
,
method
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
method
end
function
OpenMM_NonbondedForce_getNonbondedMethod
(
nonbond
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
OpenMM_NonbondedForce_getNonbondedMethod
end
subroutine
OpenMM_NonbondedForce_setCutoffDistance
(
nonbond
,
distanceInNm
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
real
*
8
,
intent
(
in
)
::
distanceInNm
end
function
OpenMM_NonbondedForce_getCutoffDistance
(
nonbond
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
real
*
8
d
istance
InNm
real
*
8
OpenMM_NonbondedForce_getCutoffD
istance
end
subroutine
OpenMM_NonbondedForce_setPeriodicBoxVectors
(
nonbond
,
a
,
b
,
c
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
real
*
8
a
(
3
),
b
(
3
),
c
(
3
)
end
subroutine
OpenMM_NonbondedForce_getPeriodicBoxVectors
(
nonbond
,
a
,
b
,
c
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
real
*
8
a
(
3
),
b
(
3
),
c
(
3
)
end
subroutine
OpenMM_NonbondedForce_addParticle
&
function
OpenMM_NonbondedForce_addParticle
&
(
nonbond
,
charge
,
sigmaInNm
,
vdwEnergyInKJ
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
OpenMM_NonbondedForce_addParticle
real
*
8
charge
,
sigmaInNm
,
vdwEnergyInKJ
end
subroutine
OpenMM_NonbondedForce_setParticleParameters
&
(
nonbond
,
ix
,
charge
,
sigmaInNm
,
vdwEnergyInKJ
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
ix
real
*
8
charge
,
sigmaInNm
,
vdwEnergyInKJ
end
subroutine
OpenMM_NonbondedForce_getParticleParameters
&
(
nonbond
,
ix
,
charge
,
sigmaInNm
,
vdwEnergyInKJ
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
ix
real
*
8
charge
,
sigmaInNm
,
vdwEnergyInKJ
end
function
OpenMM_NonbondedForce_getNumParticles
(
nonbond
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
OpenMM_NonbondedForce_getNumParticles
end
function
OpenMM_NonbondedForce_getNumExceptions
(
nonbond
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
OpenMM_NonbondedForce_getNumExceptions
end
function
OpenMM_NonbondedForce_addException
&
(
nonbond
,
p1
,
p2
,
chargeProd
,
sigmaInNm
,
vdwEnergyInKJ
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
OpenMM_NonbondedForce_addException
integer
*
4
p1
,
p2
real
*
8
chargeProd
,
sigmaInNm
,
vdwEnergyInKJ
end
subroutine
OpenMM_NonbondedForce_setExceptionParameters
&
(
nonbond
,
ix
,
p1
,
p2
,
chargeProd
,
sigmaInNm
,
vdwEnergyInKJ
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
ix
,
p1
,
p2
real
*
8
chargeProd
,
sigmaInNm
,
vdwEnergyInKJ
end
subroutine
OpenMM_NonbondedForce_getExceptionParameters
&
(
nonbond
,
ix
,
p1
,
p2
,
chargeProd
,
sigmaInNm
,
vdwEnergyInKJ
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
integer
*
4
ix
,
p1
,
p2
real
*
8
chargeProd
,
sigmaInNm
,
vdwEnergyInKJ
end
subroutine
OpenMM_NonbondedForce_createExceptionsFromBonds
&
(
nonbond
,
bonds
,
coulomb14Scale
,
lj14Scale
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_NonbondedForce
)
nonbond
type
(
OpenMM_BondArray
)
bonds
real
*
8
coulomb14Scale
,
lj14Scale
end
! -------------------------
! OpenMM::GBSAOBCForce
! -------------------------
subroutine
OpenMM_GBSAOBCForce_create
(
gbsa
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_GBSAOBCForce
)
gbsa
end
subroutine
OpenMM_GBSAOBCForce_destroy
(
gbsa
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_GBSAOBCForce
)
gbsa
end
subroutine
OpenMM_GBSAOBCForce_asForce
(
gbsa
,
force
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_GBSAOBCForce
)
gbsa
type
(
OpenMM_Force
)
force
type
(
OpenMM_Force
)
force
end
subroutine
OpenMM_GBSAOBCForce_setSolventDielectric
(
gbsa
,
d
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_GBSAOBCForce
)
gbsa
real
*
8
d
end
subroutine
OpenMM_GBSAOBCForce_setSoluteDielectric
(
gbsa
,
d
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_GBSAOBCForce
)
gbsa
real
*
8
d
end
subroutine
OpenMM_GBSAOBCForce_addParticle
&
(
gbsa
,
charge
,
radiusInNm
,
scalingFactor
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_GBSAOBCForce
)
gbsa
real
*
8
charge
,
radiusInNm
,
scalingFactor
end
! -------------------------
! OpenMM::HarmonicBondForce
! -------------------------
subroutine
OpenMM_HarmonicBondForce_create
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicBondForce
)
hbf
end
subroutine
OpenMM_HarmonicBondForce_destroy
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicBondForce
)
hbf
end
subroutine
OpenMM_HarmonicBondForce_asForce
(
hbf
,
force
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicBondForce
)
hbf
type
(
OpenMM_Force
)
force
end
function
OpenMM_HarmonicBondForce_getNumBonds
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicBondForce
)
hbf
integer
*
4
OpenMM_HarmonicBondForce_getNumBonds
end
function
OpenMM_HarmonicBondForce_addBond
(
hbf
,
p1
,
p2
,
length
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicBondForce
)
hbf
integer
*
4
OpenMM_HarmonicBondForce_addBond
integer
*
4
p1
,
p2
real
*
8
length
,
k
end
subroutine
OpenMM_HarmonicBondForce_setBondParameters
(
hbf
,
ix
,
p1
,
p2
,
length
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicBondForce
)
hbf
integer
*
4
ix
,
p1
,
p2
real
*
8
length
,
k
end
subroutine
OpenMM_HarmonicBondForce_getBondParameters
(
hbf
,
ix
,
p1
,
p2
,
length
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicBondForce
)
hbf
integer
*
4
ix
,
p1
,
p2
real
*
8
length
,
k
end
! --------------------------
! OpenMM::HarmonicAngleForce
! --------------------------
subroutine
OpenMM_HarmonicAngleForce_create
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicAngleForce
)
hbf
end
subroutine
OpenMM_HarmonicAngleForce_destroy
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicAngleForce
)
hbf
end
subroutine
OpenMM_HarmonicAngleForce_asForce
(
hbf
,
force
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicAngleForce
)
hbf
type
(
OpenMM_Force
)
force
end
function
OpenMM_HarmonicAngleForce_getNumAngles
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicAngleForce
)
hbf
integer
*
4
OpenMM_HarmonicAngleForce_getNumAngles
end
function
OpenMM_HarmonicAngleForce_addAngle
(
hbf
,
p1
,
p2
,
p3
,
angle
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicAngleForce
)
hbf
integer
*
4
OpenMM_HarmonicAngleForce_addAngle
integer
*
4
p1
,
p2
,
p3
real
*
8
angle
,
k
end
subroutine
OpenMM_HarmonicAngleForce_setAngleParameters
&
(
hbf
,
ix
,
p1
,
p2
,
p3
,
angle
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicAngleForce
)
hbf
integer
*
4
ix
,
p1
,
p2
,
p3
real
*
8
angle
,
k
end
subroutine
OpenMM_HarmonicAngleForce_getAngleParameters
&
(
hbf
,
ix
,
p1
,
p2
,
p3
,
angle
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_HarmonicAngleForce
)
hbf
integer
*
4
ix
,
p1
,
p2
,
p3
real
*
8
angle
,
k
end
! ----------------------------
! OpenMM::PeriodicTorsionForce
! ----------------------------
subroutine
OpenMM_PeriodicTorsionForce_create
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_PeriodicTorsionForce
)
hbf
end
subroutine
OpenMM_PeriodicTorsionForce_destroy
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_PeriodicTorsionForce
)
hbf
end
subroutine
OpenMM_PeriodicTorsionForce_asForce
(
hbf
,
force
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_PeriodicTorsionForce
)
hbf
type
(
OpenMM_Force
)
force
end
function
OpenMM_PeriodicTorsionForce_getNumTorsions
(
hbf
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_PeriodicTorsionForce
)
hbf
integer
*
4
OpenMM_PeriodicTorsionForce_getNumTorsions
end
function
OpenMM_PeriodicTorsionForce_addTorsion
&
(
hbf
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_PeriodicTorsionForce
)
hbf
integer
*
4
OpenMM_PeriodicTorsionForce_addTorsion
integer
*
4
p1
,
p2
,
p3
,
p4
,
periodicity
real
*
8
phase
,
k
end
subroutine
OpenMM_PeriodicTorsionForce_setTorsionParameters
&
(
hbf
,
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_PeriodicTorsionForce
)
hbf
integer
*
4
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
real
*
8
phase
,
k
end
subroutine
OpenMM_PeriodicTorsionForce_getTorsionParameters
&
(
hbf
,
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_PeriodicTorsionForce
)
hbf
integer
*
4
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
real
*
8
phase
,
k
end
! -------------------------
! OpenMM::Integrator
! -------------------------
subroutine
OpenMM_Integrator_step
(
integrator
,
numSteps
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Integrator
)
integrator
integer
*
4
numSteps
end
subroutine
OpenMM_Integrator_destroy
(
integrator
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Integrator
)
integrator
end
! -------------------------
! OpenMM::VerletIntegrator
! -------------------------
subroutine
OpenMM_VerletIntegrator_create
(
verlet
,
stepSzInPs
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_VerletIntegrator
)
verlet
real
*
8
stepSzInPs
end
subroutine
OpenMM_VerletIntegrator_destroy
(
verlet
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_VerletIntegrator
)
verlet
end
subroutine
OpenMM_VerletIntegrator_asIntegrator
(
verlet
,
integ
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_VerletIntegrator
)
verlet
type
(
OpenMM_Integrator
)
integ
end
subroutine
OpenMM_VerletIntegrator_step
(
verlet
,
numSteps
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_VerletIntegrator
)
verlet
integer
*
4
numSteps
end
! -------------------------
! OpenMM::LangevinIntegrator
! -------------------------
subroutine
OpenMM_LangevinIntegrator_create
&
(
langevin
,
temperature
,
frictionInPerPs
,
stepSzInPs
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_LangevinIntegrator
)
langevin
real
*
8
temperature
,
frictionInPerPs
,
stepSzInPs
end
subroutine
OpenMM_LangevinIntegrator_destroy
(
langevin
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_LangevinIntegrator
)
langevin
end
subroutine
OpenMM_LangevinIntegrator_asIntegrator
(
langevin
,
integ
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_LangevinIntegrator
)
langevin
type
(
OpenMM_Integrator
)
integ
end
subroutine
OpenMM_LangevinIntegrator_step
(
langevin
,
numSteps
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_LangevinIntegrator
)
langevin
integer
*
4
numSteps
end
! -------------------------
! OpenMM::Context
! -------------------------
subroutine
OpenMM_Context_create
(
context
,
system
,
integrator
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Context
)
context
type
(
OpenMM_System
)
system
type
(
OpenMM_Integrator
)
integrator
end
subroutine
OpenMM_Context_destroy
(
context
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Context
)
context
end
subroutine
OpenMM_Context_setPositions
(
context
,
positions
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Context
)
context
type
(
OpenMM_Vec3Array
)
positions
end
subroutine
OpenMM_Context_setVelocities
(
context
,
velocities
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Context
)
context
type
(
OpenMM_Vec3Array
)
velocities
end
subroutine
OpenMM_Context_createState
(
context
,
types
,
state
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Context
)
context
integer
*
4
types
type
(
OpenMM_State
)
state
end
subroutine
OpenMM_Context_getPlatformName
(
context
,
platformName
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_Context
)
context
character
(
*
)
platformName
end
! -------------------------
! OpenMM::State
! -------------------------
subroutine
OpenMM_State_destroy
(
state
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_State
)
state
end
function
OpenMM_State_getTime
(
state
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_State
)
state
real
*
8
OpenMM_State_getTime
end
function
OpenMM_State_getPotentialEnergy
(
state
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_State
)
state
real
*
8
OpenMM_State_getPotentialEnergy
end
function
OpenMM_State_getKineticEnergy
(
state
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_State
)
state
real
*
8
OpenMM_State_getKineticEnergy
end
subroutine
OpenMM_State_getPositions
(
state
,
positions
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_State
)
state
type
(
OpenMM_Vec3Array
)
positions
end
subroutine
OpenMM_State_getVelocities
(
state
,
velocities
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_State
)
state
type
(
OpenMM_Vec3Array
)
velocities
end
subroutine
OpenMM_RuntimeObjects_create
(
omm
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
end
subroutine
OpenMM_RuntimeObjects_clear
(
omm
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
end
subroutine
OpenMM_RuntimeObjects_destroy
(
omm
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
end
subroutine
OpenMM_RuntimeObjects_setSystem
(
omm
,
sys
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
type
(
OpenMM_System
)
sys
end
subroutine
OpenMM_RuntimeObjects_setIntegrator
(
omm
,
integ
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
type
(
OpenMM_Integrator
)
integ
end
subroutine
OpenMM_RuntimeObjects_setContext
(
omm
,
context
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
type
(
OpenMM_Context
)
context
end
subroutine
OpenMM_RuntimeObjects_getSystem
(
omm
,
sys
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
type
(
OpenMM_System
)
sys
end
subroutine
OpenMM_RuntimeObjects_getIntegrator
(
omm
,
integ
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
type
(
OpenMM_Integrator
)
integ
end
subroutine
OpenMM_RuntimeObjects_getContext
(
omm
,
context
)
use
OpenMM_Types
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_RuntimeObjects
)
omm
type
(
OpenMM_Context
)
context
end
...
...
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