-
Notifications
You must be signed in to change notification settings - Fork 0
/
LangevinDriver.py
95 lines (57 loc) · 2.33 KB
/
LangevinDriver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#This is the primary driver for Langevin simulation code
#
#Steven Large
#June 4th 2018
import os
import matplotlib.pyplot as plt
import LangevinPropagator
import ReadWrite
import Plotting
#----- These arrays track the position,velocity, and control parameter trajectories -----
PositionTracker_Eq = []
VelocityTracker_Eq = []
CPTracker_Eq = []
PositionTracker = []
VelocityTracker = []
CPTracker = []
#----- Initialize the system variables -------
position = 0
CP = 0
velocity = 0
time = 0
#----- This is the equilibration time, 100 is somewhat arbitrary, this can be set differently, this is just to ensure that, on average
#----- each trajectory is initialized from an equilibrium ensemble of positions and velocities
EquilibrationTime = 100
#----- Protocol duration and the distance that the trap minimum moves -----
ProtocolDuration = 100
CPDistance = 10
#----- Write Paths and file names -----
WritePath = "Data"
WriteName_Position = "PositionTrajectory.dat"
WriteName_Velocity = "VelocityTrajectory.dat"
WriteName_CP = "CPTrajectory.dat"
#----- This is the constant velocity that the control parameter moves at -----
CPVel = CPDistance/float(ProtocolDuration)
#----- Equilibrate the initial state of the system -----
while time <= EquilibrationTime:
time,position,velocity = LangevinPropagator.Equilibration(time,position,velocity,CP)
PositionTracker_Eq.append(position)
VelocityTracker_Eq.append(velocity)
CPTracker_Eq.append(CP)
#----- Reset time to zero and initialize 'WorkAcc', which accumulates the work done by the control parameter over the protocol -----
time = 0
WorkAcc = 0
while time <= ProtocolDuration:
time,position,velocity,CP,WorkStep = LangevinPropagator.Langevin(time,position,velocity,CP,CPVel)
WorkAcc += WorkStep
PositionTracker.append(position)
VelocityTracker.append(velocity)
CPTracker.append(CP)
#----- Plot trajectory data -----
Plotting.PlotSimulationData(PositionTracker_Eq,VelocityTracker_Eq,CPTracker_Eq,PositionTracker,VelocityTracker,CPTracker)
#----- Print the total work done in the protocol -----
print "TotalWork --> " + str(WorkAcc) + "\n"
#----- Write trajectory data to file -----
ReadWrite.WriteTrajectory(WritePath,WriteName_Position,PositionTracker)
ReadWrite.WriteTrajectory(WritePath,WriteName_Velocity,VelocityTracker)
ReadWrite.WriteTrajectory(WritePath,WriteName_CP,CPTracker)