Skip to content

Commit

Permalink
Create communication_system_simulator.py
Browse files Browse the repository at this point in the history
  • Loading branch information
KOSASIH authored Jul 30, 2024
1 parent 5dfa296 commit 3454722
Showing 1 changed file with 82 additions and 0 deletions.
82 changes: 82 additions & 0 deletions core/aerospace/communication_system_simulator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import numpy as np

class CommunicationSystemsSimulator:
def __init__(self, spacecraft, groundStation):
self.spacecraft = spacecraft
self.groundStation = groundStation

def simulateCommunication(self):
# Calculate signal strength
signalStrength = self.calculateSignalStrength()

# Calculate data rate
dataRate = self.calculateDataRate()

# Update spacecraft and ground station communication status
self.spacecraft.updateCommunicationStatus(signalStrength, dataRate)
self.groundStation.updateCommunicationStatus(signalStrength, dataRate)

def calculateSignalStrength(self):
# Calculate signal strength using free space path loss equation
frequency = self.spacecraft.getFrequency()
distance = self.spacecraft.getDistanceToGroundStation()
transmitterPower = self.spacecraft.getTransmitterPower()
antennaGain = self.spacecraft.getAntennaGain()
wavelength = self.spacecraft.getWavelength()

signalStrength = transmitterPower * antennaGain * wavelength**2 / ((4 * np.pi * distance)**2)

return signalStrength

def calculateDataRate(self):
# Calculate data rate using Shannon-Hartley theorem
bandwidth = self.spacecraft.getBandwidth()
signalToNoiseRatio = self.spacecraft.getSignalToNoiseRatio()

dataRate = bandwidth * np.log2(1 + signalToNoiseRatio)

return dataRate

class Spacecraft:
def __init__(self, frequency, distanceToGroundStation, transmitterPower, antennaGain, wavelength, bandwidth, signalToNoiseRatio):
self.frequency = frequency
self.distanceToGroundStation = distanceToGroundStation
self.transmitterPower = transmitterPower
self.antennaGain = antennaGain
self.wavelength = wavelength
self.bandwidth = bandwidth
self.signalToNoiseRatio = signalToNoiseRatio
self.communicationStatus = {"signalStrength": 0, "dataRate": 0}

def getFrequency(self):
return self.frequency

def getDistanceToGroundStation(self):
return self.distanceToGroundStation

def getTransmitterPower(self):
return self.transmitterPower

def getAntennaGain(self):
return self.antennaGain

def getWavelength(self):
return self.wavelength

def getBandwidth(self):
return self.bandwidth

def getSignalToNoiseRatio(self):
return self.signalToNoiseRatio

def updateCommunicationStatus(self, signalStrength, dataRate):
self.communicationStatus["signalStrength"] = signalStrength
self.communicationStatus["dataRate"] = dataRate

class GroundStation:
def __init__(self):
self.communicationStatus = {"signalStrength": 0, "dataRate": 0}

def updateCommunicationStatus(self, signalStrength, dataRate):
self.communicationStatus["signalStrength"] = signalStrength
self.communicationStatus["dataRate"] = dataRate

0 comments on commit 3454722

Please sign in to comment.