Skip to content

Commit 6e24531

Browse files
author
Weiwei Wang
committed
bug fix for mc
1 parent a655f7b commit 6e24531

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

examples/mc/skx.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@ def run(mesh):
1717

1818
mc = MonteCarlo(mesh, name='test1')
1919
mc.set_m(init_m)
20-
mc.set_options(H=[0,0,2e-2], J=50.0, D=0.18*50, T=20.0)
21-
mc.run(steps=200)
22-
20+
mc.set_options(H=[0,0,0.5], J=50.0, D=0.27*50, T=5.0)
21+
mc.run(steps=200000, save_m_steps=None, save_vtk_steps=1000, save_data_steps=10)
2322

2423
if __name__=='__main__':
2524

2625
#mesh = CuboidMesh(nx=174,ny=150, nz=1, pbc='2d')
27-
mesh = CuboidMesh(nx=50, ny=60, nz=1, periodicity = (True, True, False))
26+
mesh = CuboidMesh(nx=100, ny=100, nz=1, periodicity = (True, True, False))
2827

2928
run(mesh)

fidimag/atomistic/lib/mc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ double compute_energy_difference(double *spin, double *new_spin, int *ngbs, doub
6464
energy1 -= J*dot(&spin[3*i], &spin[3*k]);
6565
energy1 += D*dmi_energy_site(&spin[3*i], &spin[3*k], j);
6666

67-
energy2 -= J*dot(&new_spin[3*i], &new_spin[3*k]);
68-
energy2 += D*dmi_energy_site(&new_spin[3*i], &new_spin[3*k], j);
67+
energy2 -= J*dot(&new_spin[3*i], &spin[3*k]);
68+
energy2 += D*dmi_energy_site(&new_spin[3*i], &spin[3*k], j);
6969

7070
}
7171
}

fidimag/atomistic/mc.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def __init__(self, mesh, name='unnamed'):
3333
self.vtk = SaveVTK(self.mesh, name=name)
3434

3535
self.step = 0
36+
self.skx_num = 0
3637
self.set_options()
3738

3839
def set_options(self, J=50.0, D=0, H=None, seed=100, T=10.0):
@@ -104,6 +105,7 @@ def skyrmion_number(self):
104105
nz = self.mesh.nz
105106
number = clib.compute_skyrmion_number(
106107
self.spin, self._skx_number, nx, ny, nz, self.mesh.neighbours)
108+
self.skx_num = number
107109
return number
108110

109111

@@ -127,7 +129,7 @@ def save_m(self):
127129
np.save(name, self.spin)
128130

129131

130-
def run(self, steps=1000, save_m_steps=100, save_vtk_steps=100):
132+
def run(self, steps=1000, save_m_steps=100, save_vtk_steps=100, save_data_steps=1):
131133

132134
if save_m_steps is not None:
133135
self.save_m()
@@ -139,8 +141,9 @@ def run(self, steps=1000, save_m_steps=100, save_vtk_steps=100):
139141
self.step = step
140142
clib.run_mc_step(self.spin, self.random_spin, self.ngbs,
141143
self.J, self.D, self._H, self.n, self.T)
142-
143-
self.saver.save()
144+
if save_data_steps is not None:
145+
if step % save_data_steps == 0:
146+
self.saver.save()
144147

145148
if save_vtk_steps is not None:
146149
if step % save_vtk_steps == 0:
@@ -149,7 +152,7 @@ def run(self, steps=1000, save_m_steps=100, save_vtk_steps=100):
149152
if step % save_m_steps == 0:
150153
self.save_m()
151154

152-
print("step=%d, skyrmion number=%0.4g"%(self.step, self.skyrmion_number()))
155+
print("step=%d, skyrmion number=%0.9g"%(self.step, self.skx_num))
153156

154157

155158

0 commit comments

Comments
 (0)