From: 2weiEmu Date: Tue, 3 Feb 2026 11:01:49 +0000 (+0100) Subject: updated: initial e-war research done, now we have to see how that pans out X-Git-Url: https://git.saalbach.dev/?a=commitdiff_plain;h=1d756a2bf4410cc8e267a231c03ec43df33946e3;p=research-obsidian.git updated: initial e-war research done, now we have to see how that pans out --- diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 48ce2f2..f82e2f3 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -178,9 +178,10 @@ "active": "04094233c3d02ad2", "lastOpenFiles": [ "Nebulous Command/calc.py~", + "Nebulous Command/4913", + "List of things to do.md", "Nebulous Command/calc.py", "Nebulous Command/Notes on Mechanics.md~", - "List of things to do.md", "Nebulous Command/Notes on Mechanics.md", "Nebulous Command/ANS/My Fleets/ANS Dedicated/Battle Report 1.md", "Nebulous Command/ANS/My Fleets/ANS Dedicated/Battle Report 2.md", @@ -213,7 +214,6 @@ "Pasted image 20251207164533.png", "Daily/16-01-2025.md", "Bundesverfassungsgericht/Urteil_des_Ersten_Senats_vom_5_November_2019.pdf", - "Poems that I like", "Pasted image 20251106230015.png", "Pasted image 20251106225651.png", "Pasted image 20251106225645.png", diff --git a/Nebulous Command/Notes on Mechanics.md b/Nebulous Command/Notes on Mechanics.md index db021b1..bea2ef3 100644 --- a/Nebulous Command/Notes on Mechanics.md +++ b/Nebulous Command/Notes on Mechanics.md @@ -100,3 +100,37 @@ you can lock multiple missiles if you have multiple fcrs. locks function mostlyl +## turns out missiles have radar-cross-sections as well + +| Missile | RCS (m^2) (Front / Side) | +| ----------------- | ------------------------ | +| SGM-100 Balestra | 156 / 400 | +| SGM-200 Tempest | 625 / 950 | +| SGT-300 Pilum | 900 / 2400 | +| SGM-H-200 Cyclone | 625 / 950 | +| SGM-H-300 Atlatl | 1600 / 3600 | +| CM-400 Container | 1600 / 4000 | +## jamming / jamming power +Jammer radiated power $P_j$ +Gain $G_j$ +Distance $d$ +$$j=\frac{P_jG_j}{4\pi d^2}$$ +|Jammer power[[1]](https://wiki.hoodedhorse.com/NEBULOUS_Fleet_Command/Electronic_Warfare#cite_note-1)|Multiplier per Jammer|Total[[2]](https://wiki.hoodedhorse.com/NEBULOUS_Fleet_Command/Electronic_Warfare#cite_note-2)| +|---|---|---| +|Strongest Jammer|1.000|1.000| +|2nd Strongest|0.876|1.876| +|3rd Strongest|0.589|2.465| +|4th|0.304|2.770| +|5th|0.121|2.890| +|6th|0.037|2.927| +|7th|0.009|2.935| +|8th|0.002|2.937| +|9th|<0.001|2.937| + +Stats for the Self-Screening Jammer and Boosted Version: + +| Jammer | Range (km) | Radiated Power (kW) | Gain (dB) | +| ----------------------------- | ---------- | ------------------- | --------- | +| Self Screening Jammer | 2.5 | 5 | 2 | +| Boosted Self Screening Jammer | 5 | 5 | 4 | +| | | | | diff --git a/Nebulous Command/calc.py b/Nebulous Command/calc.py index 2a1d071..1a9f996 100644 --- a/Nebulous Command/calc.py +++ b/Nebulous Command/calc.py @@ -6,6 +6,21 @@ import math padding = 16 +@dataclass +class Jammer: + name: str + range_km: float + radiated_power_kw: int + gain_db: int + + +jammers = [ + Jammer("No Jammer", 0, 0, 0), + Jammer("Self Screening Jammer", 2.5, 5, 2), + Jammer("Boosted Self Screening Jammer", 5, 5, 4) +] + + @dataclass class Ship: name: str @@ -24,7 +39,13 @@ ships = [ Ship("Flathead", 9869), Ship("Ocello", 15745), Ship("Marauder", 15745), - Ship("Moorline", 15745) + Ship("Moorline", 15745), + Ship("SGM-100 Balestra", 156), + Ship("SGM-200 Tempest", 625), + Ship("SGT-300 Pilum", 900), + Ship("SGM-H-200 Cyclone", 625), + Ship("SGM-H-300 Atlatl", 1600), + Ship("CM300 Container", 1600), ] @@ -70,6 +91,14 @@ def select_radar() -> Radar: return radars[i - 1] +def select_jammer() -> Jammer: + print("Select the index of the radar you want") + for i, jammer in enumerate(jammers): + print(f"{i+1}: {jammer.name}") + i = int(input(":")) + return jammers[i - 1] + + def calculate_raw_return_power( radiated_power, gain, rcs, aperture_size, distance): top_half = radiated_power * (gain ** 2) * (rcs / 10) * aperture_size @@ -100,13 +129,16 @@ def calc_rpd(): )).ljust(padding)} | {d}""") -def calculate_distance_noise_floor_radar(radiated_power, gain, rcs, aperture_size): +def calculate_distance_noise_floor_radar( + radiated_power, gain, rcs, aperture_size, + noise_floor=1*(10**-7)): top_half = radiated_power * (gain ** 2) * (rcs / 10) * aperture_size - bottom_half = (1 * (10 ** -7) * 16 * (math.pi ** 2)) + bottom_half = (noise_floor * 16 * (math.pi ** 2)) return ((top_half / bottom_half) ** 0.25) -def calculate_distance_signal_loss_floor_radar(radiated_power, gain, rcs, aperture_size, sensitivity): +def calculate_distance_signal_loss_floor_radar( + radiated_power, gain, rcs, aperture_size, sensitivity): if sensitivity == 0: return 0 @@ -117,21 +149,32 @@ def calculate_distance_signal_loss_floor_radar(radiated_power, gain, rcs, apertu return (top_half / bottom_half) ** 0.25 +def calculate_jammer_raw_radiated_power(radiated_power, gain, distance): + return (radiated_power * gain) / (math.pi * 4 * (distance ** 2)) + + def calculate_distance_hidden(): # we want to calculate the distance at which # we will be hidden from an enemy ships # that is using a certain radar. Assuming no jamming and no burn throughs. s = select_ship() r = select_radar() + j = select_jammer() + + rcs_modifiers = [1, 0.9, 0.75, 0.65, 0.6, 0.4475, 0.2] - rcs_modifiers = [1, 0.9, 0.75, 0.65] + # jamming power will simply be done at and half range + if j.name != "No Jammer": + noise_floorhalf = ((10 ** -7) + calculate_jammer_raw_radiated_power(j.radiated_power_kw, j.gain_db, (j.range_km) * 1000) * r.gain_db) * (10 ** (r.noise_filtering_dB / 10)) + else: + noise_floorhalf = (10 ** -7) - print(f"The noise floor distance for {s.name} using {r.name}") + print(f"The noise floor distance for {s.name} using {r.name} at half jammer range") for m in rcs_modifiers: print(f"""{ calculate_distance_noise_floor_radar( r.radiated_power_kw, r.gain_db, s.rcs_m2 * m, - r.aperture_size_m2 + r.aperture_size_m2, noise_floorhalf ):.2f}m with rcs modifier: {m}""") print(f"The sensitivity distance floor for {s.name} using {r.name}") @@ -151,7 +194,7 @@ def print_options(): options = [ ["Calculate Return Power Density for Ship and Radar", calc_rpd], ["Calculate the distance at which the ship should be hidden", - calculate_distance_hidden] + calculate_distance_hidden], ]