import radarsimpy
radarsimpy.__version__
'10.0.0'
This is example shows how to use RadarSimPy
to simulate the RCS of an object based on its 3D model.
The plate model is with .stl
. It can be imported by using meshio
module.
import meshio
import plotly.graph_objs as go
from IPython.display import SVG, display
mesh_data = meshio.read('../models/plate5x5.stl')
fig = go.Figure()
fig.add_trace(go.Mesh3d(x=mesh_data.points[:, 0],
y=mesh_data.points[:, 1],
z=mesh_data.points[:, 2],
i=mesh_data.cells[0].data[:, 0],
j=mesh_data.cells[0].data[:, 1],
k=mesh_data.cells[0].data[:, 2],
intensity=mesh_data.points[:, 2],
colorscale='Viridis'
))
# fig.show()
display(SVG(fig.to_image(format='svg', scale=1)))
Incident angle and observation angle are the same
import numpy as np
import time
from radarsimpy.rt import rcs_sbr
phi = np.arange(-90, 90, 0.5)
theta = 90
freq = 1e9
pol = [0, 0, 1]
density = 4
rcs = np.zeros_like(phi)
tic = time.time()
for phi_idx, phi_ang in enumerate(phi):
rcs[phi_idx] = 10 * \
np.log10(
rcs_sbr('../models/plate5x5.stl',
freq,
phi_ang,
theta,
pol=pol,
density=density)+0.000001)
toc = time.time()
print('Exec time :'+str(toc-tic) + 's')
Exec time :45.19536089897156s
Plot
fig = go.Figure()
fig.add_trace(go.Scatter(x=phi, y=rcs))
fig.update_layout(
title='Monostatic RCS vs Observation Angle',
yaxis=dict(title='RCS (dBsm)'),
xaxis=dict(title='Observation angle phi (Degree)'),
)
# fig.show()
display(SVG(fig.to_image(format='svg', scale=1)))
Incident angle and observation angle are different
obs_phi = np.arange(-90, 90, 0.5)
obs_theta = 90
freq = 1e9
pol = [0, 1, 0]
density = 1
rcs_vpol = np.zeros_like(obs_phi)
rcs_hpol = np.zeros_like(obs_phi)
inc_phi = 45
inc_theta = 90
tic = time.time()
for phi_idx, phi_ang in enumerate(obs_phi):
rcs_vpol[phi_idx] = 10 * \
np.log10(
rcs_sbr('../models/plate5x5.stl',
freq,
phi_ang,
obs_theta,
inc_phi=inc_phi,
inc_theta=inc_theta,
pol=[0, 0, 1],
density=density)+0.0000001)
rcs_hpol[phi_idx] = 10 * \
np.log10(
rcs_sbr('../models/plate5x5.stl',
freq,
phi_ang,
obs_theta,
inc_phi=inc_phi,
inc_theta=inc_theta,
pol=[0, 1, 0],
density=density)+0.0000001)
toc = time.time()
print('Exec time :'+str(toc-tic) + 's')
Exec time :88.91486930847168s
Plot
fig = go.Figure()
fig.add_trace(go.Scatter(x=obs_phi, y=rcs_vpol, name='V-Pol'))
fig.add_trace(go.Scatter(x=obs_phi, y=rcs_hpol, name='H-Pol'))
fig.update_layout(
title='Bistatic RCS vs Observation Angle (Incident angle = 45 deg)',
yaxis=dict(title='RCS (dBsm)'),
xaxis=dict(title='Observation angle phi (Degree)'),
)
# fig.show()
display(SVG(fig.to_image(format='svg', scale=1)))