PageRenderTime 53ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 1ms

/src/utils/get_ATF2_quads.m

http://slac-lucretia.googlecode.com/
MATLAB | 459 lines | 346 code | 25 blank | 88 comment | 11 complexity | 3091c1c29b99064f66ae56474f56de94 MD5 | raw file
Possible License(s): BSD-2-Clause
  1. function varargout=get_ATF2_quads(opCode,energy,varargin)
  2. %
  3. % KL=get_ATF2_quads(1,energy,Iquad,QMFFrev,fflag);
  4. %
  5. % Compute ATF2 quadrupole KLs from power supply currents and beam energy
  6. %
  7. % Iquad=get_ATF2_quads(2,energy,KL,QMFFrev,fflag);
  8. %
  9. % Compute ATF2 quadrupole power supply currents from KLs and beam energy
  10. %
  11. % NOTE: this code does not account for trim winding settings for QM6R and QM7R
  12. %
  13. % INPUTS (opCode=1):
  14. %
  15. % opCode = 1 (I to KL conversion)
  16. % energy = beam energy (GeV)
  17. % Iquad = ATF2 quad currents (amps) [51 element array]
  18. % QMFFrev = normal(=1) or reverse(=-1) polarity for FF QMs [6 element array]
  19. % fflag = (optional) if present and nonzero, fudge factors will be used
  20. %
  21. % INPUTS (opCode=2):
  22. %
  23. % opCode = 2 (KL to I conversion)
  24. % energy = beam energy (GeV)
  25. % KL = quadrupole KLs (1/m; positive means "QF")
  26. % QMFFrev = normal(=1) or reverse(=-1) polarity for FF QMs [6 element array]
  27. % fflag = (optional) if present and nonzero, fudge factors will be used
  28. %
  29. % The order of quadrupoles in the Iquad or KL arrays must be:
  30. %
  31. % QM6R ,QM7R ,QS1X ,QF1X ,QD2X ,QF3X ,QF4X ,QD5X ,QF6X ,QS2X ,
  32. % QF7X ,QD8X ,QF9X ,QK1X ,QD10X ,QF11X ,QK2X ,QD12X ,QF13X ,QD14X ,
  33. % QF15X ,QK3X ,QD16X ,QF17X ,QK4X ,QD18X ,QF19X ,QD20X ,QF21X ,QM16FF ,
  34. % QM15FF ,QM14FF ,QM13FF ,QM12FF ,QM11FF ,QD10BFF,QD10AFF,QF9BFF ,QF9AFF ,QD8FF ,
  35. % QF7FF ,QD6FF ,QF5BFF ,QF5AFF ,QD4BFF ,QD4AFF ,QF3FF ,QD2BFF ,QD2AFF ,QF1FF ,
  36. % QD0FF
  37. %
  38. % The order of quadrupoles in the QMFFrev array must be:
  39. %
  40. % QM16FF ,QM15FF ,QM14FF ,QM13FF ,QM12FF ,QM11FF
  41. %
  42. % OUTPUT (opCode=1):
  43. %
  44. % KL = quadrupole KLs (1/m; positive means "QF") [51 element array]
  45. %
  46. % OUTPUT (opCode=2):
  47. %
  48. % Iquad = quadrupole currents (amps) [51 element array]
  49. % ==============================================================================
  50. % 03-MAR-2009, M. Woodley
  51. % QS1X and QS2X are wired in reverse polarity (top=South when I>0)
  52. % 26-FEB-2009, M. Woodley
  53. % Set zero strength at zero current for QEA quads (for interpolating)
  54. % 22-FEB-2009, M. Woodley
  55. % Do either I-to-KL and KL-to-I conversion
  56. % ==============================================================================
  57. NATF2q=51;
  58. % check input args
  59. if (~exist('opCode','var'))
  60. error('opCode argument not supplied')
  61. end
  62. if (~exist('energy','var'))
  63. error('energy argument not supplied')
  64. else
  65. if (energy<=0)
  66. error('Bad energy value')
  67. end
  68. end
  69. if (opCode==1)
  70. if (nargin<4)
  71. error('At least 4 input arguments required for opCode=1')
  72. end
  73. Iquad=varargin{1};
  74. if (length(Iquad)~=NATF2q)
  75. error('Incorrect Iquad length')
  76. end
  77. elseif (opCode==2)
  78. if (nargin<4)
  79. error('At least 4 input arguments required for opCode=2')
  80. end
  81. KL=varargin{1};
  82. if (length(KL)~=NATF2q)
  83. error('Incorrect KL length')
  84. end
  85. else
  86. error('Invalid opCode')
  87. end
  88. QMFFrev=varargin{2};
  89. if (length(QMFFrev)~=6)
  90. error('Incorrect QMFFrev length')
  91. end
  92. if (nargin>4)
  93. fflag=varargin{3};
  94. else
  95. fflag=0;
  96. end
  97. fudge=(fflag~=0);
  98. % ==============================================================================
  99. %
  100. % ATF2 QUAD MAGNET DATA
  101. %
  102. % ==============================================================================
  103. % there are 8 types of ATF2 quad:
  104. % 1 = Hitachi type 4
  105. % 2 = Tokin type 3581
  106. % 3 = Hitachi type 5
  107. % 4 = Hitachi type 2
  108. % 5 = IDX skew
  109. % 6 = QC3 (shimmed) [QF1FF]
  110. % 7 = QC3 (shimmed) [QD0FF]
  111. % 8 = QEA-D32T180 [each has it's own MMS data]
  112. % MMS data for quad types (I is amp, G is T/m)
  113. % (from: ATF$MAG:MAG_KI_Q_HITACHI_4.FOR
  114. % ATF$MAG:MAG_KI_Q_TOKIN_3581.FOR
  115. % ATF$MAG:MAG_KI_Q_HITACHI_5.FOR
  116. % ATF$MAG:MAG_KI_Q_HITACHI_2.FOR
  117. % ATF$MAG:MAG_KI_Q_IDX_SKEW.FOR
  118. % SLAC magnetic measurements data [QF1FF]
  119. % SLAC magnetic measurements data [QD0FF]
  120. % mainamp50AmaxAbs.txt (M.Masuzawa)
  121. % mainamp150AmaxAbs.txt (M.Masuzawa))
  122. Nmms=[11,11,11,11,6,13,13];
  123. qI=[ ...
  124. 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 , 0.0 ; ...
  125. 20.2, 50.0, 10.4, 10.2, 4.0, 50.0170753, 50.0106160; ...
  126. 40.2, 80.0, 20.2, 20.2, 8.0, 60.0253628, 60.0276535; ...
  127. 60.4,100.0, 30.4, 30.2, 12.0, 70.0958753, 70.0855160; ...
  128. 80.4,130.0, 40.2, 40.0, 16.0, 80.0715627, 80.0717910; ...
  129. 100.0,150.0, 50.0, 50.0, 20.0, 90.1618378, 90.1688160; ...
  130. 120.2,170.0, 60.2, 60.2, 0 ,100.0284003,100.0348160; ...
  131. 140.2,190.0, 70.2, 70.2, 0 ,110.0944627,110.0881035; ...
  132. 160.2,210.0, 80.4, 80.2, 0 ,120.0628878,120.0671535; ...
  133. 180.0,230.0, 90.4, 90.2, 0 ,130.1262003,130.1366660; ...
  134. 200.4,245.0,100.6,100.2, 0 ,140.1526753,140.1541410; ...
  135. 0 , 0 , 0 , 0 , 0 ,145.2119002,145.2155410; ...
  136. 0 , 0 , 0 , 0 , 0 ,150.2062628,150.2204785; ...
  137. ];
  138. % NOTE: data for QC3s is integrated gradient (T)
  139. qG=[ ...
  140. 0.000, 0.0, 0.000, 0.000,0.000,0.0 ,0.0 ; ...
  141. 4.612, 7.5, 4.845, 3.832,1.115,2.2467284,2.2493081; ...
  142. 9.201,11.8, 9.424, 7.646,2.247,2.6961437,2.6988262; ...
  143. 13.858,14.8,14.248,11.498,3.385,3.1478458,3.1507880; ...
  144. 18.440,19.1,18.833,15.202,4.522,3.5957252,3.5993780; ...
  145. 22.884,21.8,23.382,18.927,5.662,4.0480109,4.0525394; ...
  146. 27.464,24.4,27.994,22.657,0 ,4.4894084,4.4949355; ...
  147. 31.925,26.4,32.566,26.285,0 ,4.9388469,4.9453874; ...
  148. 36.386,28.0,37.206,29.896,0 ,5.3839400,5.3913758; ...
  149. 40.726,29.3,41.726,33.438,0 ,5.8322381,5.8405937; ...
  150. 45.143,30.1,46.223,36.758,0 ,6.2782832,6.2871601; ...
  151. 0 , 0 , 0 , 0 ,0 ,6.5027131,6.5118793; ...
  152. 0 , 0 , 0 , 0 ,0 ,6.7255943,6.7351056; ...
  153. ];
  154. % NOTE: a second set of MMS data (at higher current) was made for QF1FF and
  155. % QD0FF ... use this data for I > 150 amps
  156. qI2=[ ...
  157. 80.0638875, 80.062675 ; ...
  158. 130.1210375,130.1277625; ...
  159. 150.2125625,150.2228125; ...
  160. 170.176 ,170.188325 ; ...
  161. 190.25665 ,190.2619 ; ...
  162. 200.087275 ,200.0862125; ...
  163. 210.1335 ,210.1445875; ...
  164. 220.181025 ,220.1833125; ...
  165. ];
  166. % NOTE: these are integrated gradients (T)
  167. qG2=[ ...
  168. 3.5979756,3.6005798; ...
  169. 5.8444164,5.8492512; ...
  170. 6.7416765,6.7474992; ...
  171. 7.6309404,7.63769 ; ...
  172. 8.5209835,8.5285362; ...
  173. 8.9548028,8.9629504; ...
  174. 9.3972297,9.4059275; ...
  175. 9.8377363,9.8470287; ...
  176. ];
  177. qleff=[0.198745,0.084339,0.19861,0.07867,0.07867,0.475,0.475,0.19849];
  178. % NOTE: convert integrated strengths to gradients for standard handling
  179. qG(:,6)=qG(:,6)/qleff(6); % QC3 [QF1FF]
  180. qG(:,7)=qG(:,7)/qleff(7); % QC3 [QD0FF]
  181. qG2(:,1)=qG2(:,1)/qleff(6); % QC3 [QF1FF]
  182. qG2(:,2)=qG2(:,2)/qleff(7); % QC3 [QD0FF]
  183. % quadrupole family types
  184. qtype=[ ...
  185. 1; 2; 5; 3; 3; 3; 3; 3; ...
  186. 3; 5; 4; 3; 3; 5; 8; 8; ...
  187. 5; 8; 1; 1; 1; 5; 8; 8; ...
  188. 5; 8; 8; 4; 4; 8; 8; 8; ...
  189. 8; 8; 8; 8; 8; 8; 8; 8; ...
  190. 8; 8; 8; 8; 8; 8; 8; 8; ...
  191. 8; 6; 7; ...
  192. ];
  193. % polarities (zero means bipolar)
  194. qsgn=[...
  195. -1; 1; 0; 1;-1; 1; 1;-1; ...
  196. 1; 0; 1;-1; 1; 0;-1; 1; ...
  197. 0;-1; 1;-1; 1; 0;-1; 1; ...
  198. 0;-1; 1;-1; 1; 1;-1;-1; ...
  199. 1; 1;-1;-1;-1; 1; 1;-1; ...
  200. 1;-1; 1; 1;-1;-1; 1;-1; ...
  201. -1; 1;-1; ...
  202. ];
  203. % FF QM reversal state
  204. idQM=[30:35]';
  205. qsgn(idQM)=qsgn(idQM).*QMFFrev;
  206. % "Kubo" fudge factors
  207. % (NOTE: set fudge factors to zero ... who knows what they are now)
  208. qfudge=zeros(NATF2q,1);
  209. % pointers to QS1X and QS2X ... wired in reverse polarity
  210. idQSX=[3;10];
  211. % ==============================================================================
  212. % compute rigidity
  213. Cb=1e10/2.99792458e8; % kG-m/GeV
  214. brho=Cb*energy;
  215. % perform requested conversion
  216. % (NOTE: polynomial evaluation is not presently used to convert current
  217. % to gradient ... linear interpolation of MMS data is used)
  218. if (opCode==1)
  219. % convert current to KL
  220. KL=zeros(NATF2q,1);
  221. for n=1:NATF2q
  222. nt=qtype(n);
  223. bipolar=(qsgn(n)==0);
  224. if (Iquad(n)==0)
  225. continue
  226. elseif (~bipolar&&(Iquad(n)<0))
  227. continue
  228. else
  229. if (nt==8)
  230. [Imms,Gmms]=QEAmms(n);
  231. else
  232. Imms=qI(1:Nmms(nt),nt);
  233. Gmms=qG(1:Nmms(nt),nt);
  234. end
  235. if ((nt==6)&&(Iquad(n)>150)) % use QF1FF high-current data
  236. Imms=qI2(:,1);
  237. Gmms=qG2(:,1);
  238. elseif ((nt==7)&&(Iquad(n)>150)) % use QD0FF high-current data
  239. Imms=qI2(:,2);
  240. Gmms=qG2(:,2);
  241. end
  242. G=interp1(Imms,Gmms,abs(Iquad(n)),'linear');
  243. if (fudge),G=G/(1+qfudge(n));end
  244. if (bipolar)
  245. G=G*sign(Iquad(n));
  246. else
  247. G=G*qsgn(n);
  248. end
  249. KL(n)=10*G*qleff(nt)/brho;
  250. end
  251. end
  252. KL(idQSX)=-KL(idQSX); % QS1X and QS2X wired in reverse polarity
  253. varargout{1}=KL;
  254. else
  255. % convert KL to current
  256. Iquad=zeros(NATF2q,1);
  257. for n=1:NATF2q
  258. nt=qtype(n);
  259. bipolar=(qsgn(n)==0);
  260. if (KL(n)==0)
  261. continue
  262. elseif (~bipolar&&(sign(KL(n))~=qsgn(n)))
  263. continue
  264. else
  265. if (nt==8)
  266. [Imms,Gmms]=QEAmms(n);
  267. else
  268. Imms=qI(1:Nmms(nt),nt);
  269. Gmms=qG(1:Nmms(nt),nt);
  270. end
  271. if ((nt==6)&&(Iquad(n)>150)) % use QF1FF high-current data
  272. Imms=qI2(:,1);
  273. Gmms=qG2(:,1);
  274. elseif ((nt==7)&&(Iquad(n)>150)) % use QD0FF high-current data
  275. Imms=qI2(:,2);
  276. Gmms=qG2(:,2);
  277. end
  278. G=0.1*brho*abs(KL(n))/qleff(nt); % T/m
  279. if (fudge),G=G*(1+qfudge(n));end
  280. Iquad(n)=interp1(Gmms,Imms,G,'linear');
  281. if (bipolar),Iquad(n)=Iquad(n)*sign(KL(n));end
  282. end
  283. Iquad(idQSX)=-Iquad(idQSX); % QS1X and QS2X wired in reverse polarity
  284. varargout{1}=Iquad;
  285. end
  286. end
  287. end
  288. function [qI,qG]=QEAmms(id)
  289. % id name QEA# Imax Col
  290. % -- ------- ---- ---- ---
  291. % 15 QD10X 12 150 13
  292. % 16 QF11X 11 150 12
  293. % 18 QD12X 16 150 15
  294. % 23 QD16X 3 150 4
  295. % 24 QF17X 6 150 7
  296. % 26 QD18X 8 150 9
  297. % 27 QF19X 10 150 11
  298. % 30 QM16FF 9 150 10
  299. % 31 QM15FF 2 150 3
  300. % 32 QM14FF 1 150 2
  301. % 33 QM13FF 5 150 6
  302. % 34 QM12FF 15 150 14
  303. % 35 QM11FF 4 150 5
  304. % 36 QD10BFF 25 50 12
  305. % 37 QD10AFF 22 50 9
  306. % 38 QF9BFF 23 50 10
  307. % 39 QF9AFF 24 50 11
  308. % 40 QD8FF 20 50 7
  309. % 41 QF7FF 27 50 14
  310. % 42 QD6FF 26 50 13
  311. % 43 QF5BFF 29 50 16
  312. % 44 QF5AFF 28 50 15
  313. % 45 QD4BFF 33 50 20
  314. % 46 QD4AFF 30 50 17
  315. % 47 QF3FF 31 50 18
  316. % 48 QD2BFF 34 50 21
  317. % 49 QD2AFF 32 50 19
  318. lookup=[ ...
  319. 15 150 13
  320. 16 150 12
  321. 18 150 15
  322. 23 150 4
  323. 24 150 7
  324. 26 150 9
  325. 27 150 11
  326. 30 150 10
  327. 31 150 3
  328. 32 150 2
  329. 33 150 6
  330. 34 150 14
  331. 35 150 5
  332. 36 50 12
  333. 37 50 9
  334. 38 50 10
  335. 39 50 11
  336. 40 50 7
  337. 41 50 14
  338. 42 50 13
  339. 43 50 16
  340. 44 50 15
  341. 45 50 20
  342. 46 50 17
  343. 47 50 18
  344. 48 50 21
  345. 49 50 19
  346. ];
  347. % mainamp150AmaxAbs.txt (M.Masuzawa)
  348. mms150=[ ...
  349. % 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  350. % Current QEA01 QEA02 QEA03 QEA04 QEA05 QEA06 QEA07 QEA08 QEA09 QEA10 QEA11 QEA12 QEA15 QEA16
  351. % ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
  352. 0.0000000 0.027852904 0.030506356 0.027256228 0.032829583 0.026876856 0.027443571 0.031409271 0.029505244 0.025968155 0.028044462 0.022606753 0.025058137 0.030732028 0.028316030
  353. 10.000000 0.93772334 0.93937820 0.93742323 0.94295686 0.93441892 0.93938303 0.93977302 0.94099826 0.93904907 0.94194758 0.93286663 0.93956733 0.94647944 0.94635600
  354. 20.000000 1.8596991 1.8603314 1.8592361 1.8664562 1.8528848 1.8613006 1.8582008 1.8629626 1.8631428 1.8659338 1.8576188 1.8642662 1.8714479 1.8737825
  355. 30.000000 2.7942219 2.7947519 2.7938874 2.8019083 2.7836847 2.7963331 2.7882466 2.7984815 2.7999740 2.8019509 2.7873280 2.8015041 2.8097651 2.8142490
  356. 40.000000 3.7219207 3.7224891 3.7216418 3.7304349 3.7072167 3.7248392 3.7106743 3.7271931 3.7295382 3.7310123 3.7169988 3.7312465 3.7410450 3.7473235
  357. 50.000000 4.6551557 4.6554065 4.6547413 4.6638241 4.6360159 4.6587200 4.6389837 4.6609015 4.6642461 4.6648588 4.6430759 4.6657333 4.6776905 4.6852636
  358. 60.000000 5.5738125 5.5738368 5.5732274 5.5829530 5.5497336 5.5780277 5.5530548 5.5802903 5.5841994 5.5831165 5.5638790 5.5852056 5.5990934 5.6079135
  359. 70.000000 6.4870849 6.4860616 6.4862618 6.4965849 6.4582496 6.4919772 6.4617090 6.4939456 6.4988241 6.4955730 6.4779158 6.4995794 6.5144272 6.5247884
  360. 80.000000 7.3985457 7.3957953 7.3972039 7.4089684 7.3641810 7.4039865 7.3686643 7.4049659 7.4110003 7.4056296 7.3833327 7.4111490 7.4097128 7.4393244
  361. 90.000000 8.2836657 8.2789059 8.2809420 8.2950335 8.2439737 8.2886238 8.2487793 8.2896624 8.2962818 8.2881460 8.2702589 8.2957354 8.3124323 8.3268652
  362. 100.00000 9.1123867 9.1020203 9.1059580 9.1207247 9.0675383 9.1115141 9.0734730 9.1165915 9.1232882 9.1116486 9.0975027 9.1158381 9.1324730 9.1499929
  363. 110.00000 9.7852097 9.7633123 9.7741728 9.7834826 9.7384729 9.7754278 9.7469425 9.7866335 9.7921076 9.7767239 9.7518406 9.7700624 9.7869825 9.8076000
  364. 120.00000 10.274178 10.242992 10.261633 10.265922 10.228235 10.260318 10.238844 10.274369 10.278795 10.260708 10.233387 10.245369 10.264085 10.285763
  365. 130.00000 10.658867 10.620907 10.645681 10.647207 10.613884 10.643704 10.626049 10.658575 10.662965 10.642764 10.607639 10.621065 10.641808 10.664033
  366. 140.00000 10.975464 10.932746 10.962528 10.961823 10.931271 10.959914 10.944938 10.975292 10.979631 10.957787 10.922914 10.932220 10.954095 10.976683
  367. 150.00000 11.252048 11.205402 11.239195 11.236837 11.208383 11.236096 11.222959 11.252003 11.256350 11.233049 11.191726 11.204431 11.227302 11.250130
  368. ];
  369. % set zero current strength to zero (ignore remnant field when interpolating)
  370. n=find(mms150(:,1)==0);
  371. mms150(n,2:end)=zeros(size(mms150(n,2:end)));
  372. % mainamp50AmaxAbs.txt (M.Masuzawa)
  373. mms50=[ ...
  374. % 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
  375. % Current QEA13 QEA14 QEA17 QEA18 QEA19 QEA20 QEA21 QEA22 QEA23 QEA24 QEA25 QEA26 QEA27 QEA28 QEA29 QEA30 QEA31 QEA32 QEA33 QEA34
  376. % ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
  377. 0.0000000 0.028219100 0.040338729 0.029890871 0.029497238 0.034525234 0.029425563 0.027658368 0.027779808 0.027477957 0.027904926 0.028466344 0.027899513 0.021434505 0.020964241 0.022032959 0.031943474 0.028553501 0.032123175 0.028957782 0.030306084
  378. 3.3333001 0.32538533 0.33715573 0.32505092 0.32442081 0.33133936 0.32527959 0.32236442 0.32316262 0.32378274 0.32318223 0.32277632 0.32569003 0.31823730 0.31833690 0.31833255 0.32496139 0.32426021 0.32609594 0.32492208 0.32532936
  379. 6.6666999 0.63208896 0.64047939 0.62909323 0.62828606 0.63420987 0.63093483 0.62648714 0.62732536 0.62899351 0.62777531 0.62660450 0.63004756 0.62380683 0.62063122 0.62245131 0.62730497 0.62851375 0.63048053 0.63080686 0.63031852
  380. 10.000000 0.94148004 0.94603467 0.93590742 0.93486601 0.93937200 0.93977785 0.93356729 0.93421125 0.93711084 0.93520695 0.93332684 0.93697536 0.93220925 0.93336999 0.92926800 0.93291068 0.93584037 0.93825185 0.93971300 0.93844241
  381. 13.333000 1.2529521 1.2537711 1.2449207 1.2435915 1.2468803 1.2507372 1.2427585 1.2436256 1.2473272 1.2448578 1.2420537 1.2458996 1.2426412 1.2442291 1.2379702 1.2409927 1.2454461 1.2481778 1.2507575 1.2488642
  382. 16.667000 1.5639043 1.5619390 1.5534923 1.5519813 1.5545483 1.5611117 1.5514039 1.5526090 1.5572330 1.5539834 1.5500604 1.5545545 1.5523636 1.5558752 1.5462418 1.5489813 1.5547541 1.5578287 1.5613403 1.5589787
  383. 20.000000 1.8741443 1.8705049 1.8618793 1.8599479 1.8627108 1.8707479 1.8593891 1.8607818 1.8663399 1.8625795 1.8572839 1.8631321 1.8616416 1.8612897 1.8541365 1.8565601 1.8693553 1.8670722 1.8712773 1.8684933
  384. 23.333000 2.1841798 2.1801219 2.1701567 2.1678445 2.1716371 2.1799972 2.1672122 2.1689975 2.1754117 2.1708317 2.1641300 2.1717048 2.1705081 2.1738250 2.1618476 2.1639242 2.1730690 2.1759412 2.1809573 2.1777673
  385. 26.667000 2.5015478 2.4985588 2.4863641 2.4835498 2.4888871 2.4966478 2.4827976 2.4850328 2.4919055 2.4866457 2.4782469 2.4880300 2.4868593 2.4898355 2.4769828 2.4786382 2.4888225 2.4917469 2.4980671 2.4942434
  386. 30.000000 2.8104367 2.8091772 2.7940876 2.7817678 2.7979240 2.8048146 2.7898581 2.7925751 2.8000093 2.7939847 2.7838352 2.7957492 2.7943413 2.7978346 2.7833722 2.7845740 2.7960050 2.7988794 2.8063977 2.8015463
  387. 33.333000 3.1178350 3.1189554 3.1004212 3.0964954 3.1058538 3.1115117 3.0956228 3.0989015 3.1066909 3.0998857 3.0877182 3.1027405 3.1005061 3.1060436 3.0885746 3.0891926 3.1019273 3.1042821 3.1130064 3.1073811
  388. 36.667000 3.4247386 3.4286873 3.4063148 3.4016933 3.4134352 3.4176803 3.4008279 3.4047415 3.4126701 3.4052124 3.3910625 3.4092085 3.4063492 3.4109607 3.3936911 3.3930762 3.4074311 3.4094582 3.4190931 3.4125471
  389. 40.000000 3.7313569 3.7384400 3.7118733 3.7068160 3.7210751 3.7232792 3.7056735 3.7103586 3.7184212 3.7102764 3.6940403 3.7157691 3.7122478 3.7137301 3.6987295 3.6968606 3.7129827 3.7139955 3.7245657 3.7174027
  390. 43.333000 4.0364571 4.0471492 4.0160818 4.0105395 4.0274525 4.0274763 4.0088239 4.0143366 4.0225286 4.0137668 3.9955339 4.0211272 4.0167503 4.0174079 4.0025177 3.9992521 4.0173407 4.0175309 4.0290337 4.0212517
  391. 46.667000 4.3408098 4.3552766 4.3197250 4.3134394 4.3334475 4.3303418 4.3110003 4.3178172 4.3259072 4.3162355 4.2959971 4.3253222 4.3204656 4.3214779 4.3060641 4.3016801 4.3217702 4.3206162 4.3329167 4.3249798
  392. 50.000000 4.6463265 4.6635814 4.6250100 4.6178207 4.6411600 4.6339417 4.6146355 4.6222954 4.6305385 4.6191273 4.5978169 4.6309385 4.6259670 4.6268058 4.6109891 4.6052308 4.6270924 4.6251469 4.6381001 4.6298366
  393. ];
  394. % set zero current strength to zero (ignore remnant field when interpolating)
  395. n=find(mms50(:,1)==0);
  396. mms50(n,2:end)=zeros(size(mms50(n,2:end)));
  397. qleff=0.19849;
  398. n=find(lookup(:,1)==id);
  399. Imax=lookup(n,2);
  400. Col=lookup(n,3);
  401. if (Imax==150)
  402. qI=mms150(:,1);
  403. qG=mms150(:,Col)/qleff;
  404. elseif (Imax==50)
  405. qI=mms50(:,1);
  406. qG=mms50(:,Col)/qleff;
  407. end
  408. end