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
df7f942c
Commit
df7f942c
authored
Jul 01, 2009
by
Michael Sherman
Browse files
Added wrappers for AndersenThermostat.
parent
705ec545
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
174 additions
and
25 deletions
+174
-25
examples/OpenMM_CWrapper.cpp
examples/OpenMM_CWrapper.cpp
+114
-24
examples/OpenMM_CWrapper.h
examples/OpenMM_CWrapper.h
+10
-0
examples/OpenMM_Module.f90
examples/OpenMM_Module.f90
+50
-1
No files found.
examples/OpenMM_CWrapper.cpp
View file @
df7f942c
...
@@ -679,6 +679,14 @@ void openmm_harmonicbondforce_destroy_(OpenMM_HarmonicBondForce*& doomed)
...
@@ -679,6 +679,14 @@ void openmm_harmonicbondforce_destroy_(OpenMM_HarmonicBondForce*& doomed)
void
OPENMM_HARMONICBONDFORCE_DESTROY
(
OpenMM_HarmonicBondForce
*&
doomed
)
void
OPENMM_HARMONICBONDFORCE_DESTROY
(
OpenMM_HarmonicBondForce
*&
doomed
)
{
OpenMM_HarmonicBondForce_destroy
(
doomed
);
doomed
=
0
;}
{
OpenMM_HarmonicBondForce_destroy
(
doomed
);
doomed
=
0
;}
// Fortran only: recast HarmonicBondForce as a Force.
void
openmm_harmonicbondforce_asforce_
(
OpenMM_HarmonicBondForce
*
const
&
hbf
,
OpenMM_Force
*&
force
)
{
force
=
(
OpenMM_Force
*
)
hbf
;
}
void
OPENMM_HARMONICBONDFORCE_ASFORCE
(
OpenMM_HarmonicBondForce
*
const
&
hbf
,
OpenMM_Force
*&
force
)
{
force
=
(
OpenMM_Force
*
)
hbf
;
}
// getNumBonds
// getNumBonds
int
OpenMM_HarmonicBondForce_getNumBonds
(
const
OpenMM_HarmonicBondForce
*
hbf
)
int
OpenMM_HarmonicBondForce_getNumBonds
(
const
OpenMM_HarmonicBondForce
*
hbf
)
{
return
((
const
HarmonicBondForce
*
)
hbf
)
->
getNumBonds
();
}
{
return
((
const
HarmonicBondForce
*
)
hbf
)
->
getNumBonds
();
}
...
@@ -734,6 +742,14 @@ void openmm_harmonicangleforce_destroy_(OpenMM_HarmonicAngleForce*& doomed)
...
@@ -734,6 +742,14 @@ void openmm_harmonicangleforce_destroy_(OpenMM_HarmonicAngleForce*& doomed)
void
OPENMM_HARMONICANGLEFORCE_DESTROY
(
OpenMM_HarmonicAngleForce
*&
doomed
)
void
OPENMM_HARMONICANGLEFORCE_DESTROY
(
OpenMM_HarmonicAngleForce
*&
doomed
)
{
OpenMM_HarmonicAngleForce_destroy
(
doomed
);
doomed
=
0
;}
{
OpenMM_HarmonicAngleForce_destroy
(
doomed
);
doomed
=
0
;}
// Fortran only: recast HarmonicAngleForce as a Force.
void
openmm_harmonicangleforce_asforce_
(
OpenMM_HarmonicAngleForce
*
const
&
haf
,
OpenMM_Force
*&
force
)
{
force
=
(
OpenMM_Force
*
)
haf
;
}
void
OPENMM_HARMONICANGLEFORCE_ASFORCE
(
OpenMM_HarmonicAngleForce
*
const
&
haf
,
OpenMM_Force
*&
force
)
{
force
=
(
OpenMM_Force
*
)
haf
;
}
// getNumAngles
// getNumAngles
int
OpenMM_HarmonicAngleForce_getNumAngles
(
const
OpenMM_HarmonicAngleForce
*
haf
)
int
OpenMM_HarmonicAngleForce_getNumAngles
(
const
OpenMM_HarmonicAngleForce
*
haf
)
{
return
((
const
HarmonicAngleForce
*
)
haf
)
->
getNumAngles
();
}
{
return
((
const
HarmonicAngleForce
*
)
haf
)
->
getNumAngles
();
}
...
@@ -790,38 +806,112 @@ void openmm_periodictorsionforce_destroy_(OpenMM_PeriodicTorsionForce*& doomed)
...
@@ -790,38 +806,112 @@ void openmm_periodictorsionforce_destroy_(OpenMM_PeriodicTorsionForce*& doomed)
void
OPENMM_PERIODICTORSIONFORCE_DESTROY
(
OpenMM_PeriodicTorsionForce
*&
doomed
)
void
OPENMM_PERIODICTORSIONFORCE_DESTROY
(
OpenMM_PeriodicTorsionForce
*&
doomed
)
{
OpenMM_PeriodicTorsionForce_destroy
(
doomed
);
doomed
=
0
;}
{
OpenMM_PeriodicTorsionForce_destroy
(
doomed
);
doomed
=
0
;}
// Fortran only: recast PeriodicTorsionForce as a Force.
void
openmm_periodictorsionforce_asforce_
(
OpenMM_PeriodicTorsionForce
*
const
&
ptf
,
OpenMM_Force
*&
force
)
{
force
=
(
OpenMM_Force
*
)
ptf
;
}
void
OPENMM_PERIODICTORSIONFORCE_ASFORCE
(
OpenMM_PeriodicTorsionForce
*
const
&
ptf
,
OpenMM_Force
*&
force
)
{
force
=
(
OpenMM_Force
*
)
ptf
;
}
// getNumTorsions
// getNumTorsions
int
OpenMM_PeriodicTorsionForce_getNumTorsions
(
const
OpenMM_PeriodicTorsionForce
*
ha
f
)
int
OpenMM_PeriodicTorsionForce_getNumTorsions
(
const
OpenMM_PeriodicTorsionForce
*
pt
f
)
{
return
((
const
PeriodicTorsionForce
*
)
ha
f
)
->
getNumTorsions
();
}
{
return
((
const
PeriodicTorsionForce
*
)
pt
f
)
->
getNumTorsions
();
}
int
openmm_periodictorsionforce_getnumangles_
(
const
OpenMM_PeriodicTorsionForce
*
const
&
ha
f
)
int
openmm_periodictorsionforce_getnumangles_
(
const
OpenMM_PeriodicTorsionForce
*
const
&
pt
f
)
{
return
OpenMM_PeriodicTorsionForce_getNumTorsions
(
ha
f
);
}
{
return
OpenMM_PeriodicTorsionForce_getNumTorsions
(
pt
f
);
}
int
OPENMM_PERIODICTORSIONFORCE_GETNUMANGLES
(
const
OpenMM_PeriodicTorsionForce
*
const
&
ha
f
)
int
OPENMM_PERIODICTORSIONFORCE_GETNUMANGLES
(
const
OpenMM_PeriodicTorsionForce
*
const
&
pt
f
)
{
return
OpenMM_PeriodicTorsionForce_getNumTorsions
(
ha
f
);
}
{
return
OpenMM_PeriodicTorsionForce_getNumTorsions
(
pt
f
);
}
// addTorsion
// addTorsion
int
OpenMM_PeriodicTorsionForce_addTorsion
(
OpenMM_PeriodicTorsionForce
*
ha
f
,
int
p1
,
int
p2
,
int
p3
,
int
p4
,
int
periodicity
,
double
phase
,
double
k
)
int
OpenMM_PeriodicTorsionForce_addTorsion
(
OpenMM_PeriodicTorsionForce
*
pt
f
,
int
p1
,
int
p2
,
int
p3
,
int
p4
,
int
periodicity
,
double
phase
,
double
k
)
{
return
((
PeriodicTorsionForce
*
)
ha
f
)
->
addTorsion
(
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
{
return
((
PeriodicTorsionForce
*
)
pt
f
)
->
addTorsion
(
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
int
openmm_periodictorsionforce_addtorsion_
(
OpenMM_PeriodicTorsionForce
*
const
&
ha
f
,
int
const
&
p1
,
int
const
&
p2
,
int
const
&
p3
,
int
const
&
p4
,
int
const
&
periodicity
,
double
const
&
phase
,
double
const
&
k
)
int
openmm_periodictorsionforce_addtorsion_
(
OpenMM_PeriodicTorsionForce
*
const
&
pt
f
,
int
const
&
p1
,
int
const
&
p2
,
int
const
&
p3
,
int
const
&
p4
,
int
const
&
periodicity
,
double
const
&
phase
,
double
const
&
k
)
{
return
OpenMM_PeriodicTorsionForce_addTorsion
(
ha
f
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
{
return
OpenMM_PeriodicTorsionForce_addTorsion
(
pt
f
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
int
OPENMM_PERIODICTORSIONFORCE_ADDTORSION
(
OpenMM_PeriodicTorsionForce
*
const
&
ha
f
,
int
const
&
p1
,
int
const
&
p2
,
int
const
&
p3
,
int
const
&
p4
,
int
const
&
periodicity
,
double
const
&
phase
,
double
const
&
k
)
int
OPENMM_PERIODICTORSIONFORCE_ADDTORSION
(
OpenMM_PeriodicTorsionForce
*
const
&
pt
f
,
int
const
&
p1
,
int
const
&
p2
,
int
const
&
p3
,
int
const
&
p4
,
int
const
&
periodicity
,
double
const
&
phase
,
double
const
&
k
)
{
return
OpenMM_PeriodicTorsionForce_addTorsion
(
ha
f
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
{
return
OpenMM_PeriodicTorsionForce_addTorsion
(
pt
f
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
// setTorsionParameters
// setTorsionParameters
void
OpenMM_PeriodicTorsionForce_setTorsionParameters
(
OpenMM_PeriodicTorsionForce
*
ha
f
,
int
ix
,
int
p1
,
int
p2
,
int
p3
,
int
p4
,
int
periodicity
,
double
phase
,
double
k
)
void
OpenMM_PeriodicTorsionForce_setTorsionParameters
(
OpenMM_PeriodicTorsionForce
*
pt
f
,
int
ix
,
int
p1
,
int
p2
,
int
p3
,
int
p4
,
int
periodicity
,
double
phase
,
double
k
)
{
((
PeriodicTorsionForce
*
)
ha
f
)
->
setTorsionParameters
(
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
{
((
PeriodicTorsionForce
*
)
pt
f
)
->
setTorsionParameters
(
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
void
openmm_periodictorsionforce_settorsionparameters_
(
OpenMM_PeriodicTorsionForce
*
const
&
ha
f
,
int
const
&
ix
,
int
const
&
p1
,
int
const
&
p2
,
int
const
&
p3
,
int
const
&
p4
,
int
const
&
periodicity
,
double
const
&
phase
,
double
const
&
k
)
void
openmm_periodictorsionforce_settorsionparameters_
(
OpenMM_PeriodicTorsionForce
*
const
&
pt
f
,
int
const
&
ix
,
int
const
&
p1
,
int
const
&
p2
,
int
const
&
p3
,
int
const
&
p4
,
int
const
&
periodicity
,
double
const
&
phase
,
double
const
&
k
)
{
OpenMM_PeriodicTorsionForce_setTorsionParameters
(
ha
f
,
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
{
OpenMM_PeriodicTorsionForce_setTorsionParameters
(
pt
f
,
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
void
OPENMM_PERIODICTORSIONFORCE_SETTORSIONPARAMETERS
(
OpenMM_PeriodicTorsionForce
*
const
&
ha
f
,
int
const
&
ix
,
int
const
&
p1
,
int
const
&
p2
,
int
const
&
p3
,
int
const
&
p4
,
int
const
&
periodicity
,
double
const
&
phase
,
double
const
&
k
)
void
OPENMM_PERIODICTORSIONFORCE_SETTORSIONPARAMETERS
(
OpenMM_PeriodicTorsionForce
*
const
&
pt
f
,
int
const
&
ix
,
int
const
&
p1
,
int
const
&
p2
,
int
const
&
p3
,
int
const
&
p4
,
int
const
&
periodicity
,
double
const
&
phase
,
double
const
&
k
)
{
OpenMM_PeriodicTorsionForce_setTorsionParameters
(
ha
f
,
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
{
OpenMM_PeriodicTorsionForce_setTorsionParameters
(
pt
f
,
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
,
phase
,
k
);
}
// getTorsionParameters
// getTorsionParameters
void
OpenMM_PeriodicTorsionForce_getTorsionParameters
(
const
OpenMM_PeriodicTorsionForce
*
ha
f
,
int
ix
,
void
OpenMM_PeriodicTorsionForce_getTorsionParameters
(
const
OpenMM_PeriodicTorsionForce
*
pt
f
,
int
ix
,
int
*
p1
,
int
*
p2
,
int
*
p3
,
int
*
p4
,
int
*
periodicity
,
double
*
phase
,
double
*
k
)
int
*
p1
,
int
*
p2
,
int
*
p3
,
int
*
p4
,
int
*
periodicity
,
double
*
phase
,
double
*
k
)
{
((
const
PeriodicTorsionForce
*
)
haf
)
->
getTorsionParameters
(
ix
,
*
p1
,
*
p2
,
*
p3
,
*
p4
,
*
periodicity
,
*
phase
,
*
k
);
}
{
((
const
PeriodicTorsionForce
*
)
ptf
)
->
getTorsionParameters
(
ix
,
*
p1
,
*
p2
,
*
p3
,
*
p4
,
*
periodicity
,
*
phase
,
*
k
);
}
void
openmm_periodictorsionforce_gettorsionparameters_
(
const
OpenMM_PeriodicTorsionForce
*
const
&
haf
,
int
const
&
ix
,
int
&
p1
,
int
&
p2
,
int
&
p3
,
int
&
p4
,
int
&
periodicity
,
double
&
phase
,
double
&
k
)
void
openmm_periodictorsionforce_gettorsionparameters_
(
const
OpenMM_PeriodicTorsionForce
*
const
&
ptf
,
int
const
&
ix
,
int
&
p1
,
int
&
p2
,
int
&
p3
,
int
&
p4
,
int
&
periodicity
,
double
&
phase
,
double
&
k
)
{
OpenMM_PeriodicTorsionForce_getTorsionParameters
(
haf
,
ix
,
&
p1
,
&
p2
,
&
p3
,
&
p4
,
&
periodicity
,
&
phase
,
&
k
);
}
{
OpenMM_PeriodicTorsionForce_getTorsionParameters
(
ptf
,
ix
,
&
p1
,
&
p2
,
&
p3
,
&
p4
,
&
periodicity
,
&
phase
,
&
k
);
}
void
OPENMM_PERIODICTORSIONFORCE_GETTORSIONPARAMETERS
(
const
OpenMM_PeriodicTorsionForce
*
const
&
haf
,
int
const
&
ix
,
int
&
p1
,
int
&
p2
,
int
&
p3
,
int
&
p4
,
int
&
periodicity
,
double
&
phase
,
double
&
k
)
void
OPENMM_PERIODICTORSIONFORCE_GETTORSIONPARAMETERS
(
const
OpenMM_PeriodicTorsionForce
*
const
&
ptf
,
int
const
&
ix
,
int
&
p1
,
int
&
p2
,
int
&
p3
,
int
&
p4
,
int
&
periodicity
,
double
&
phase
,
double
&
k
)
{
OpenMM_PeriodicTorsionForce_getTorsionParameters
(
haf
,
ix
,
&
p1
,
&
p2
,
&
p3
,
&
p4
,
&
periodicity
,
&
phase
,
&
k
);
}
{
OpenMM_PeriodicTorsionForce_getTorsionParameters
(
ptf
,
ix
,
&
p1
,
&
p2
,
&
p3
,
&
p4
,
&
periodicity
,
&
phase
,
&
k
);
}
////////////////////////////////
// OpenMM::AndersenThermostat //
////////////////////////////////
// create
OpenMM_AndersenThermostat
*
OpenMM_AndersenThermostat_create
(
double
temp
,
double
collisionFreqInPerPs
)
{
return
(
OpenMM_AndersenThermostat
*
)
new
AndersenThermostat
(
temp
,
collisionFreqInPerPs
);
}
void
openmm_andersenthermostat_create_
(
OpenMM_AndersenThermostat
*&
frc
,
double
const
&
temp
,
double
const
&
freq
)
{
frc
=
OpenMM_AndersenThermostat_create
(
temp
,
freq
);}
void
OPENMM_ANDERSENTHERMOSTAT_CREATE
(
OpenMM_AndersenThermostat
*&
frc
,
double
const
&
temp
,
double
const
&
freq
)
{
frc
=
OpenMM_AndersenThermostat_create
(
temp
,
freq
);}
// destroy
void
OpenMM_AndersenThermostat_destroy
(
OpenMM_AndersenThermostat
*
doomed
)
{
delete
(
AndersenThermostat
*
)
doomed
;
}
void
openmm_andersenthermostat_destroy_
(
OpenMM_AndersenThermostat
*&
doomed
)
{
OpenMM_AndersenThermostat_destroy
(
doomed
);
doomed
=
0
;}
void
OPENMM_ANDERSENTHERMOSTAT_DESTROY
(
OpenMM_AndersenThermostat
*&
doomed
)
{
OpenMM_AndersenThermostat_destroy
(
doomed
);
doomed
=
0
;}
// Fortran only: recast AndersenThermostat as a Force.
void
openmm_andersenthermostat_asforce_
(
OpenMM_AndersenThermostat
*
const
&
at
,
OpenMM_Force
*&
force
)
{
force
=
(
OpenMM_Force
*
)
at
;
}
void
OPENMM_ANDERSENTHERMOSTAT_ASFORCE
(
OpenMM_AndersenThermostat
*
const
&
at
,
OpenMM_Force
*&
force
)
{
force
=
(
OpenMM_Force
*
)
at
;
}
// For compatibility with preview release 3 where getDefaultTemperature() and
// getDefaultCollisionFrequency() were accidentally declared nonconst, we're
// using const_cast<> here; that will be unnecessary (but harmless) later.
// getDefaultTemperature
double
OpenMM_AndersenThermostat_getDefaultTemperature
(
const
OpenMM_AndersenThermostat
*
at
)
{
return
const_cast
<
AndersenThermostat
*>
((
const
AndersenThermostat
*
)
at
)
->
getDefaultTemperature
();
}
double
openmm_andersenthermostat_getdefaulttemperature_
(
const
OpenMM_AndersenThermostat
*
const
&
at
)
{
return
OpenMM_AndersenThermostat_getDefaultTemperature
(
at
);
}
double
OPENMM_ANDERSENTHERMOSTAT_GETDEFAULTTEMPERATURE
(
const
OpenMM_AndersenThermostat
*
const
&
at
)
{
return
OpenMM_AndersenThermostat_getDefaultTemperature
(
at
);
}
// getDefaultCollisionFrequency
double
OpenMM_AndersenThermostat_getDefaultCollisionFrequency
(
const
OpenMM_AndersenThermostat
*
at
)
{
return
const_cast
<
AndersenThermostat
*>
((
const
AndersenThermostat
*
)
at
)
->
getDefaultCollisionFrequency
();
}
double
openmm_andersenthermostat_getdefaultcollisionfrequency_
(
const
OpenMM_AndersenThermostat
*
const
&
at
)
{
return
OpenMM_AndersenThermostat_getDefaultCollisionFrequency
(
at
);
}
double
OPENMM_ANDERSENTHERMOSTAT_GETDEFAULTCOLLISIONFREQUENCY
(
const
OpenMM_AndersenThermostat
*
const
&
at
)
{
return
OpenMM_AndersenThermostat_getDefaultCollisionFrequency
(
at
);
}
// getRandomNumberSeed
int
OpenMM_AndersenThermostat_getRandomNumberSeed
(
const
OpenMM_AndersenThermostat
*
at
)
{
return
((
const
AndersenThermostat
*
)
at
)
->
getRandomNumberSeed
();
}
int
openmm_andersenthermostat_getrandomnumberseed_
(
const
OpenMM_AndersenThermostat
*
const
&
at
)
{
return
OpenMM_AndersenThermostat_getRandomNumberSeed
(
at
);
}
int
OPENMM_ANDERSENTHERMOSTAT_GETRANDOMNUMBERSEED
(
const
OpenMM_AndersenThermostat
*
const
&
at
)
{
return
OpenMM_AndersenThermostat_getRandomNumberSeed
(
at
);
}
// setRandomNumberSeed
void
OpenMM_AndersenThermostat_setRandomNumberSeed
(
OpenMM_AndersenThermostat
*
at
,
int
seed
)
{
((
AndersenThermostat
*
)
at
)
->
setRandomNumberSeed
(
seed
);
}
void
openmm_andersenthermostat_setrandomnumberseed_
(
OpenMM_AndersenThermostat
*
const
&
at
,
int
const
&
seed
)
{
OpenMM_AndersenThermostat_setRandomNumberSeed
(
at
,
seed
);
}
void
OPENMM_ANDERSENTHERMOSTAT_SETRANDOMNUMBERSEED
(
OpenMM_AndersenThermostat
*
const
&
at
,
int
const
&
seed
)
{
OpenMM_AndersenThermostat_setRandomNumberSeed
(
at
,
seed
);
}
////////////////////////
////////////////////////
...
...
examples/OpenMM_CWrapper.h
View file @
df7f942c
...
@@ -67,6 +67,7 @@ typedef struct OpenMM_GBSAOBCForce_s OpenMM_GBSAOBCForce;
...
@@ -67,6 +67,7 @@ typedef struct OpenMM_GBSAOBCForce_s OpenMM_GBSAOBCForce;
typedef
struct
OpenMM_HarmonicBondForce_s
OpenMM_HarmonicBondForce
;
typedef
struct
OpenMM_HarmonicBondForce_s
OpenMM_HarmonicBondForce
;
typedef
struct
OpenMM_HarmonicAngleForce_s
OpenMM_HarmonicAngleForce
;
typedef
struct
OpenMM_HarmonicAngleForce_s
OpenMM_HarmonicAngleForce
;
typedef
struct
OpenMM_PeriodicTorsionForce_s
OpenMM_PeriodicTorsionForce
;
typedef
struct
OpenMM_PeriodicTorsionForce_s
OpenMM_PeriodicTorsionForce
;
typedef
struct
OpenMM_AndersenThermostat_s
OpenMM_AndersenThermostat
;
typedef
enum
{
typedef
enum
{
OpenMM_NonbondedForce_NoCutoff
=
0
,
OpenMM_NonbondedForce_NoCutoff
=
0
,
...
@@ -261,6 +262,15 @@ extern void OpenMM_PeriodicTorsionForce_getTorsionParameters(const OpenMM_Period
...
@@ -261,6 +262,15 @@ extern void OpenMM_PeriodicTorsionForce_getTorsionParameters(const OpenMM_Period
extern
void
OpenMM_PeriodicTorsionForce_setTorsionParameters
(
OpenMM_PeriodicTorsionForce
*
,
int
ix
,
int
p1
,
int
p2
,
int
p3
,
int
p4
,
extern
void
OpenMM_PeriodicTorsionForce_setTorsionParameters
(
OpenMM_PeriodicTorsionForce
*
,
int
ix
,
int
p1
,
int
p2
,
int
p3
,
int
p4
,
int
periodicity
,
double
phase
,
double
k
);
int
periodicity
,
double
phase
,
double
k
);
/* OpenMM::AndersenThermostat */
extern
OpenMM_AndersenThermostat
*
OpenMM_AndersenThermostat_create
(
double
temp
,
double
collisionFreqInPerPs
);
extern
void
OpenMM_AndersenThermostat_destroy
(
OpenMM_AndersenThermostat
*
);
extern
double
OpenMM_AndersenThermostat_getDefaultTemperature
(
const
OpenMM_AndersenThermostat
*
);
extern
double
OpenMM_AndersenThermostat_getDefaultCollisionFrequency
(
const
OpenMM_AndersenThermostat
*
);
extern
int
OpenMM_AndersenThermostat_getRandomNumberSeed
(
const
OpenMM_AndersenThermostat
*
);
extern
void
OpenMM_AndersenThermostat_setRandomNumberSeed
(
OpenMM_AndersenThermostat
*
,
int
seed
);
/* OpenMM::Integrator */
/* OpenMM::Integrator */
extern
void
OpenMM_Integrator_step
(
OpenMM_Integrator
*
,
int
numSteps
);
extern
void
OpenMM_Integrator_step
(
OpenMM_Integrator
*
,
int
numSteps
);
extern
void
OpenMM_Integrator_destroy
(
OpenMM_Integrator
*
);
extern
void
OpenMM_Integrator_destroy
(
OpenMM_Integrator
*
);
...
...
examples/OpenMM_Module.f90
View file @
df7f942c
...
@@ -92,6 +92,9 @@ MODULE OpenMM_Types
...
@@ -92,6 +92,9 @@ MODULE OpenMM_Types
type
OpenMM_PeriodicTorsionForce
type
OpenMM_PeriodicTorsionForce
integer
*
8
::
handle
=
0
integer
*
8
::
handle
=
0
end
type
end
type
type
OpenMM_AndersenThermostat
integer
*
8
::
handle
=
0
end
type
type
OpenMM_VerletIntegrator
type
OpenMM_VerletIntegrator
integer
*
8
::
handle
=
0
integer
*
8
::
handle
=
0
end
type
end
type
...
@@ -683,7 +686,53 @@ MODULE OpenMM
...
@@ -683,7 +686,53 @@ MODULE OpenMM
integer
*
4
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
integer
*
4
ix
,
p1
,
p2
,
p3
,
p4
,
periodicity
real
*
8
phase
,
k
real
*
8
phase
,
k
end
end
! --------------------------
! OpenMM::AndersenThermostat
! --------------------------
subroutine
OpenMM_AndersenThermostat_create
(
at
,
temp
,
freqInPerPs
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_AndersenThermostat
)
at
real
*
8
temp
,
freqInPerPs
end
subroutine
OpenMM_AndersenThermostat_destroy
(
at
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_AndersenThermostat
)
at
end
! This takes an AndersenThermostat handle and recasts it to a generic
! Force handle. This is only a type change; the returned Force
! handle refers to the same AndersenThermostat object as the input.
! You can accomplish the same thing with Fortran 95's "transfer"
! intrinsic function.
subroutine
OpenMM_AndersenThermostat_asForce
(
at
,
force
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_AndersenThermostat
)
at
type
(
OpenMM_Force
)
force
end
function
OpenMM_AndersenThermostat_getDefaultTemperature
(
at
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_AndersenThermostat
)
at
real
*
8
OpenMM_AndersenThermostat_getDefaultTemperature
end
function
OpenMM_AndersenThermostat_getDefaultCollisionFrequency
(
at
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_AndersenThermostat
)
at
real
*
8
OpenMM_AndersenThermostat_getDefaultCollisionFrequency
end
function
OpenMM_AndersenThermostat_getRandomNumberSeed
(
at
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_AndersenThermostat
)
at
integer
*
4
OpenMM_AndersenThermostat_getRandomNumberSeed
end
subroutine
OpenMM_AndersenThermostat_setRandomNumberSeed
(
at
,
seed
)
use
OpenMM_Types
;
implicit
none
type
(
OpenMM_AndersenThermostat
)
at
integer
*
4
seed
end
! -------------------------
! -------------------------
! OpenMM::Integrator
! OpenMM::Integrator
! -------------------------
! -------------------------
...
...
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