-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompute-heat-capacity-generational
83 lines (63 loc) · 2.1 KB
/
compute-heat-capacity-generational
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
#!/usr/bin/env python
from embodied_ising import ising
import numpy as np
from sys import argv
from os import path, makedirs
import pickle
import glob
loadfile = 'sim-20180131-145412'
# --- COMPUTE HEAT CAPACITY -------------------------------------------------------+
if len(argv) < 2:
print("Usage: " + argv[0] + " <size> + <bind>")
bind = 0
else:
bind = int(argv[1])
R = 10
mode = 'MonteCarlo'
Nbetas = 101
betas = 10 ** np.linspace(-1, 1, Nbetas)
loadstr = 'save/' + loadfile + '/isings/*.pickle'
for file in glob.glob(loadstr):
substring1 = '['
substring2 = ']'
iterNum = file[(file.index(substring1) + len(substring1)):file.index(substring2)]
print(iterNum)
isings = pickle.load(open(file, 'rb'))
size = isings[0].size # get size from first agent
numAgents = len(isings)
C = np.zeros((R, numAgents))
for rep in range(R):
# filename = 'files/mode_' + mode + '-size_' + \
# str(size) + '-ind_' + str(rep) + '.npz'
# filename = 'parameters.npz'
# data = np.load(filename)
# I = ising(size)
# I.h = data['h'][()][(size, rep)]
# I.J = data['J'][()][(size, rep)]
agentNum = 0
for I in isings:
Em = 0
E2m = 0
T = 100000
# print(agentNum)
I.Beta = betas[bind]
I.randomize_state()
for t in range(int(T / 10)):
I.NoSensorGlauberStep()
for t in range(T):
I.NoSensorGlauberStep()
E = -(np.dot(I.s, I.h) + np.dot(np.dot(I.s, I.J), I.s))
Em += E / float(T)
E2m += E ** 2 / float(T)
C[rep, agentNum] = I.Beta ** 2 * (E2m - Em ** 2) / size
agentNum += 1
# print(np.mean(C, 0))
folder = 'save/' + loadfile + '/C_' + iterNum + '/'
file = 'C-size_' + str(size) + '-Nbetas_' + \
str(Nbetas) + '-bind_' + str(bind) + '.npy'
filename = folder + file
if not path.exists(folder):
makedirs(folder)
np.save(filename, C)
# savestr = 'Saving: ./.../' + file
# print(savestr)