Repository navigation
Expand file tree
/
Copy pathrun.py
More file actions
67 lines (51 loc) · 2.36 KB
/
Copy pathrun.py
File metadata and controls
67 lines (51 loc) · 2.36 KB
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
import torch
import libra_py.dynamics.bohmian.compute as compute
import libra_py.dynamics.bohmian.plot as plot
#import matplotlib.pyplot as plt
def sech(x):
return 1 / torch.cosh(x)
def Martens_model1(q, params):
"""
q - Tensor(ntraj, ndof)
"""
#params = {"Va": 0.00625, "Vb": 0.0106}
return torch.sum( params["Va"] * sech(2.0*q[:, 0])**2 + 0.5 * params["Vb"] * q[:, 1]**2 , 0)
def Martens_model2(q, params):
"""
q - Tensor(ntraj, ndof)
Martens_model1 is just this one but with Vc = 0.0
"""
#params = {"Va": 0.00625, "Vb": 0.0106}
Va = params["Va"]
Vb = params["Vb"]
Vc = params["Vc"]
return torch.sum( Va * sech(2.0*q[:, 0])**2 + 0.5 * Vb * (q[:, 1] + Vc * (q[:, 0]**2 - 1.0 ) )**2 , 0)
#========== Case 1 ==========
ntraj = 2000
params = {"nsteps": 400, "dt": 5.0, "print_period":40,
"ham": Martens_model2, "ham_params": {"Va": 0.00625, "Vb": 0.0106, "Vc":0.0 },
"do_bohmian": 0, "tbf_type":None, "qpot_sigmas": torch.tensor([ [0.5, 0.5]] * ntraj)
}
prefix = "classical-MartensI-case1-1"
prms = dict(params); prms.update({"prefix":prefix})
q, p, masses = compute.init_variables(ntraj, 1)
compute.md(q, p, masses, prms)
plot.plot({ "filename":F"{prefix}.pt", "prefix":prefix, "do_show":False, "which_timesteps":[0, 100, 200, 300, 399] })
#========== Case 2 ==========
prefix = "classical-MartensI-case2-1"
prms = dict(params); prms.update({"prefix":prefix})
q, p, masses = compute.init_variables(ntraj, 2)
compute.md(q, p, masses, prms)
plot.plot( { "filename":F"{prefix}.pt", "prefix":prefix, "do_show":False, "which_timesteps":[0, 100, 200, 300, 399] })
#========== Case 3 ==========
prefix = "classical-MartensII-case1-1"
prms = dict(params); prms.update({"prefix":prefix, "ham_params": {"Va": 0.00625, "Vb": 0.0106, "Vc":0.4 }})
q, p, masses = compute.init_variables(ntraj, 1)
compute.md(q, p, masses, prms)
plot.plot({ "filename":F"{prefix}.pt", "prefix":prefix, "do_show":False, "which_timesteps":[0, 100, 200, 300, 399] })
#========== Case 4 ==========
prefix = "classical-MartensII-case2-1"
prms = dict(params); prms.update({"prefix":prefix, "ham_params": {"Va": 0.00625, "Vb": 0.0106, "Vc":0.4 }} )
q, p, masses = compute.init_variables(ntraj, 2)
compute.md(q, p, masses, prms)
plot.plot({ "filename":F"{prefix}.pt", "prefix":prefix, "do_show":False, "which_timesteps":[0, 100, 200, 300, 399] })