In [ ]:
import numpy as np
import matplotlib.pyplot as plt
In [ ]:
P = 0.0
B_z = 0.0
rr = np.linspace(0.0, 1.0, 100)
class Hat(object):
def __init__(self, r1, r2, type='linear'):
self.r1 = r1
self.r2 = r2
self.func = getattr(self, type)
def value(self, r):
return self.func(r)
def linear(self, r):
r1 = self.r1
r2 = self.r2
if r < r1:
return r/r1
if r >= r1 and r <= r2:
return 1.0
if r > r2:
return 1.0 - (r-r2)/r1
def poly(self, r):
r1 = self.r1
r2 = self.r2
if r < r1:
return -2.0/(r1**3)*r**3 + 3.0/(r1**2)*r**2
if r >= r1 and r <= r2:
return 1.0
if r > r2:
return -2.0/(1-r2)**3*(1-r)**3 + 3.0/(1-r2)**2*(1-r)**2
def sin(self, r):
r1 = self.r1
r2 = self.r2
if r < r1:
return 0.5 - 0.5*np.cos(r/r1*np.pi)
if r >= r1 and r <= r2:
return 1.0
if r > r2:
return 0.5 + 0.5*np.cos((r-r2)/r1*np.pi)
def B_phi(rr, r1=0.1, r2=0.9, type='linear'):
hat = Hat(r1, r2, type=type)
return np.array([hat.value(r) for r in rr])
In [ ]:
Bp = B_phi(rr, r1=0.2, r2=0.8, type='poly')
Bs = B_phi(rr, r1=0.2, r2=0.8, type='sin')
Bl = B_phi(rr, r1=0.2, r2=0.8, type='linear')
In [ ]:
plt.plot(rr, Bp, label='polynomial')
plt.plot(rr, Bs, label='sinusoidal')
plt.plot(rr, Bl, label='linear')
plt.legend(loc=8)
In [ ]:
#fig = plt.figure(figsize=(6,4))
plt.xlabel(r'$\rho$')
plt.ylabel(r'$B_{\phi}$')
plt.plot(rr, Bp, label='polynomial')
In [ ]:
In [ ]: