AGI STK Objects 11 Send comments on this topic.
IAgReceiver Interface





Description

Provides access to the properties and methods defining an Receiver object.

Object Model





Public Methods

Public Method IsRefractionTypeSupported Gets a value indicating whether the specified type can be used
Public Method SetModel Sets the current receiver model by name.

Public Properties

Public Property Graphics Get the 2D Graphics properties for the receiver.
Public Property Model Gets the current receiver model.
Public Property Refraction Refraction method, a member of the AgESnRefractionType enumeration.
Public Property RefractionModel Gets a refraction model
Public Property RefractionSupportedTypes Returns an array of valid choices
Public Property SupportedModels Gets an array of supported model names.
Public Property UseRefractionInAccess Flag controls whether refraction is applied when computing relative position in Access
Public Property VO Get the 3D Graphics properties for the receiver.

Example

Compute a link budget for a Transmtiter and Receiver pair, using simple models
[C#] Copy Code
IAgStkObject xmtrAsStkObject = geoTransmitter as IAgStkObject; 
IAgStkObject rcvrAsStkObject = facilityReceiver as IAgStkObject; 
 
//Set the transmitter to the simple model 
geoTransmitter.SetModel("Simple Transmitter Model"); 
IAgTransmitterModelSimple simpleTrans = geoTransmitter.Model as IAgTransmitterModelSimple; 
 
//Set the simple transmitter model's frequency to 3.2 GHz 
simpleTrans.Frequency = 3.2
 
//Set the simple transmitter model's EIRP to 60 dBW 
simpleTrans.Eirp = 60.0
 
//Set the receiver to the simple model 
facilityReceiver.SetModel("Simple Receiver Model"); 
IAgReceiverModelSimple simpleRcvr = facilityReceiver.Model as IAgReceiverModelSimple; 
 
//Set the simple receiver model's G/T to 60 dB/K 
simpleRcvr.GOverT = 60.0
 
//Create an access object for the access between the transmitter and recevier objects 
IAgStkAccess linkAccess = xmtrAsStkObject.GetAccessToObject(rcvrAsStkObject); 
 
//Compute access 
linkAccess.ComputeAccess(); 
 
// Get the access intervals 
IAgIntervalCollection accessIntervals = linkAccess.ComputedAccessIntervalTimes; 
 
// Extract the access intervals and the range information for each access interval 
Array dataPrvElements = new object[] { "Time""Eb/No""BER" }; 
 
IAgDataPrvTimeVar dp = linkAccess.DataProviders["Link Information"as IAgDataPrvTimeVar; 
 
for (int index0 = 0; index0 < accessIntervals.Count; ++index0) 

    object startTime = null, stopTime = null
    accessIntervals.GetInterval(index0, out startTime, out stopTime); 
 
    IAgDrResult result = dp.ExecElements(startTime, stopTime, 60ref dataPrvElements); 
 
    Array timeValues = result.DataSets[0].GetValues(); 
    Array ebno = result.DataSets[1].GetValues(); 
    Array ber = result.DataSets[2].GetValues(); 
 
    for (int index1 = 0; index1 < timeValues.GetLength(0); ++index1) 
    { 
        string time = (string)timeValues.GetValue(index1); 
        double ebnoVal = (double)ebno.GetValue(index1); 
        double berVal = (double)ber.GetValue(index1); 
        Console.WriteLine("{0}: Eb/No={1} BER={2}", time, ebnoVal, berVal); 
    } 
 
    Console.WriteLine(); 

 
 

Compute a link budget for a Transmtiter and Receiver pair, using complex models
[C#] Copy Code
IAgStkObject xmtrAsStkObject = geoTransmitter as IAgStkObject; 
IAgStkObject rcvrAsStkObject = facilityReceiver as IAgStkObject; 
 
//Enable the rain loss computation on the scenario RF environment 
scenarioRFEnv.PropagationChannel.EnableRainLoss = true
 
//Set the transmitter to the complex model 
geoTransmitter.SetModel("Complex Transmitter Model"); 
IAgTransmitterModelComplex complexTrans = geoTransmitter.Model as IAgTransmitterModelComplex; 
 
//Set the complex transmitter model's frequency to 3.2 GHz 
complexTrans.Frequency = 3.2
 
//Set the complex transmitter model's Power to 50 dBW 
complexTrans.Power = 50.0
 
//Set the complex transmitter's embedded antenna model to helix 
complexTrans.AntennaControl.SetEmbeddedModel("Helix"); 
 
//Set the beamwidth of the parablic antenna to 2 degrees 
IAgAntennaModelHelix helix = complexTrans.AntennaControl.EmbeddedModel as IAgAntennaModelHelix; 
helix.NumberOfTurns = 30.0
 
//Orient the complex transmitter embedded antenna's boresight to point directly at the receiver's location 
complexTrans.AntennaControl.EmbeddedModelOrientation.AssignAzEl(287.283.4, AgEAzElAboutBoresight.eAzElAboutBoresightRotate); 
 
//Set the receiver to the complex model 
facilityReceiver.SetModel("Complex Receiver Model"); 
IAgReceiverModelComplex complexRcvr = facilityReceiver.Model as IAgReceiverModelComplex; 
 
//Configure the complex receiver to use the antenna object on the same parent facility, by linking 
complexRcvr.AntennaControl.ReferenceType = AgEAntennaControlRefType.eAntennaControlRefTypeLink; 
complexRcvr.AntennaControl.LinkedAntennaObject = "Antenna/FacilityDish"
 
//Enable rain loss computation on the receiver 
complexRcvr.UseRain = true
complexRcvr.RainOutagePercent = 0.001
 
//Enable the receiver system noise temperature computation. 
complexRcvr.SystemNoiseTemperature.ComputeType = AgENoiseTempComputeType.eNoiseTempComputeTypeCalculate; 
 
//Enable the antenna noise temperature computation 
complexRcvr.SystemNoiseTemperature.AntennaNoiseTemperature.ComputeType = AgENoiseTempComputeType.eNoiseTempComputeTypeCalculate; 
complexRcvr.SystemNoiseTemperature.AntennaNoiseTemperature.UseRain = true
 
//Orient the antenna object's boresight to point directly at the transmitter's location 
facilityDish.Orientation.AssignAzEl(202.641.2, AgEAzElAboutBoresight.eAzElAboutBoresightRotate); 
 
//Set the antenna object's model to parabolic 
facilityDish.SetModel("Parabolic"); 
 
//Set the antenan object's design frequency to match the transmitter's 3.2 GHz 
facilityDish.Model.DesignFrequency = 3.2
 
//Set the antenna object's parabolic model diameter to 5 m. 
IAgAntennaModelParabolic parabolic = facilityDish.Model as IAgAntennaModelParabolic; 
parabolic.InputType = AgEAntennaModelInputType.eAntennaModelInputTypeDiameter; 
parabolic.Diameter = 5.0
 
//Create an access object for the access between the transmitter and recevier objects 
IAgStkAccess linkAccess = xmtrAsStkObject.GetAccessToObject(rcvrAsStkObject); 
 
//Compute access 
linkAccess.ComputeAccess(); 
 
// Get the access intervals 
IAgIntervalCollection accessIntervals = linkAccess.ComputedAccessIntervalTimes; 
 
// Extract the access intervals and the range information for each access interval 
Array dataPrvElements = new object[] { "Time""Xmtr Gain""Rcvr Gain""Eb/No""BER" }; 
 
IAgDataPrvTimeVar dp = linkAccess.DataProviders["Link Information"as IAgDataPrvTimeVar; 
 
for (int index0 = 0; index0 < accessIntervals.Count; ++index0) 

    object startTime = null, stopTime = null
 
    accessIntervals.GetInterval(index0, out startTime, out stopTime); 
 
    IAgDrResult result = dp.ExecElements(startTime, stopTime, 60ref dataPrvElements); 
 
    Array timeValues = result.DataSets[0].GetValues(); 
    Array xmtrGain = result.DataSets[1].GetValues(); 
    Array rcvrGain = result.DataSets[2].GetValues(); 
    Array ebno = result.DataSets[3].GetValues(); 
    Array ber = result.DataSets[4].GetValues(); 
 
    for (int index1 = 0; index1 < timeValues.GetLength(0); ++index1) 
    { 
        string time = (string)timeValues.GetValue(index1); 
        double xmtrGainVal = (double)xmtrGain.GetValue(index1); 
        double rcvrGainVal = (double)rcvrGain.GetValue(index1); 
        double ebnoVal = (double)ebno.GetValue(index1); 
        double berVal = (double)ber.GetValue(index1); 
        Console.WriteLine("{0}: Xmtr Gain = {1} Rcvr Gain = {2} Eb/No={3} BER={4}", time, xmtrGainVal, rcvrGainVal, ebnoVal, berVal); 
    } 
 
    Console.WriteLine(); 

 
 

Compute a link budget for a Transmtiter and Receiver pair, using simple models
[Visual Basic .NET] Copy Code
Dim xmtrAsStkObject As IAgStkObject = TryCast(geoTransmitter, IAgStkObject)
Dim rcvrAsStkObject As IAgStkObject = TryCast(facilityReceiver, IAgStkObject)

'Set the transmitter to the simple model
geoTransmitter.SetModel("Simple Transmitter Model")
Dim simpleTrans As IAgTransmitterModelSimple = TryCast(geoTransmitter.Model, IAgTransmitterModelSimple)

'Set the simple transmitter model's frequency to 3.2 GHz
simpleTrans.Frequency = 3.2

'Set the simple transmitter model's EIRP to 60 dBW
simpleTrans.Eirp = 60

'Set the receiver to the simple model
facilityReceiver.SetModel("Simple Receiver Model")
Dim simpleRcvr As IAgReceiverModelSimple = TryCast(facilityReceiver.Model, IAgReceiverModelSimple)

'Set the simple receiver model's G/T to 60 dB/K
simpleRcvr.GOverT = 60

'Create an access object for the access between the transmitter and recevier objects
Dim linkAccess As IAgStkAccess = xmtrAsStkObject.GetAccessToObject(rcvrAsStkObject)

'Compute access
linkAccess.ComputeAccess()

' Get the access intervals
Dim accessIntervals As IAgIntervalCollection = linkAccess.ComputedAccessIntervalTimes

#If Not CSToJava Then
' Extract the access intervals and the range information for each access interval
Dim dataPrvElements As Array = New Object() {"Time", "Eb/No", "BER"}
#Else
#End If

Dim dp As IAgDataPrvTimeVar = TryCast(linkAccess.DataProviders("Link Information"), IAgDataPrvTimeVar)

Dim index0 As Integer = 0
While index0 <>
    Dim startTime As Object = Nothing, stopTime As Object = Nothing
    #If Not CSToJava Then
    accessIntervals.GetInterval(index0, startTime, stopTime)
    #Else
    #End If

    #If Not CSToJava Then
    Dim result As IAgDrResult = dp.ExecElements(startTime, stopTime, 60, dataPrvElements)
    #Else
    #End If

    Dim timeValues As Array = result.DataSets(0).GetValues()
    Dim ebno As Array = result.DataSets(1).GetValues()
    Dim ber As Array = result.DataSets(2).GetValues()

    Dim index1 As Integer = 0
    While index1 <>
        Dim time As String = DirectCast(timeValues.GetValue(index1), String)
        Dim ebnoVal As Double = DirectCast(ebno.GetValue(index1), Double)
        Dim berVal As Double = DirectCast(ber.GetValue(index1), Double)
        Console.WriteLine("{0}: Eb/No={1} BER={2}", time, ebnoVal, berVal)
        System.Threading.Interlocked.Increment(index1)
    End While

    Console.WriteLine()
    System.Threading.Interlocked.Increment(index0)
End While


Compute a link budget for a Transmtiter and Receiver pair, using complex models
[Visual Basic .NET] Copy Code
Dim xmtrAsStkObject As IAgStkObject = TryCast(geoTransmitter, IAgStkObject)
Dim rcvrAsStkObject As IAgStkObject = TryCast(facilityReceiver, IAgStkObject)

'Enable the rain loss computation on the scenario RF environment
scenarioRFEnv.PropagationChannel.EnableRainLoss = True

'Set the transmitter to the complex model
geoTransmitter.SetModel("Complex Transmitter Model")
Dim complexTrans As IAgTransmitterModelComplex = TryCast(geoTransmitter.Model, IAgTransmitterModelComplex)

'Set the complex transmitter model's frequency to 3.2 GHz
complexTrans.Frequency = 3.2

'Set the complex transmitter model's Power to 50 dBW
complexTrans.Power = 50

'Set the complex transmitter's embedded antenna model to helix
complexTrans.AntennaControl.SetEmbeddedModel("Helix")

'Set the beamwidth of the parablic antenna to 2 degrees
Dim helix As IAgAntennaModelHelix = TryCast(complexTrans.AntennaControl.EmbeddedModel, IAgAntennaModelHelix)
helix.NumberOfTurns = 30

'Orient the complex transmitter embedded antenna's boresight to point directly at the receiver's location
complexTrans.AntennaControl.EmbeddedModelOrientation.AssignAzEl(287.2, 83.4, AgEAzElAboutBoresight.eAzElAboutBoresightRotate)

'Set the receiver to the complex model
facilityReceiver.SetModel("Complex Receiver Model")
Dim complexRcvr As IAgReceiverModelComplex = TryCast(facilityReceiver.Model, IAgReceiverModelComplex)

'Configure the complex receiver to use the antenna object on the same parent facility, by linking
complexRcvr.AntennaControl.ReferenceType = AgEAntennaControlRefType.eAntennaControlRefTypeLink
complexRcvr.AntennaControl.LinkedAntennaObject = "Antenna/FacilityDish"

'Enable rain loss computation on the receiver
complexRcvr.UseRain = True
complexRcvr.RainOutagePercent = 0.001

'Enable the receiver system noise temperature computation.
complexRcvr.SystemNoiseTemperature.ComputeType = AgENoiseTempComputeType.eNoiseTempComputeTypeCalculate

'Enable the antenna noise temperature computation
complexRcvr.SystemNoiseTemperature.AntennaNoiseTemperature.ComputeType = AgENoiseTempComputeType.eNoiseTempComputeTypeCalculate
complexRcvr.SystemNoiseTemperature.AntennaNoiseTemperature.UseRain = True

'Orient the antenna object's boresight to point directly at the transmitter's location
facilityDish.Orientation.AssignAzEl(202.6, 41.2, AgEAzElAboutBoresight.eAzElAboutBoresightRotate)

'Set the antenna object's model to parabolic
facilityDish.SetModel("Parabolic")

'Set the antenan object's design frequency to match the transmitter's 3.2 GHz
facilityDish.Model.DesignFrequency = 3.2

'Set the antenna object's parabolic model diameter to 5 m.
Dim parabolic As IAgAntennaModelParabolic = TryCast(facilityDish.Model, IAgAntennaModelParabolic)
parabolic.InputType = AgEAntennaModelInputType.eAntennaModelInputTypeDiameter
parabolic.Diameter = 5

'Create an access object for the access between the transmitter and recevier objects
Dim linkAccess As IAgStkAccess = xmtrAsStkObject.GetAccessToObject(rcvrAsStkObject)

'Compute access
linkAccess.ComputeAccess()

' Get the access intervals
Dim accessIntervals As IAgIntervalCollection = linkAccess.ComputedAccessIntervalTimes

#If Not CSToJava Then
' Extract the access intervals and the range information for each access interval
Dim dataPrvElements As Array = New Object() {"Time", "Xmtr Gain", "Rcvr Gain", "Eb/No", "BER"}
#Else
#End If

Dim dp As IAgDataPrvTimeVar = TryCast(linkAccess.DataProviders("Link Information"), IAgDataPrvTimeVar)

Dim index0 As Integer = 0
While index0 <>
    Dim startTime As Object = Nothing, stopTime As Object = Nothing

    #If Not CSToJava Then
    accessIntervals.GetInterval(index0, startTime, stopTime)
    #Else
    #End If

    #If Not CSToJava Then
    Dim result As IAgDrResult = dp.ExecElements(startTime, stopTime, 60, dataPrvElements)
    #Else
    #End If

    Dim timeValues As Array = result.DataSets(0).GetValues()
    Dim xmtrGain As Array = result.DataSets(1).GetValues()
    Dim rcvrGain As Array = result.DataSets(2).GetValues()
    Dim ebno As Array = result.DataSets(3).GetValues()
    Dim ber As Array = result.DataSets(4).GetValues()

    Dim index1 As Integer = 0
    While index1 <>
        Dim time As String = DirectCast(timeValues.GetValue(index1), String)
        Dim xmtrGainVal As Double = DirectCast(xmtrGain.GetValue(index1), Double)
        Dim rcvrGainVal As Double = DirectCast(rcvrGain.GetValue(index1), Double)
        Dim ebnoVal As Double = DirectCast(ebno.GetValue(index1), Double)
        Dim berVal As Double = DirectCast(ber.GetValue(index1), Double)
        Console.WriteLine("{0}: Xmtr Gain = {1} Rcvr Gain = {2} Eb/No={3} BER={4}", time, xmtrGainVal, rcvrGainVal, ebnoVal, berVal)
        System.Threading.Interlocked.Increment(index1)
    End While

    Console.WriteLine()
    System.Threading.Interlocked.Increment(index0)
End While


Create a New Receiver Object
[MATLAB] Copy Code
% IAgSTKObject satellite: STK object 
receiver = satellite.Children.New('eReceiver', 'MyReceiver'); 
 
 
Modify Receiver Model Type
[MATLAB] Copy Code
% IAgReceiver receiver: Receiver object 
receiver.SetModel('Complex Receiver Model'); 
recModel = receiver.Model; 
recModel.AutoTrackFrequency = false; 
recModel.Frequency = 11.81; 
 
 
Modify Receiver Embedded Antenna
[MATLAB] Copy Code
% IAgReceiver receiver: Receiver object 
recModel = receiver.Model; 
antennaControl = recModel.AntennaControl; 
antennaControl.SetEmbeddedModel('Hemispherical'); 
antennaControl.EmbeddedModel.Efficiency = 85; %Percent 
 
 
Modify Receiver Polarization Properties
[MATLAB] Copy Code
% IAgReceiver receiver: Receiver object 
recModel = receiver.Model; 
recModel.EnablePolarization = true; 
recModel.SetPolarizationType('ePolarizationTypeLinear'); 
polarization = recModel.Polarization; 
polarization.ReferenceAxis = 'ePolarizationReferenceAxisZ'; 
polarization.CrossPolLeakage = -60; %dB 
 
 
Modify Orientation of the Receiver Antenna
[MATLAB] Copy Code
% IAgReceiver receiver: Receiver object 
recModel = receiver.Model; 
antennaControl = recModel.AntennaControl; 
antOrientation = antennaControl.EmbeddedModelOrientation; 
antOrientation.AssignAzEl(45, 85, 1); % 1 represents Rotate About Boresight 
antOrientation.PositionOffset.X = 0.5; %m 
antOrientation.PositionOffset.Y = 0.75; %m 
antOrientation.PositionOffset.Z = 1; %m 
 
 
Modify Receiver System Noise Temperature
[MATLAB] Copy Code
% IAgReceiver receiver: Receiver object 
recModel = receiver.Model; 
recModel.SystemNoiseTemperature.ConstantNoiseTemperature = 280; %K 
 
 
Modify Receiver Demodulator Properties
[MATLAB] Copy Code
% IAgReceiver receiver: Receiver object 
recModel = receiver.Model; 
recModel.AutoSelectDemodulator = false; 
recModel.SetDemodulator('16PSK'); 
 
 
Modify Receiver Filter Properties
[MATLAB] Copy Code
% IAgReceiver receiver: Receiver object 
recModel = receiver.Model; 
recModel.EnableFilter = true; 
recModel.SetFilter('Bessel'); 
recFilter = recModel.Filter; 
recFilter.LowerBandwidthLimit = -20; 
recFilter.UpperBandwidthLimit = 20; 
recFilter.CutoffFrequency = 10; 
 
 
Receiver Additonal Gain
[MATLAB] Copy Code
% IAgReceiver receiver: Receiver object 
recModel = receiver.Model; 
gain = recModel.PreReceiveGainsLosses.Add(5); %dB 
gain.Identifier = 'Example Gain'; 
 
 

CoClasses that Implement IAgReceiver

Name
AgReceiver
© 2016 Analytical Graphics, Inc. All Rights Reserved.

STK Programming Interface 11.0.1