-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhard_edge_sol.py
114 lines (101 loc) · 4.09 KB
/
hard_edge_sol.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
from sol import Sol
from material import Material
from subregion import SubRegion
from sregion import SRegion
from icool_composite import ICoolComposite
from icoolobject import ICoolObject
from repeat import Repeat
class HardEdgeSol(ICoolComposite):
"""
Hard edge solenoid comprises:
(1) Entrance focusing region;
(2) Non-focusing constant solenoid region;
(3) Exit focusing region
"""
begtag = ''
endtag = ''
num_params = 10
command_params = {
'mtag': {'desc': 'Material tag',
'doc': '',
'type': 'String',
'req': True,
'pos': None},
'geom': {'desc': 'Geometry',
'doc': '',
'type': 'String',
'req': True,
'pos': None},
'bs': {'desc': 'Field strength (Tesla)',
'doc': '',
'type': 'Float',
'req': True,
'pos': None},
'slen': {'desc': 'SRegion length',
'doc': '',
'type': 'Float',
'req': True,
'pos': None},
'zstep': {'desc': 'Z step',
'doc': '',
'type': 'Float',
'req': True,
'pos': None},
'rhigh': {'desc': 'R high',
'doc': '',
'type': 'Float',
'req': True,
'pos': None},
'outstep': {'desc': 'Output stepping (Meter)',
'doc': 'Increment for output steps for constant B Field region',
'type': 'Float',
'req': True,
'pos': None},
'sreg_entrance': {'desc': 'Entrance SRegion',
'doc': '',
'type': 'SRegion',
'req': False,
'pos': None},
'sreg_exit': {'desc': 'Exit SRegion',
'doc': '',
'type': 'SRegion',
'req': False,
'pos': None},
'sreg_body': {'desc': 'Body SRegion',
'doc': '',
'type': 'SRegion',
'req': False,
'pos': None},
'rep_body': {'desc': 'Wrapped output SRegion',
'doc': '',
'type': 'Repeat',
'req': False,
'pos': None}
}
def __init__(self, **kwargs):
ICoolObject.__init__(self, kwargs)
material = Material(geom=self.geom, mtag=self.mtag)
# Entrance SRegion
sol_ent = Sol(model='edge', ent_def=0, ex_def=0, foc_flag=2, bs=self.bs)
ent_subregion = SubRegion(material=material, rlow=0, rhigh=self.rhigh, irreg=1, field=sol_ent)
self.sreg_entrance = SRegion(zstep=self.zstep, nrreg=1, slen=self.slen)
self.sreg_entrance.add_enclosed_command(ent_subregion)
# Exit SRegion
sol_exit = Sol(model='edge', ent_def=0, ex_def=0, foc_flag=1, bs=self.bs)
exit_subregion = SubRegion(material=material, rlow=0, rhigh=self.rhigh, irreg=1, field=sol_exit)
self.sreg_exit = SRegion(zstep=self.zstep, nrreg=1, slen=self.slen)
self.sreg_exit.add_enclosed_command(exit_subregion)
# Body SRegion
sol_body = Sol(model='edge', ent_def=0, ex_def=0, foc_flag=0, bs=self.bs)
body_subregion = SubRegion(material=material, rlow=0, rhigh=self.rhigh, irreg=1, field=sol_body)
self.sreg_body = SRegion(zstep=self.zstep, nrreg=1, slen=self.slen)
self.sreg_body.add_enclosed_command(body_subregion)
self.rep_body = Repeat.wrapped_sreg(outstep=self.outstep, sreg=self.sreg_body)
def __call__(self, **kwargs):
ICoolObject.__call__(self, kwargs)
def __str__(self):
return 'HardEdgeSol'
def gen_for001(self, file):
self.sreg_entrance.gen_for001(file)
self.rep_body.gen_for001(file)
self.sreg_exit.gen_for001(file)