-
Notifications
You must be signed in to change notification settings - Fork 4
/
inlist.py
executable file
·142 lines (131 loc) · 4.03 KB
/
inlist.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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# monte carlo job defintion
MonteCarlo={
"Control": {
"__Execute" : "./simulator.exe",
"__Duplicate" : 0,
# "__Duplicate" : 14,
"__IsCluster" : False,
"__AutoRun" : True,
},
"Job": {"Sample" : 100000000} ##0.8 min for 1000000(*1000) Samples in MC
}
Dyson={
"Control": {
"__Execute" : ["python", "./dyson/main.py"],
"__Duplicate" : 1,
"__IsCluster" : MonteCarlo["Control"]["__IsCluster"],
"__AutoRun" : MonteCarlo["Control"]["__AutoRun"],
# "__AutoRun" : False,
"__PBSCommand": "#PBS -l mem=5gb"
},
"Job": {
"DysonOnly": MonteCarlo["Control"]["__Duplicate"]==0,
#"DysonOnly": False,
"SumRule": False
# "SumRule": True
}
}
Beta=0.5
Order=3
MaxTauBin=128
L=16
Gamma3=False
MaxTauBinTiny=MaxTauBin #the tau bin for large object like GammaW
# MaxTauBinTiny=MaxTauBin/2 #the tau bin for large object like GammaW
BasisNum=16 #the number of basis
Common={
"Gamma3": Gamma3,
"Tau": {"MaxTauBin" : MaxTauBin, "Beta": Beta, "MaxTauBinTiny": MaxTauBinTiny, "BasisNum": BasisNum},
"Lattice": {
#1D lattice
# "Name": "Chain", "NSublat":1,
# "L": [2,]
#2D lattice
"Name": "Square", "NSublat": 1,
# "Name": "Checkerboard", "NSublat": 2,
# "Name": "ValenceBond", "NSublat": 2,
# "Name": "Honeycomb", "NSublat": 2,
#"Name": "Kagome", "NSublat": 3,
# "Name": "Triangular", "NSublat": 1,
# "Name": "Assymetric_Triangular", "NSublat": 3,
"L": [L,L]
#3D lattice
#"Name": "Cubic", "NSublat": 1,
#"Name": "3DCheckerboard", "NSublat": 2,
# "Name": "Pyrochlore", "NSublat": 4,
# "L": [L,L,L]
},
"Model": {
"Name": "J1J2",
# "Name": "Kitaev",
# "Name": "Heisenberg",
# "Name": "Hubbard",
# "Name": "Haldane",
#"Description": ["ImW",],
"Interaction": [1.0, 0.0, 0.0, 0.0],
"ExternalField": [ 0.0, 0.0, 0.0, 0.0],
#ExternalField on Sublattice A and B
"Symmetry": ["SU2", "ParticleHole"],
##### For real fermions only ###############
"Hopping": [1.0,0.0,0.0,0.0], #H_kin=-t (\sum_<i,j> c^\diag_i c_j+h.c.)
"Phase": [0.0,0.0,0.0,0.0],
"HubbardInteraction": 0.0, #on-site Hubbard type interaction
"ShortRangeInteraction": [0.0, 0.0, 0.0, 0.0], #short range interaction (say nearest neighbor interaction)
"LongRangeInteraction": [0.0, 0.0, 0.0, 0.0],
"ChemicalPotential": [ -0.0, 0.0, 0.0, 0.0], #ChemicalPotential will be automatically set to \pi*T/2 for all spin models!
}
}
MonteCarlo["Markov"]={
"Order": Order, "Sweep" : 10, "Toss" : 1000,
#Start from order 0, so that OrderReWeight has Order+1 elements
"OrderReWeight" : [1.0, 0.3, 1.0, 0.1, 0.05, 0.05, 0.01, 0.005],
"WormSpaceReweight" : 0.05,
"PolarReweight" : 1.0,
"runGamma3": Gamma3,
"GammaGReweight" : 1.0,
"GammaWReweight" : 1.0,
"OrderTimeRatio" : [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
#"Timer": {
#"PrinterTimer": 300,
#"DiskWriterTimer": 300,
#"MessageTimer": 310,
#"ReweightTimer": 600
#},
"Timer": {
"PrinterTimer": 30,
"DiskWriterTimer": 30,
"MessageTimer": 30,
"ReweightTimer":1000
},
}
Dyson["Dyson"]={
#"SleepTime": 0,
"SleepTime": 60,
"Gamma3": Gamma3,
"OrderAccepted": {"Sigma":1, "Polar":1},
"ErrorThreshold": 0.05,
"Annealing": {
#"DeltaField": [-0.5, -0.5, 0.0, 0.0],
#"Interval": [0.05, 0.05, -0.0, -0.0]
"DeltaField": [-0.0, -0.0, 0.0, 0.0],
"Interval": [0.00, 0.00, -0.0, -0.0]
}
}
import job_class as job
'''This is the input file of all jobs.
You have to add new job objects to TO_DO list
if you want to run simulation.'''
TO_DO = []
MonteCarlo.update(Common)
TO_DO.append(job.JobMonteCarlo(MonteCarlo))
Dyson.update(Common)
TO_DO.append(job.JobDyson(Dyson))
CPU = 16
SLEEP = 1 #check job status for every SLEEP seconds
import basis
svd=basis.SVDBasis(MaxTauBin,Beta, "Fermi")
svd.GenerateBasis(BasisNum)
svd.Save("FermiBasis.dat")
svd=basis.SVDBasis(MaxTauBin,Beta, "Bose")
svd.GenerateBasis(BasisNum)
svd.Save("BoseBasis.dat")