
218 # ( b ) Enc lo sed mass
219 ax = axes [0 , 1]
220 fit_M = val id & ( M_enc > 0)
221 ax . loglog ( r_c [ fit_M ] , M_ enc [ fit_M ] , ’o ’, color = c_data , ms =4.5 ,
222 mew =0 , alpha =0.85 , label = r ’ $M_ {\ mat hr m { halo }}( r)$ ’)
223 if n_M is not None :
224 ax . loglog ( r_th , np . exp ( A_M ) * r_ th ** n_M , ’-’, co lor = c_fit ,
225 lw =2 , label = r ’ Best fit : $M \ propto r ^{%.2 f } $ ’ % n_M )
226 M_ lin = np . exp ( A_M ) * r_ th [ len ( r_th ) //2]** n_M * ( r_th / r_th [ len ( r_th ) //2])
227 ax . loglog ( r_th , M_lin , ’ --’, color = c_theory , lw =1.5 , a lpha =0.6 ,
228 label = r ’ Theory : $M \ p ropto r$ ’)
229 ax . set _xl abel ( r ’ Ra di us $r / a$ ’)
230 ax . set _yl abel ( r ’ Enclo sed dark mass $M_ {\ m athrm { halo }}( r ) $ ’)
231 ax . set_t itl e ( r ’(b) En clo se d Mass : $M \ pr op to r ^{%. 2 f}$ ’ % n_M , fon tsize = 12)
232 ax . legend ( fo ntsiz e =9 , f ram eal pha = 0. 9)
233 ax . grid ( True , alpha =0.2 , which = ’ both ’)
234
235 # ( c ) Rot at ion curve
236 ax = axes [1 , 0]
237 v_max = np . max ( v_rot [ valid ])
238 v_norm = v _rot / v_max
239 vv = valid & ( v_norm > 0)
240 ax . plot ( r_c [ vv ] , v_norm [ vv ] , ’o - ’, color = c_data , ms =4 , lw =1.5 ,
241 label =r ’ $v ( r ) $ from to rsi onal halo ’)
242 v_ ou ter = v _n or m [ vv ][ len ( v_norm [ vv ]) // 3:]
243 v_fl = np . mean ( v_out er )
244 fl atn es s = np . std ( v _o uter ) / v_ fl * 100
245 ax . ax hline ( v_fl , c olor = c_fit , ls = ’ -- ’ , lw =1.5 , alp ha =0.7 ,
246 label = r ’ Flat : $v / v_ {\ mathrm { max }} = %.2 f$ ’ % v_fl )
247 r_kep = r_c [ vv ]
248 v_kep = v_norm [ vv ][0] * np . sqrt ( r_c [ vv ][0] / r_ kep )
249 ax . plot ( r_kep , v_kep , ’: ’, color = c_kep , lw =2 , alpha =0.6 ,
250 label = ’ Ke ple ria n ( no dark halo ) ’)
251 ax . set _xl abel ( r ’ Ra di us $r / a$ ’)
252 ax . set _yl abel ( r ’ $v (r) / v_ {\ mathrm { max }} $ ’)
253 ax . set_t itl e ( r ’(c) Ro tat io n Curve ($\ sigma /\ mu = %.1 f \%% $ ) ’ % flatness , f ontsi ze =12)
254 ax . se t_y li m (0 , 1. 4)
255 ax . legend ( fo ntsiz e =9 , f ram eal pha = 0. 9)
256 ax . grid ( True , alpha =0.2)
257
258 # ( d ) Per - node scat te r
259 ax = axes [1 , 1]
260 sca tte r_m a sk = (( r_p erp _in t > 2 * b) & ( r_ per p_i nt < N_ eff ) & ( E _no de_ int > 0) )
261 ax . sc atter ( r_ per p_i nt [ sca tte r _ma sk ], E_n ode _in t [ s catt er_ mas k ] ,
262 s =0.5 , a lpha =0.08 , color = c_data , rast eri zed = True )
263 r_sort = np . li ns pac e (2 * b , N_eff , 300)
264 me d_ val = np . m ed ia n ( E _node _in t [ sc att e r_m ask ] * r _pe rp_ int [ sca tte r_m ask ]**2)
265 ax . plot ( r_sort , m ed _val / r_ sort **2 , ’ - ’, color = c_fit , lw =2 ,
266 label =r ’$ \ va rep sil on \ pr op to 1/ r ^2 $ ’ )
267 ax . set _xl abel ( r ’ Dista nce from core $r / a$ ’)
268 ax . set _yl abel ( r ’ En er gy per node $\ var e psi lon _ i$ ’)
269 ax . set_t itl e ( ’ (d) Per - Node St ra in Energ y ’ , fonts ize =12)
270 ax . set _ys cale ( ’ log ’ )
271 ax . set _xs cale ( ’ log ’ )
272 ax . legend ( fo ntsiz e =9 , f ram eal pha = 0. 9)
273 ax . grid ( True , alpha =0.2 , which = ’ both ’)
274
275 plt . ti g ht_ lay out ( rec t =[0 , 0.02 , 1, 0.94])
276 fig . su ptitl e (
277 ’ Screw Di slo cat ion on FCC ($K =12 $ ) L at tice : ’
278 ’ Tor sio nal Dark Matter Halo \ n ’
279 r’ $\ rho_ \ theta \ p ro pt o 1/ r ^2 \;\ Ri ght arr ow \; ’
280 r’ M_ {\ mathrm { halo }} \ p ro pt o r \;\ R igh tar row \; ’
281 r’ v(r) = \ m at hrm { cons t }$ ’ ,
282 fon tsize =13 , fo ntw eight = ’ bold ’, y =0.9 8)
283
284 return fig , f la tne ss
285
10