|
import numpy as np |
|
import seaborn as sns |
|
import pandas as pd |
|
|
|
def B_field_norm(Bmax:float,L:float,k:int=16,plot=True) -> np.array: |
|
""" Returns vec B_z for MS config |
|
|
|
Args: |
|
Bmax (any): maximum B in thruster |
|
L - channel length |
|
k - magnetic field profile number |
|
""" |
|
z = np.linspace(0,L*1.4,200) |
|
B = Bmax * np.exp(-k * (z/(1.2*L) - 1)**2) |
|
if plot: |
|
sns.lineplot(x=z,y=B) |
|
return z,B |
|
|
|
def PUdesign(P:float,U:float) -> pd.DataFrame: |
|
"""Computes design via numerical model, uses fits from PINNs |
|
|
|
Args: |
|
P (float): _description_ |
|
U (float): _description_ |
|
|
|
Returns: |
|
_type_: _description_ |
|
""" |
|
d = np.sqrt(P/(635*U)) |
|
h = 0.245*d |
|
m_a = 0.0025*h*d |
|
T = 890 * m_a * np.sqrt(U) |
|
j = P/(np.pi*d*h) |
|
Isp = T/(m_a*9.81) |
|
nu_t = T*Isp*9.81/(2*P) |
|
df = pd.DataFrame([[d,h,m_a,T,j,nu_t,Isp]],columns=['d','h','m_a','T','j','nu_t','Isp']) |
|
g = sns.barplot(df,facecolor='gray') |
|
g.set_yscale("log") |
|
return df |
|
|
|
def cathode_erosion(): |
|
pass |