public void CopyFrom(GSMTRX gsmTrx) { base.CopyFrom(gsmTrx); this.MAIO = gsmTrx.MAIO; this.Pwbackff8psk = gsmTrx.Pwbackff8psk; this.IsUseDTX = gsmTrx.IsUseDTX; this.TRXType = gsmTrx.TRXType; this.MinPower = gsmTrx.MinPower; this.TRXPower = gsmTrx.TRXPower; this.TimeGapList = gsmTrx.TimeGapList; this.LotTargetUL = gsmTrx.LotTargetUL; this.HOGate = gsmTrx.HOGate; this.Average8PSKPowerBackOff = gsmTrx.Average8PSKPowerBackOff; this.HSN = gsmTrx.HSN; this.TargetLoad = gsmTrx.TargetLoad; this.EnableEgprs = gsmTrx.EnableEgprs; this.HopMode = gsmTrx.HopMode; this.MsMaxPower = gsmTrx.MsMaxPower; this.MAL = gsmTrx.MAL; this.SynchroRank = gsmTrx.SynchroRank; this.ULIdealRxCIR = gsmTrx.ULIdealRxCIR; this.ULIdealRxPwr = gsmTrx.ULIdealRxPwr; this.Antdivgain = gsmTrx.Antdivgain; this.NetworkColourCode = gsmTrx.NetworkColourCode; this.BaseStationColourCode = gsmTrx.BaseStationColourCode; this.RAC = gsmTrx.RAC; this.LAC = gsmTrx.LAC; }
public static void InitCellList(List<IACell> cellList) { UMTSCell bestCell = new UMTSCell(); bestCell.FreqBand = new FrequencyBand(); bestCell.FreqBand.BandWidth = 5f; bestCell.FreqBand.DLFrequency = 1900f; bestCell.FreqBand.StartChIndex = 0; bestCell.ChannelIndex = 0; bestCell.ID = 0; UMTSCell interfCell = new UMTSCell(); interfCell.FreqBand = new FrequencyBand(); interfCell.FreqBand.BandWidth = 5f; interfCell.FreqBand.DLFrequency = 1900f; interfCell.FreqBand.StartChIndex = 0; interfCell.ChannelIndex = 0; interfCell.ID = 1; IACell interfCell2 = new GSMTRX(); interfCell2.FreqBand = new FrequencyBand(); interfCell2.FreqBand.BandWidth = 0.2f; interfCell2.FreqBand.DLFrequency = 1905f; interfCell2.FreqBand.StartChIndex = 0; interfCell2.ChannelIndex = 0; interfCell2.ID = 2; cellList.Add(bestCell); cellList.Add(interfCell); cellList.Add(interfCell2); }
public void CalculateRxPower_Test1() { IACell cell = new GSMTRX(); float linkLoss = 112; double result = m_GSMCellCalculator.CalculateRxPower(cell, m_Point, linkLoss); Assert.AreEqual(-66, result); }
private double CalcIneerSystemInterf(GSMTRX gsmInterfTRX, GSMTRX bestServerTRX, float dlLinkLoss) { double interf = 0; if (!object.ReferenceEquals(gsmInterfTRX, bestServerTRX)) { interf = IneerSystemInterfCalc(gsmInterfTRX, bestServerTRX, dlLinkLoss); } return interf; }
public GSMTRXsDesc(CollectionsModel model, GSMTRX gsmTrxEntity, List<GSMTRX> excludeCells) : base(model, gsmTrxEntity, model.GSMFreBandCol, new GSMTRXsCollProvider(model.GSMTRXsColl)) { this.m_Entity = gsmTrxEntity; base.m_newNames = new List<string>(); this.m_newCells = excludeCells; if (excludeCells != null) { foreach (GSMTRX gsmtrx in excludeCells) { base.m_newNames.Add(gsmtrx.Name); } } }
private List<Transceiver> CreatTranceiverList() { List<Transceiver> trancList = new List<Transceiver>(); int count = 3; for (int i = 0; i < count;i++) { Transceiver temp = new Transceiver(); IACell cell = new GSMTRX(); temp.addCarrier(cell); trancList.Add(temp); } return trancList; }
private double IneerSystemInterfCalc(GSMTRX gsmInterfTRX, GSMTRX bestServerTRX, float dlLinkLoss) { double interf = 0; double hopFactor = 1f; FrequencyRelationType type = GetFrequencyRelation(bestServerTRX, gsmInterfTRX, bestServerTRX.ChannelIndex, gsmInterfTRX.ChannelIndex); if (type == FrequencyRelationType.SameFrequency) { interf = UnitTrans.dBmTomw(gsmInterfTRX.TRXPower - dlLinkLoss); } else if (type == FrequencyRelationType.FirstNeighbour) { double ACIR1 = (double)m_IInterf.findACIR(gsmInterfTRX.FreqBand.DLFrequency, gsmInterfTRX.FreqBand.BandWidth); if (!double.IsNaN(ACIR1)) { interf = UnitTrans.dBmTomw(gsmInterfTRX.TRXPower - dlLinkLoss - ACIR1); } } else if (type == FrequencyRelationType.SecondNeighbour) { double ACIR2 = (double)m_IInterf.findACIR2(gsmInterfTRX.FreqBand.DLFrequency, gsmInterfTRX.FreqBand.BandWidth); if (!double.IsNaN(ACIR2)) { interf = UnitTrans.dBmTomw(gsmInterfTRX.TRXPower - dlLinkLoss - ACIR2); } } else { float freqOffset, atten, Wsource_Wuseful; Signal usefulSignal = new Signal(); usefulSignal.RxPower = bestServerTRX.TRXPower - dlLinkLoss; usefulSignal.FreqBand = bestServerTRX.FreqBand.BandWidth; usefulSignal.Frequency = COPredicCommonCalc.GetFrequency((IACell)bestServerTRX); usefulSignal.NetType = NetWorkType.GSM; Signal source = new Signal(); source.RxPower = gsmInterfTRX.TRXPower - dlLinkLoss; source.FreqBand = gsmInterfTRX.FreqBand.BandWidth; source.Frequency = COPredicCommonCalc.GetFrequency((IACell)gsmInterfTRX); source.NetType = NetWorkType.GSM; float SEInterf = GetSEInterf(usefulSignal, source, out freqOffset, out atten, out Wsource_Wuseful); float BCIInterf = GetBCIValue(source, freqOffset, atten); interf = UnitTrans.dBmTomw(UnitTrans.AdddBm(SEInterf, BCIInterf)); } if (gsmInterfTRX.HopMode == HoppingMode.SynthesizeHopping) { hopFactor = GetHopFactor(bestServerTRX, gsmInterfTRX); } interf = AddDTXHopFactor(interf, hopFactor,bestServerTRX); return interf; }
public static List<ISimCellBase> InitialGSMInterfCell() { List<ISimCellBase> GSMInterfCellList = new List<ISimCellBase>(); IACell aCell = new GSMTRX(); GSMSimTRX GSMInterfCell = new GSMSimTRX(aCell); GSMInterfCell.Cell.FreqBand.BandWidth = 3f; GSMInterfCell.DlFrequency = 2000f; GSMInterfCell.DlPower = 33; List<ISimUser> simUserList = new List<ISimUser>(); ISimUser user = new MockGSMUser(); simUserList.Add(user); GSMInterfCell.ULSimUsers = simUserList; GSMInterfCellList.Add(GSMInterfCell); return GSMInterfCellList; }
public double CalcInterf(GSMTRX bestSeverTRX, IACell interfCell, float dlLinkLoss) { double interf = 0; GSMTRX gsmInterfTRX = interfCell as GSMTRX; if (gsmInterfTRX != null) { interf = CalcIneerSystemInterf(gsmInterfTRX, bestSeverTRX, dlLinkLoss); } else { interf = CalcOtherSystemInterf(interfCell, bestSeverTRX, dlLinkLoss); } return interf; }
/// <summary> /// 构建小区列表 /// </summary> private void InitCellList() { GSMTRX bestCell = new GSMTRX(); bestCell.FreqBand = new FrequencyBand(); bestCell.FreqBand.BandWidth = 0.2f; bestCell.FreqBand.DLFrequency = 1805f; bestCell.FreqBand.StartChIndex = 0; bestCell.ChannelIndex = 0; bestCell.IsUseDTX = true; bestCell.HopMode = HoppingMode.SynthesizeHopping; //List<int> malList = new List<int>(); //malList.Add(10); //malList.Add(11); //malList.Add(12); //bestCell.MALList.AddRange(malList); //bestCell.MALList.Add(10); bestCell.MAL = "10,11,12"; //demo.IntdemoList.Add(10); //bestCell.MALList = malList; bestCell.ID = 0; GSMTRX interfCell = new GSMTRX(); interfCell.FreqBand = new FrequencyBand(); interfCell.FreqBand.BandWidth = 0.2f; interfCell.FreqBand.DLFrequency = 1805.2f; interfCell.FreqBand.StartChIndex = 0; interfCell.ChannelIndex = 0; interfCell.HopMode = HoppingMode.SynthesizeHopping; interfCell.MAL = "12,13,14"; interfCell.ID = 1; IACell interfCell2 = new UMTSCell(); interfCell2.FreqBand = new FrequencyBand(); interfCell2.FreqBand.BandWidth = 5f; interfCell2.FreqBand.DLFrequency = 1805.2f; interfCell2.FreqBand.StartChIndex = 0; interfCell2.ChannelIndex = 0; interfCell2.ID = 2; cellList.Add(bestCell); cellList.Add(interfCell); cellList.Add(interfCell2); }
public static IACell CreatGsmCell() { IACell cell = new GSMTRX(); Site site = new Site(); site.X = 100; site.Y = 100; site.Equipment = new BtsEquipment(); site.Equipment.NoiseFigure = 4f; Transceiver trans = new Transceiver(); trans.Name = "Tranceiver1"; trans.Parent = site; trans.ID = 1; trans.Cells.Add(cell); cell.Name = "GSMCell1"; cell.Parent = trans; AntConfig antConfig = new AntConfig(); cell.Parent.AntConfiguration.Add(antConfig); cell.Parent.AntConfiguration[0].IsMainAnt = true; cell.Parent.AntConfiguration[0].DlTotalLoss = 3; cell.Parent.AntConfiguration[0].OutdoorAntenna = new AntennaEntity(); cell.Parent.AntConfiguration[0].OutdoorAntenna.Gain = 0; cell.ID = 1; cell.FreqBand.BandWidth = 0.2f; ((GSMTRX)cell).TRXType = TRXType.BCCH; ((GSMTRX)cell).MaxPower = 46; ((GSMTRX)cell).TRXPower = 46; PropModelConfig propModelConfig = new PropModelConfig(); propModelConfig.CalcRadius = 4000; propModelConfig.CalcResolution = 50; trans.Cells[0].PropModels.Add(propModelConfig); return cell; }
public static GSMSimTRX MockGsmSimTrx() { IACell aCell = new GSMTRX(); GSMSimTRX trx = new GSMSimTRX(aCell); trx.TSs[0].NETimeSlot.ChanType = Net.ChannelType.BCCH; trx.TSs[1].NETimeSlot.ChanType = Net.ChannelType.PDCH; trx.TSs[2].NETimeSlot.ChanType = Net.ChannelType.PDCH; trx.TSs[3].NETimeSlot.ChanType = Net.ChannelType.DPDCH; //添加载波的传播模型 PropModelConfig propModel = new PropModelConfig(); propModel.CalcRadius = 4000;//计算半径为4000 trx.NeTRX.PropModels.Add(propModel); return trx; }
public static List<IACell> CreatIACellList() { List<IACell> iaCellList = new List<IACell>(); for (int i = 0; i < 3; i++) { IACell cell = MockCell.CreatUMTSSimCell(0, 0).NECell; iaCellList.Add(cell); } IACell gsmCell = new GSMTRX(); iaCellList.Add(gsmCell); return iaCellList; }
private double GetHopFactor(GSMTRX bestServerTRX, GSMTRX gsmInterfTRX) { double factor = 1; if (gsmInterfTRX.TRXType == TRXType.BCCH) { return factor; } int count = GetSameCount(bestServerTRX, gsmInterfTRX); factor = GetFactorValue(bestServerTRX, gsmInterfTRX, factor, count); return factor; }
private double AddDTXHopFactor(double interf, double hopFactor,GSMTRX bestServerTRX) { if (bestServerTRX.IsUseDTX == true) { interf = interf * m_PridictionGroup.CovUIParam.TrxDTXFactor; } interf = interf * hopFactor; return interf; }
private FrequencyRelationType GetFrequencyRelation(GSMTRX bestServerTRX, GSMTRX gsmInterfTRX, int sourceChannelIndex, int targetChannelIndex) { bool isSameFrequency = JudgeFrequency(bestServerTRX, gsmInterfTRX, sourceChannelIndex, targetChannelIndex, FrequencyRelationType.SameFrequency); if (isSameFrequency) { return FrequencyRelationType.SameFrequency; } bool isFirstNeighbourFreq = JudgeFrequency(bestServerTRX, gsmInterfTRX, sourceChannelIndex, targetChannelIndex, FrequencyRelationType.FirstNeighbour); if (isFirstNeighbourFreq) { return FrequencyRelationType.FirstNeighbour; } bool isSecondNeighbourFreq = JudgeFrequency(bestServerTRX, gsmInterfTRX, sourceChannelIndex, targetChannelIndex, FrequencyRelationType.SecondNeighbour); if (isSecondNeighbourFreq) { return FrequencyRelationType.SecondNeighbour; } else { return FrequencyRelationType.Non; } }
private double CalcAcir(IACell interfCell, GSMTRX bestCell, double deltaFreq) { double acir = double.NaN; Signal usefulSignal = new Signal(); usefulSignal.FreqBand = bestCell.FreqBand.BandWidth; usefulSignal.Frequency = COPredicCommonCalc.GetFrequency((IACell)bestCell); usefulSignal.NetType = NetWorkType.GSM; Signal source = new Signal(); source.FreqBand = interfCell.FreqBand.BandWidth; source.Frequency = COPredicCommonCalc.GetFrequency(interfCell); acir = m_IInterf.findACIR(source, usefulSignal); return acir; }
private FrequencyRelationType JudgeFreqBandRelationship(IACell interfCell, GSMTRX bestCell, int interfChannelIndex) { double GSMBandWith =0.2f; double bestStartFreq = bestCell.FreqBand.DLFrequency + bestCell.FreqBand.BandWidth * (bestCell.ChannelIndex + 0.5) - GSMBandWith * 0.5; double bestEndFreq = bestStartFreq + GSMBandWith; double interfStartFreq = interfCell.FreqBand.DLFrequency + interfCell.FreqBand.BandWidth * interfChannelIndex; double interfEndFreq = interfStartFreq + interfCell.FreqBand.BandWidth; if (bestStartFreq >= interfStartFreq && bestEndFreq <= interfEndFreq) { return FrequencyRelationType.InnerOfInterfFreq; } else if (interfStartFreq >= bestStartFreq && interfEndFreq <= bestEndFreq) { return FrequencyRelationType.InnerOfBestFreq; } else if (bestEndFreq <= interfStartFreq || bestEndFreq >= interfEndFreq) { return FrequencyRelationType.OutOfInterfFreq; } else { return FrequencyRelationType.Non; } }
/// <summary> /// 返回上行业务信道的CIR /// </summary> /// <param name="bestCell"></param> /// <param name="index"></param> /// <returns></returns> private double GetULServiceCIR(GSMTRX bestCell, int index) { float[] linkLoss = linkLossCalc.GetLinkLoss(index, m_TFMatrix, bestCell); NetworkTerminal s = new NetworkTerminal(); s = m_Group.TrafficTerminal.GetNetWorkTerminal(NetWorkType.GSM); double P_Rx_ULSerice = s.MaxTxPower - linkLoss[0]; double ulCIR = GSMPredicCommonCalc.GetULCIR(P_Rx_ULSerice, loT_target_UL, NoisePower); return ulCIR; }
private double CalcOneCellInterf(IACell interfCell, GSMTRX bestCell, int interfChannelIndex, double linkLoss) { double interf = 0; double interfFreqBandWith = interfCell.FreqBand.BandWidth; double bestCellFreqBandWith = bestCell.FreqBand.BandWidth; double deltaFreq = CalcFrequencyExcursion(interfCell, bestCell, interfChannelIndex); double rxpower = 0; if (interfCell.NetType == NetWorkType.UMTS) { rxpower = ((UMTSCell)interfCell).TotalPower - linkLoss; } else if (interfCell.NetType == NetWorkType.TDSCDMA) { rxpower = ((TDSCDMACarrier)interfCell).PCCPCHPower - linkLoss; } else if (interfCell.NetType == NetWorkType.LTE) { rxpower = ((LTECell)interfCell).DlActualTxPower - linkLoss; } FrequencyRelationType type = JudgeFreqBandRelationship(interfCell, bestCell, interfChannelIndex); interf = CalcInterfByFreqRelation(interfCell, bestCell, type, interfFreqBandWith, bestCellFreqBandWith, deltaFreq, rxpower); return interf; }
private double CalcFrequencyExcursion(IACell interfCell, GSMTRX bestCell, int interfChannelIndex) { double interfFreqBandWith = interfCell.FreqBand.BandWidth; double bestFreqBandWith = bestCell.FreqBand.BandWidth; double interfDLCenterFreq = 0; interfDLCenterFreq = interfCell.FreqBand.DLFrequency + interfFreqBandWith * (interfChannelIndex + 0.5); double bestDLCenterFreq = bestCell.FreqBand.DLFrequency + bestFreqBandWith * (bestCell.ChannelIndex + 0.5); return Math.Abs(interfDLCenterFreq - bestDLCenterFreq); }
public GSMTRXsDesc(CollectionsModel model, GSMTRX gsmTrxEntity) : base(model, gsmTrxEntity, model.GSMFreBandCol, new GSMTRXsCollProvider(model.GSMTRXsColl)) { this.m_Entity = gsmTrxEntity; }
private double CalcOtherSystemInterf(IACell interfTRX, GSMTRX bestServerTRX, double linkLoss) { double interf = 0; if (interfTRX.NetType == NetWorkType.UMTS) { interf = CalcInterfFormUMTS(interfTRX, bestServerTRX, linkLoss); } else if (interfTRX.NetType == NetWorkType.TDSCDMA) { interf = CalcInterfFormTDSCDMA(interfTRX, bestServerTRX, linkLoss); } else if (interfTRX.NetType == NetWorkType.LTE) { interf = CalcInterfFormLTE(interfTRX, bestServerTRX, linkLoss); } return interf; }
private bool JudgeFrequency(GSMTRX bestServerTRX, GSMTRX gsmInterfTRX, int sourceChannelIndex, int targetChannelIndex, FrequencyRelationType type) { float sourceBandWith = bestServerTRX.FreqBand.BandWidth; float targetBandWith = gsmInterfTRX.FreqBand.BandWidth; float sourceDLFrequency = bestServerTRX.FreqBand.DLFrequency; float targetDLFrequency = gsmInterfTRX.FreqBand.DLFrequency; int multiple = Convert.ToInt32(type); bool isSameBandWith = (sourceBandWith == targetBandWith); bool isIntegetExcursion = (Math.Abs((sourceDLFrequency + sourceBandWith * sourceChannelIndex) - (targetDLFrequency + targetBandWith * targetChannelIndex)) == sourceBandWith * multiple); return isSameBandWith && isIntegetExcursion; }
public void DLInterfCaseTest_SC() { for (int i = 0; i < 3;i++ ) { IACell cell = new GSMTRX(); cellList.Add(cell); } double[] x = new double[3] { 50, 100, 150 }; double[] y = new double[3] { 50, 100, 50 }; MockCellList.CreateCellList(cellList, x, y); for (int i = 0; i < 3; i++) { m_Context.Add(ContextKeys.CurrentCalcCell, cellList[i]); RunCase(); m_Context.Remove(ContextKeys.CurrentCalcCell); } ValueMatrixDouble DLRSInterf = m_Context[ContextKeys.GSMSysDLInterf] as ValueMatrixDouble; Assert.AreEqual(45.28, DLRSInterf[0], 0.01); }
private double CalcInterfByFreqRelation(IACell interfCell, GSMTRX bestCell, FrequencyRelationType type, double interfFreqBandWith, double bestCellFreqBandWith, double deltaFreq, double rxpower) { double interf = 0; double freqBandRatio = 0; double acir = 0; if (type == FrequencyRelationType.OutOfInterfFreq) { acir = CalcAcir(interfCell, bestCell, deltaFreq); if (!double.IsNaN(acir)) { interf = UnitTrans.dBto(rxpower - acir); } } else if (type == FrequencyRelationType.InnerOfInterfFreq) { freqBandRatio = UnitTrans.todB(interfFreqBandWith / bestCellFreqBandWith); interf = UnitTrans.dBto(rxpower - freqBandRatio); } else if (type == FrequencyRelationType.InnerOfBestFreq) { interf = UnitTrans.dBto(rxpower); } return interf; }
private void addNewGsmCarrier(string carrierName, ReceptionEquipment reception) { GSMTRX cell = new GSMTRX(); this.SetIACellProperty(carrierName, reception, cell); this.AddIACellToCarriers(cell); }
private double GetFactorValue(GSMTRX bestServerTRX, GSMTRX gsmInterfTRX, double factor, int count) { List<int> bestServerTRXMAL = m_HoppingMALDic[bestServerTRX.ID]; List<int> gsmInterfTRXMAL = m_HoppingMALDic[gsmInterfTRX.ID]; if (count != 0) { factor = count / (double)(bestServerTRXMAL.Count * gsmInterfTRXMAL.Count); } if (count == 0 && bestServerTRXMAL.Count != 0 && gsmInterfTRXMAL.Count != 0) { factor = 1 / (double)(bestServerTRXMAL.Count * gsmInterfTRXMAL.Count * 2); } return factor; }
private double CalcInterfFormLTE(IACell interfCell, GSMTRX bestCell, double linkLoss) { double interf = 0; interf = CalcOneCellInterf(interfCell, bestCell, interfCell.ChannelIndex, linkLoss); return interf; }
private int GetSameCount(GSMTRX bestServerTRX, GSMTRX gsmInterfTRX) { int count = 0; List<int> bestServerTRXMAL = m_HoppingMALDic[bestServerTRX.ID]; List<int> gsmInterfTRXMAL = m_HoppingMALDic[gsmInterfTRX.ID]; for (int index = 0; index < bestServerTRXMAL.Count; index++) { if (gsmInterfTRXMAL.Contains(bestServerTRXMAL[index])) { count++; } } return count; }