SpecterCS v1.3.0
Changes:
- Enhanced
PhysicalOpticsKernelfor realistic RCS scaling and temperature-aware calculations. - Implemented
CoupledSimulationto advance EM–thermal–fluid interactions in time steps. - Added
ElectromagneticAbsorptionKernelto compute absorbed power andFacetThermalSolverfor heat transfer analysis. - Introduced
ExternalFlowModelfor convection and air temperature modeling. - Updated
RcsEngineandRcsMeshto support temperature-sensitive RCS calculations and thermal links. - Added
ThermalMeshTopologyfor facet connectivity andSurfaceThermalMaterialfor material thermal properties. - Enhanced
RadarConfigwith incident power flux for EM heating. - Updated UI to include controls and display for multiphysics simulation results.
- General refactoring and cleanup for improved maintainability.
- Bug Fixes (see fixes)
Fixes:
- Rewrote
FacetContributionto use a new exact planar-polygon phase integral. - Updated documentation to clarify units and physical meaning of scattering amplitude
S. - Replaced
TrianglePhaseIntegralwith a Stokes'-theorem-based boundary integral. - Added broadside limit handling for constant-phase facets.
- Replaced
EdgeIntegralwithEdgeTermfor better edge weighting and degenerate case handling.
Known Issues:
- OBJ files still return inflated RCS values due to OBJ file limitations, recommended users only use STL files.
- RCS values still show impossibly high values due to edge cases where the engine is unable to differentiate between what to and not to include (fix is planned for next release).
Planned additions:
- Non-Linear, Spatially-Variant Surface Impedance (
$Z_s$ ) Boundaries - Fluidic-Embedded Substrate Homogenization
- High-G Dynamic Loading Deformable Mesh
- Quantum Capacitance (
$C_q$ ) Graphene Models. - Galinstan Oxidation Layer Modeling
Use:
- Unzip archive
- Enter produced folder
- Navigate to
Echo1.Wpf.exe(DO NOT REMOVE FROM FOLDER) - Run
Full Changelog: v1.2.2...v1.3.0
Guide
Version: v1.3.0
Application: SpecterCS — RCS Simulator
Important: SpecterCS is an educational and research visualization tool. Its results are not validated for engineering, safety-critical, operational, or defence decisions.
1. What SpecterCS does
SpecterCS estimates the monostatic radar cross section (RCS) of a 3D target mesh.
It provides:
- Physical Optics (PO) surface-scattering calculations.
- UTD/PTD-inspired edge-diffraction estimates.
- Coherent total RCS reporting in dBsm and square metres.
- Per-facet RCS heatmap visualization.
- Frequency, azimuth, elevation, and polarization controls.
- Full azimuth sweeps with CSV export.
- Frequency sweeps with an on-screen plot.
- Whole-model material assignment.
- An experimental EM–thermal–fluid coupling step.
The CPU solver is the authoritative RCS path. GPU compute support exists in the project but is not the source of the RCS value shown in the application.
2. Requirements
- Windows
- .NET 9 SDK/runtime
- DirectX 12-capable GPU is optional
- A supported 3D model in
.stlor.objformat
To run from source:
dotnet restore SpecterCS.sln
dotnet run --project Echo1_Wpf\SpecterCS_Wpf.csproj3. Quick start
- Start SpecterCS.
- Select Load OBJ / STL…
- Choose a model.
- Confirm the model dimensions are expressed in metres.
- Adjust frequency, azimuth, elevation, and polarization.
- Read the RCS result and inspect the heatmap.
For the most reliable import, use a clean, watertight STL mesh.
4. Loading a model
Select Load OBJ / STL… in the Model panel.
After loading, the application displays:
- Number of facets
- Number of shared edges
- Bounding-box diagonal in metres
Supported formats
| Format | Support | Notes |
|---|---|---|
| STL | Recommended | Use a clean, manifold, watertight mesh. |
| OBJ | Basic support | Only vertices and faces are used. Texture coordinates, normals, material files, and most advanced OBJ features are ignored. |
Mesh requirements
Use meshes that are:
- Sized in metres.
- Closed/watertight where possible.
- Free of duplicate, zero-area, or severely overlapping triangles.
- Consistently wound, with outward-facing normals.
- Manifold, especially when using edge diffraction or the thermal solver.
Poor OBJ topology, inverted normals, non-manifold edges, or incorrect scale can produce misleading RCS values.
5. Navigating the 3D view
| Control | Action |
|---|---|
| Right-click + drag | Rotate the camera |
W / S |
Move forward / backward |
A / D |
Move left / right |
Q / E |
Move up / down |
Hold Left Shift |
Move faster |
6. Configuring the radar
Frequency
Set frequency with the Frequency (GHz) slider.
Available range:
1 GHz to 40 GHz
Preset buttons are provided for common bands:
| Preset | Frequency |
|---|---|
| L | 1.3 GHz |
| S | 3.0 GHz |
| C | 5.5 GHz |
| X | 10.0 GHz |
| Ku | 16.0 GHz |
| Ka | 35.0 GHz |
Changing frequency recalculates the RCS.
Azimuth and elevation
- Azimuth: −180° to +180°
- Elevation: −90° to +90°
The radar direction is calculated from these angles. Moving either slider recalculates the RCS and heatmap.
Polarization
| Setting | Meaning |
|---|---|
| VV | Vertical transmit / vertical receive |
| HH | Horizontal transmit / horizontal receive |
| HV (cross) | Cross-polarized mode |
Cross-polarized behavior is currently approximate and should be treated as exploratory.
7. Reading the RCS result
The RCS Result panel displays:
| Value | Meaning |
|---|---|
dBsm |
RCS relative to one square metre: 10 × log10(RCS in m²) |
m² |
Linear radar cross section |
PO only |
Surface-scattering contribution |
Edge diffraction |
Edge-diffraction contribution |
The total is a coherent EM result. It is not necessarily equal to a simple sum of the displayed component levels in dB.
Heatmap
The model is coloured by per-facet RCS contribution:
Dark blue → low contribution
Cyan/yellow → medium contribution
Red → high contribution
Use the Display panel to set the heatmap's minimum and maximum dBsm range.
The heatmap is useful for locating strong scattering regions, but it does not replace the coherent total RCS calculation.
8. Azimuth sweep
The Sweep panel supports manual and automated azimuth analysis.
Automatic sweep
- Set Sweep rate (°/s).
- Enable Auto-sweep azimuth.
- The azimuth changes continuously and RCS updates during the sweep.
Full sweep
Select Compute full sweep to compute:
0° to 359° azimuth
1° spacing
When complete, SpecterCS draws a polar plot in the Sweep panel.
Exporting an azimuth sweep
After a successful full sweep:
- Select Export CSV…
- Choose a destination and filename.
The CSV includes:
azimuth_deg,rcs_dbsm
It also includes metadata for frequency, elevation, polarization, model name, and facet count.
9. Frequency sweep
The Frequency sweep panel evaluates RCS over a selected frequency interval.
- Enter Start GHz.
- Enter Stop GHz.
- Select Run frequency sweep.
The application currently calculates 100 frequency samples and draws the result in the on-screen plot.
Frequency-sweep data is displayed in the application but is not exported by the current CSV export button.
10. Materials
The Materials panel applies one material to the entire loaded model.
Available choices:
| Material | Description |
|---|---|
| PEC (default) | Perfect electric conductor |
| Carbon foam RAM 10 mm | Carbon-loaded absorbing-material approximation |
| Ferrite tile 3 mm | Ferrite-based absorbing-material approximation |
| Dielectric coating 5 mm | Dielectric coating approximation |
| Aluminium 20 mm | Lossy aluminium approximation |
| Titanium Alloy 20 mm | Lossy titanium-alloy approximation |
To apply a selection:
- Choose a material from the list.
- Select Apply to whole model.
- SpecterCS clears its RCS cache and recalculates the result.
The current interface does not provide region-selection controls, despite the panel text referring to a selected region.
11. Experimental EM–thermal–fluid simulation
SpecterCS includes an experimental single-step EM–thermal–fluid model.
The coupling sequence is:
EM absorption
→ facet heating
→ conduction, convection, and radiation
→ surrounding-air temperature update
→ temperature-dependent EM material response
Select Advance EM–thermal–fluid step to advance one configured timestep.
Important limitations
The current interface does not expose controls for:
- Incident power flux
- Ambient temperature
- Air velocity
- Pressure
- Timestep
- Number of coupling substeps
- Surface thermal properties
By default, RadarConfig.IncidentPowerFluxWm2 is zero. This means normal RCS use does not heat the target, and selecting the multiphysics button will normally produce no meaningful thermal change.
For experimental developer use, configure the simulation in code before advancing it:
_radar.IncidentPowerFluxWm2 = 1000.0;
_multiphysics = new CoupledSimulation(
_mesh,
_engine,
new FlowConditions
{
AmbientTemperatureK = 293.15,
AirTemperatureK = 293.15,
VelocityMps = 20.0,
PressurePa = 101325.0,
CharacteristicLengthM = 1.0
},
new CoupledSimulationConfig
{
TimeStepSeconds = 0.05,
CouplingSubsteps = 1
});This is a reduced-order surface model, not a computational-fluid-dynamics solver.
12. Interpreting results responsibly
RCS depends strongly on:
- Geometry scale
- Mesh quality
- Surface normal direction
- Frequency
- Viewing direction
- Polarization
- Material assumptions
- Edge topology
- Numerical approximation limits
Use the simulator to compare trends, visualize scattering regions, and explore parameter sensitivity.
Do not interpret a single result as a measured or certified RCS value.
13. Known limitations
- Only monostatic RCS is implemented.
- The CPU path is authoritative; GPU support is approximate and not used for the displayed final RCS.
- Edge diffraction is UTD/PTD-inspired, not a complete validated diffraction solution.
- Multiple scattering and multi-bounce effects are not modeled.
- OBJ import is intentionally basic.
- Mesh decimation is simple uniform facet sampling.
- Material data is approximate and should not be treated as validated characterization data.
- The heatmap uses per-facet values and is not a full field visualization.
- Frequency-sweep export is not currently available.
- The EM–thermal–fluid module is experimental and requires code configuration for meaningful heating.
14. Troubleshooting
The RCS value seems too high
Check the following:
- Confirm the mesh is scaled in metres.
- Use a watertight STL instead of an OBJ where possible.
- Verify outward-facing normals.
- Check for duplicate geometry or overlapping shells.
- Inspect the PO and edge-diffraction result breakdown.
- Reduce mesh complexity only after confirming the original mesh is clean.
- Treat values near diffraction boundaries with caution.
The model is not visible or is difficult to inspect
- Use right-click drag to rotate.
- Use
W,A,S,D,Q, andEto move. - Load a mesh with a non-zero physical size.
- Verify the model contains valid triangles.
The heatmap looks uniform
- Change azimuth, elevation, frequency, or material.
- Adjust Heatmap min and Heatmap max.
- Confirm that an RCS calculation has completed.
The multiphysics step does not change temperature
Set a non-zero IncidentPowerFluxWm2 in code. The default is zero to prevent ordinary RCS calculations from being interpreted as heating simulations.