/
data.py
65 lines (52 loc) · 2.37 KB
/
data.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
import os
import glob
import oommfc as oc
import ubermagtable as ut
import discretisedfield as df
import micromagneticmodel as mm
class Data(mm.Data):
@property
def effective_field(self):
_dict = {'Demag': 'Oxs_Demag::Field',
'Exchange': 'Oxs_UniformExchange::Field',
'UniaxialAnisotropy': 'Oxs_UniaxialAnisotropy::Field',
'Zeeman': 'Oxs_FixedZeeman::Field',
'Hamiltonian': 'Oxs_RungeKuttaEvolve:evolver:Total field'}
td = oc.TimeDriver()
td.drive(self.system, derive=_dict[self.cls])
dirname = os.path.join(self.system.name,
f'drive-{self.system.drive_number-1}')
ohf_file = max(glob.iglob(os.path.join(dirname, '*.ohf')),
key=os.path.getctime)
return df.Field.fromfile(ohf_file)
@property
def energy(self):
_dict = {'Demag': 'Demag::Energy',
'Exchange': 'UniformExchange::Energy',
'UniaxialAnisotropy': 'UniaxialAnisotropy::Energy',
'Zeeman': 'FixedZeeman::Energy',
'Hamiltonian': 'RungeKuttaEvolve:evolver:Total energy'}
td = oc.TimeDriver()
td.drive(self.system, derive='energy')
dirname = os.path.join(self.system.name,
f'drive-{self.system.drive_number-1}')
odt_file = max(glob.iglob(os.path.join(dirname, '*.odt')),
key=os.path.getctime)
dt = ut.read(odt_file, rename=False)
return dt[_dict[self.cls]][0]
@property
def energy_density(self):
_dict = {'Demag': 'Oxs_Demag::Energy density',
'Exchange': 'Oxs_UniformExchange::Energy density',
'UniaxialAnisotropy': ('Oxs_UniaxialAnisotropy::'
'Energy density'),
'Zeeman': 'Oxs_FixedZeeman::Energy density',
'Hamiltonian': ('Oxs_RungeKuttaEvolve:evolver:'
'Total energy density')}
td = oc.TimeDriver()
td.drive(self.system, derive=_dict[self.cls])
dirname = os.path.join(self.system.name,
f'drive-{self.system.drive_number-1}')
oef_file = max(glob.iglob(os.path.join(dirname, '*.oef')),
key=os.path.getctime)
return df.Field.fromfile(oef_file)