/// <summary> /// 计算backhaul链路的路损 /// </summary> /// <param name="lteCell"></param> /// <param name="relayCell"></param> /// <returns></returns> public Dictionary<int, List<float>> CaclBackhaulPathLoss(LTECell lteCell, RelayCell relayCell) { //一个lteCell有两根天线,每根天线存一个路损值和天线值 float calcResolution = 0; SetCellResolution(lteCell, ref calcResolution); PathLossCalcParam[] cellCalcPara = m_CalcParamFactory.GetCellCalcPara(lteCell, calcResolution); Dictionary<int, List<float>> antennaPathLoss = new Dictionary<int, List<float>>(); for (int i = 0; i < cellCalcPara.Length; i++) { float pathLoss = 0; float antGain = 0; SectionPathLossCalcParam sectionParam = cellCalcPara[i].SectionParamArray[0]; IPathLossCalculator calcMethod = GetCalcMethod(sectionParam); if (calcMethod != null) { GeoXYLine geoXYLine = new GeoXYLine(); Dictionary<string, object> modelDetailDictionary = new Dictionary<string, object>(); pathLoss = calcMethod.CalculatePointPathLoss(sectionParam, geoXYLine, out modelDetailDictionary); } antGain = CalcAntGain(lteCell, relayCell); List<float> list = new List<float>(); list.Add(pathLoss); list.Add(antGain); antennaPathLoss.Add(cellCalcPara[i].AntennaConfig.AntennaID, list); } return antennaPathLoss; }
public RCToUEAntConfigForm(CollectionsModel model,RelayCell relayCell,string oldName) { m_CollectionsModel = model; m_RelayCell = relayCell; m_OldName = oldName; InitializeComponent(); FillAntConfig(); }
//by hxl 用于通过rc拿到包它的simulationcarrier public static SimulationCarrier GetSimulationCarrierByRelay(List<SimulationCarrier> allSimulationCarrier, RelayCell rc) { foreach (SimulationCarrier carrier in allSimulationCarrier) { if (!carrier.IsLTECell) { if ((RelayCell)(carrier.Carrier) == rc) { return carrier; } } } SimulationCarrier targetCarrier = new SimulationCarrier(); targetCarrier.Carrier = rc; return targetCarrier; }
public static RelayCell CreatRelayCell() { RelayCell relayCell = new RelayCell(); //relayCell.ParentRN = new RelayNode(); //RelayNode relayNode = //m_Site.Equipment = new BtsEquipment(); //relayCell.Parent.Parent = m_Site; relayCell.FreqBand = new FrequencyBand(); relayCell.FreqBand.BandWidth = 20; relayCell.FreqBand.ID = 4; relayCell.PropModels.Add(MockPropModelCfg.CreatRelayPropModelCfg()); AntConfig antConfig=new AntConfig(); antConfig.DX = 1.0f; antConfig.DY = 1.0f; antConfig.Parent = relayCell.Tran; //antConfig.Parent = MockTrans.CreatTransceiver(); relayCell.RCToCellAnt = antConfig; relayCell.CellToUEAnt = antConfig; relayCell.ID = 2; return relayCell; }
//add by xujuan private void isRelayOutdoorAntenna(RelayCell cell) { this.m_StructAntennaParam.AntConfigSetUp = cell.CellToUEAnt; //cell.AntList[1];//即CellToUEAnt }
///// <summary> ///// backhaul链路上下行损耗 未完成 ///// </summary> ///// <param name="cell"></param> ///// <param name="user"></param> ///// <returns></returns> //private LinkLossStruct[] GetBackhaulUlAndDlLinkLoss(Transceiver cell, User relayUser) //{ // LinkLossStruct[] structArray = new LinkLossStruct[2]; // this.m_StructAntennaParam.MsX = relayUser.X; // this.m_StructAntennaParam.MsY = relayUser.Y; // this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(relayUser.X, relayUser.Y, DemDataType.Height); // float[][] numArray = this.m_iplCalDataVstr.GetPointBackhaulPathLoss(cell, relayUser.X, relayUser.Y); // float penetrationLoss = 0f; // if ((user.Clutter != null) && user.IsIndoor) // { // short buildHeight = 0; // buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building); // penetrationLoss = (float)this.GetPenetrationLoss(user.Clutter.Id, buildHeight); // } // //int key = tranceiver.ID; // //float loss = 0f; // //if (!m_TranceiverClutterloss.TryGetValue(key, out loss)) // //{ // // ClutterParamsResult clutterParam = ConfingClutter(tranceiver); // // loss += GetShadowloss(clutterParam.ShadowStd, isShadow, coverageProb); // // loss += GetIndoorloss(isIndoorCov, clutterParam); // // m_TranceiverClutterloss.Add(key, loss); // //} // //return loss; // ////relay一侧设备损耗 // //relayUser.Terminal.Reception; // //BtsEquipment btsEquipment = relayCell.ParentRN.Equipment; // //List<AntConfig> antConfigs = new List<AntConfig>(); // //antConfigs.Add(relayCell.CellToUEAnt); // double noiseFigureOfBts = 0;// Transceiver.CalculateNoiseFigureOfBts(antConfigs, (double)btsEquipment.NoiseFigure); // float num7 = (float)noiseFigureOfBts + penetrationLoss; // structArray[0].pathLoss = numArray[0][0]; // structArray[0].otherTotalLoss = num7; // structArray[1].pathLoss = numArray[0][1]; // structArray[1].otherTotalLoss = num7 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss; // return structArray; //} /// <summary> /// access链路上下行损耗 /// </summary> /// <param name="cell"></param> /// <param name="user"></param> /// <returns></returns> private LinkLossStruct[] GetAccessUlAndDlLinkLoss(RelayCell cell, User user) { LinkLossStruct[] structArray = new LinkLossStruct[2]; this.m_StructAntennaParam.MsX = user.X; this.m_StructAntennaParam.MsY = user.Y; this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Height); float[][] numArray = m_iGetRelayUEPathLoss.GetRelayUEPointPathLoss(cell, user.X, user.Y); float penetrationLoss = 0f; if ((user.Clutter != null) && user.IsIndoor) { short buildHeight = 0; buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building); penetrationLoss = (float)this.GetPenetrationLoss(user.Clutter.Id, buildHeight); } float bodyLoss = (user.Service as UnionPsService).BodyLoss; float loss = user.Terminal.NetTerminalList[0].Loss; float attenuation = user.Terminal.Attenuation; float gain = user.Terminal.Gain; float num7 = (((bodyLoss + loss) + attenuation) - user.Terminal.Gain) + penetrationLoss; structArray[0].pathLoss = numArray[0][0]; structArray[0].otherTotalLoss = num7; structArray[1].pathLoss = numArray[0][1]; structArray[1].otherTotalLoss = num7 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss; return structArray; }
/// <summary> /// backhaul链路上下行损耗 未完成 /// </summary> /// <param name="cell"></param> /// <param name="user"></param> /// <returns></returns> private LinkLossStruct[] GetBackhaulUlAndDlLinkLoss(Transceiver cell, RelayCell relayCell) { LinkLossStruct[] structArray = new LinkLossStruct[2]; this.m_StructAntennaParam.MsX = relayCell.ParentRN.X; this.m_StructAntennaParam.MsY = relayCell.ParentRN.Y; this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(relayCell.ParentRN.X, relayCell.ParentRN.Y, DemDataType.Height); float[][] numArray = this.m_iplCalDataVstr.GetPointBackhaulPathLoss(cell, relayCell.ParentRN.X, relayCell.ParentRN.Y); float penetrationLoss = 0f; //todo 判断Relay是否是室内,是的话加穿透损耗 //if ((user.Clutter != null) && user.IsIndoor) //{ // short buildHeight = 0; // buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building); // penetrationLoss = (float)this.GetPenetrationLoss(user.Clutter.Id, buildHeight); //} //int key = tranceiver.ID; //float loss = 0f; //if (!m_TranceiverClutterloss.TryGetValue(key, out loss)) //{ // ClutterParamsResult clutterParam = ConfingClutter(tranceiver); // loss += GetShadowloss(clutterParam.ShadowStd, isShadow, coverageProb); // loss += GetIndoorloss(isIndoorCov, clutterParam); // m_TranceiverClutterloss.Add(key, loss); //} //return loss; //relay一侧设备损耗 BtsEquipment btsEquipment = relayCell.ParentRN.Equipment; List<AntConfig> antConfigs = new List<AntConfig>(); antConfigs.Add(relayCell.CellToUEAnt); double noiseFigureOfBts = Transceiver.CalculateNoiseFigureOfBts(antConfigs, (double)btsEquipment.NoiseFigure); float num7 = (float)noiseFigureOfBts + penetrationLoss; //backhaul的路损计算减去一个15dB的偏置值 num7 -= 15; structArray[0].pathLoss = numArray[0][0]; structArray[0].otherTotalLoss = num7; structArray[1].pathLoss = numArray[0][1]; structArray[1].otherTotalLoss = num7 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss; return structArray; }
/// <summary> /// access路损 覆盖 /// </summary> /// <param name="ant"></param> /// <param name="cell"></param> /// <param name="X"></param> /// <param name="Y"></param> /// <param name="clutterID"></param> /// <param name="buildHeight"></param> /// <param name="isFirstSuite"></param> /// <param name="resolution"></param> /// <returns></returns> public double[] GetAccessLinkLoss(AntConfig ant, RelayCell cell, double X, double Y, short clutterID, short buildHeight, bool isFirstSuite, float resolution) { this.m_SFadingMarginAndpenetrationLoss = 0.0; float[][] pathLoss = m_iGetRelayUEPathLoss.GetRelayUEPointPathLoss(cell, X, Y); if ((pathLoss[0][0] >= -32768.000001) && (pathLoss[0][0] <= -32767.999999)) { WriteLog.Logger.Error("pathLoss[0][0] is Error:" + pathLoss[0][0].ToString() + "Cell:" + ant.Parent.Name); } if ((pathLoss[0][1] >= -32768.000001) && (pathLoss[0][1] <= -32767.999999)) { WriteLog.Logger.Error("pathLoss[0][1] is Error:" + pathLoss[0][1].ToString() + "Cell:" + ant.Parent.Name); } this.m_SFadingMarginAndpenetrationLoss = this.GetSFadingMarginAndPenetrationLoss(clutterID, buildHeight, this.m_IsShadowdowAccout, this.m_IsIndoorCoverage); this.m_OutAntSetUpTotalLoss = ant.DlTotalLoss; double[] numArray2 = this.GetSingleLinkLoss(ant.Parent, pathLoss, clutterID, isFirstSuite); numArray2[0] = this.GetLinkLossWithMCL(numArray2[0]); numArray2[1] = this.GetLinkLossWithMCL(numArray2[1]); return numArray2; }
/// <summary> /// 计算宏小区到relay的天线增益 /// </summary> /// <param name="lteCell"></param> /// <param name="relayCell"></param> /// <returns></returns> private float CalcAntGain(LTECell lteCell, RelayCell relayCell) { StructAntennaParam calAntennaParam = new StructAntennaParam(); int sectorID = lteCell.Parent.AntConfiguration[0].AntennaID; calAntennaParam.CellX = lteCell.Parent.Parent.X + lteCell.Parent.GetAntConfig(sectorID).DX; calAntennaParam.CellY = lteCell.Parent.Parent.Y + lteCell.Parent.GetAntConfig(sectorID).DY; calAntennaParam.IsSimple = false; calAntennaParam.AntHeight = m_IGeoInfo.GetValueByGeoXYPoint(calAntennaParam.CellX, calAntennaParam.CellY, DemDataType.Height); calAntennaParam.MsX = relayCell.ParentRN.X;//todo:加上偏置? calAntennaParam.MsY = relayCell.ParentRN.Y; calAntennaParam.MsHeight = m_IGeoInfo.GetValueByGeoXYPoint(relayCell.ParentRN.X, relayCell.ParentRN.Y, DemDataType.Height); float antGain = 0; calAntennaParam.AntConfigSetUp = lteCell.Parent.GetAntConfig(sectorID); antGain = m_AntennaGainCalculator.Calculate3DGain(calAntennaParam); return antGain; }
private float CalculateUlTotalLoss(RelayCell carrier, User user, LinkLossStruct ulLinkLossStruct) { if (ulLinkLossStruct.pathLoss == float.MinValue) { return float.MaxValue; } double num = 0.0; float userClutterModeDiviation = UserManager.getInstance().GetUserClutterModeDiviation(this.m_SubSysInterface, user); ulLinkLossStruct.pathLoss = Math.Max(ulLinkLossStruct.pathLoss, 73.35696f); num = ulLinkLossStruct.pathLoss + this.CalculateShadowFadeValue(carrier, user, this.m_Coefficientabc, userClutterModeDiviation); double num3 = Math.Sqrt(((carrier.ParentRN.X - user.X) * (carrier.ParentRN.X - user.X)) + ((carrier.ParentRN.Y - user.Y) * (carrier.ParentRN.Y - user.Y))); double num4 = 32.4 + (20.0 * Math.Log10((carrier.FreqBand.ULFrequency * num3) / 1000.0)); num = (num < num4) ? num4 : num; num += ulLinkLossStruct.otherTotalLoss; return (float)num; }
public float CalculateShadowFadeValue(RelayCell carrier, User user, Coefficient abcValue, float sigmma) { ShadowOrNormal normal; float num; if (this.m_shadowNormalMapRelay.TryGetValue(user.Id, out normal)) { if (!normal.ShadowSite.TryGetValue(carrier.ParentRN.ID, out num)) { float normalValue = normal.NormalValue; num = this.calculateShadow(abcValue, sigmma, normalValue); normal.ShadowSite.Add(carrier.ParentRN.ID, num); } return num; } float num3 = this.calculateUserNormal(sigmma); normal = new ShadowOrNormal(num3); num = this.calculateShadow(abcValue, sigmma, num3); normal.ShadowSite.Add(carrier.ParentRN.ID, num); this.m_shadowNormalMapRelay.Add(user.Id, normal); return num; }
public void MyTestInitialize() { m_DlHOService = new DlHandOverService(m_CurretTti,m_Sfth ); m_ISourceCarrier = new SimulationCarrier(); m_ITargetCarrier = new SimulationCarrier(); m_NgbCaiirer = new SimulationCarrier(); m_Carrier = new SimulationCarrier(); m_User = new SimulationUser(); m_User.LTEUser = new User(); Service serv = new UnionPsService(); m_User.LTEUser.Service = serv; m_NgbCarrierList = new List<ISimulationCarrier>(); m_ISourceCarrier.AdmissionCarrierTag = new AdmissionCellTag(); AdmissionCellTag adCellTag = m_ISourceCarrier.AdmissionCarrierTag as AdmissionCellTag; adCellTag.ULSourceOutThroughput = 100; m_Carrier.AdmissionCarrierTag = new AdmissionCellTag(); m_NgbCaiirer.AdmissionCarrierTag = new AdmissionCellTag(); AdmissionCellTag ngbCellTag = m_NgbCaiirer.AdmissionCarrierTag as AdmissionCellTag; ngbCellTag.ULTotalHOThroughput = 50; SimulationCarrier temp = m_NgbCaiirer as SimulationCarrier; temp.Carrier = new LTECell(); m_LbUserList = new List<ISimulationUser>(); SimulationUser user1 = new SimulationUser(); SimulationUser user2 = new SimulationUser(); m_LbUserList.Add(user1); m_LbUserList.Add(user2); m_NgbCarrierList.Add(m_NgbCaiirer); m_DlHOVoiceUserList = new List<ISimulationUser>(); SimulationUser VUser1 = new SimulationUser(); SimulationUser VUser2 = new SimulationUser(); m_DlHOVoiceUserList.Add(VUser1); m_DlHOVoiceUserList.Add(VUser2); CarrierTotalLoss a=new CarrierTotalLoss (); SimulationCarrier carrier = new SimulationCarrier(); carrier.IsLTECell = true; LTECell lteCell = new LTECell(); lteCell.RSPower = 15f; carrier.Carrier = lteCell; CarrierTotalLoss b = new CarrierTotalLoss(carrier, 100f, 100f); //SimulationCarrier carrier1 = new SimulationCarrier(); //b.Carrier = carrier1; List<CarrierTotalLoss> listCarrier = new List<CarrierTotalLoss>(); listCarrier.Add(a); listCarrier.Add(b); a.Carrier = new SimulationCarrier(); carrier.IsLTECell = false; RelayCell relayCell1 = new RelayCell(); relayCell1.RSPower = 16f; a.Carrier.Carrier = relayCell1; b.Carrier = new SimulationCarrier(); carrier.IsLTECell = false; RelayCell relayCell2 = new RelayCell(); relayCell1.RSPower = 17f; b.Carrier.Carrier = relayCell2; m_User.BestServiceCellBeforeHandOver = a; m_User.StroNbrBeforeHandOver = b; user1.BestServiceCellBeforeHandOver = a; user1.StroNbrBeforeHandOver = b; user2.BestServiceCellBeforeHandOver = a; user2.StroNbrBeforeHandOver = b; user1.CarrierListInComputeArea = listCarrier.ToArray(); user2.CarrierListInComputeArea = listCarrier.ToArray(); m_User.CarrierListInComputeArea = listCarrier.ToArray(); List<ISimulationUser> list = new List<ISimulationUser>(); list.AddRange(m_LbUserList); RelayCell relaycarrier = new RelayCell(); ((SimulationCarrier)m_NgbCaiirer).Carrier = relaycarrier; ((SimulationCarrier)m_ISourceCarrier).Carrier = relaycarrier; ((SimulationCarrier)m_ITargetCarrier).Carrier = relaycarrier; user1.CarrierListInComputeArea[0].Carrier = carrier; user1.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; user2.CarrierListInComputeArea[0].Carrier = carrier; user2.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; m_User.CarrierListInComputeArea[0].Carrier = carrier; m_User.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; user1.CarrierListInComputeArea[1].Carrier = carrier; user1.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; user2.CarrierListInComputeArea[1].Carrier = carrier; user2.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; m_User.CarrierListInComputeArea[1].Carrier = carrier; m_User.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; //m_User.StroNbrBeforeHandOver.Carrier = carrier; relaycarrier.RSPower = 100; //m_User.StroNbrBeforeHandOver.Carrier = carrier; //m_User.BestServiceCellBeforeHandOver.Carrier = carrier; Huawei.UNet.Traffic.Map.Interface.User lteuser = new Huawei.UNet.Traffic.Map.Interface.User(); user1.LTEUser = lteuser; user1.ID = 1; Huawei.UNet.Traffic.Interface.Terminal terminal = new Huawei.UNet.Traffic.Interface.Terminal(); user1.LTEUser.Terminal = terminal; List<Huawei.UNet.Traffic.Interface.NetworkTerminal> netterminallist = new List<NetworkTerminal>(); NetworkTerminal networkTerminal = new NetworkTerminal(); LTETerminal lteterminal = new LTETerminal(); netterminallist.Add(lteterminal); user1.LTEUser.Terminal.NetTerminalList = netterminallist; user1.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(user1.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(user1.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService()); user2.LTEUser = lteuser; user2.LTEUser.Terminal = terminal; user2.ID = 2; netterminallist.Add(lteterminal); user2.LTEUser.Terminal.NetTerminalList = netterminallist; user2.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(user2.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(user2.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService()); m_User.LTEUser = lteuser; m_User.ID = 0; m_User.LTEUser.Terminal = terminal; netterminallist.Add(lteterminal); m_User.LTEUser.Terminal.NetTerminalList = netterminallist; m_User.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(m_User.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(m_User.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService()); //Service service = new Service(); //UnionPsService psservice = SimulationTools.GetUnionPsService(service); //psservice.DlOffset = 0; //psservice.DlTxEff = 1; //psservice.DlMinThroughputDemand = 0; //user1.LTEUser.Service = psservice; }
public void UpDateInfo_Test4() { RelayCell relaycarrier1 = new RelayCell(); RelayCell relaycarrier2 = new RelayCell(); ((SimulationCarrier)m_ISourceCarrier).Carrier = relaycarrier1; ((SimulationCarrier)m_ITargetCarrier).Carrier = relaycarrier2; relaycarrier1.ID = 6; relaycarrier2.ID = 3; m_User.StroNbrBeforeHandOver.Carrier.Carrier.ID = 2; m_User.BestServiceCellBeforeHandOver.Carrier.ID = 0; m_ITargetCarrier.AdmissionCarrierTag = new AdmissionCellTag(); m_DlHOService.UpdateInfo(m_ISourceCarrier, m_ITargetCarrier, m_User, m_CarrierIndex); AdmissionCellTag tag2 = m_ITargetCarrier.AdmissionCarrierTag as AdmissionCellTag; tag2.DLAcceptHOThroughput = 1; }
public bool ValidateObj(string oriRelayCellName, RelayCell relayCell, List<string> excludeRelayCellName) { this.m_OldName = oriRelayCellName; short relayCellId = this.GetRelayCellId(oriRelayCellName); string name = relayCell.Name; short validatedID = 0; IExtractor ex = new RelayCellObjExtractor(relayCell); this.m_RelayCellDesc = new RelayCellDesc(this.m_Model, new RelayCell(), excludeRelayCellName); bool flag = this.Validate(ref this.m_Info, this.m_RelayCellDesc, ex, relayCellId); this.m_SectorValidator.CellName = name; flag = flag && this.m_SectorValidator.ValidateObjectWithOutCell(oriRelayCellName, this.GetSectorConfig(relayCell)); relayCell.CopyFrom(this.m_RelayCellDesc.GetModel()); return flag; }
public bool ValidateObj(string oriRelayCellName, RelayCell relayCell) { List<string> excludeRelayCellName = new List<string>(); return this.ValidateObj(oriRelayCellName, relayCell, excludeRelayCellName); }
private AntConfig GetSectorConfig(RelayCell relayCell) { foreach (AntConfig config in relayCell.AntList) { if (config.IsMainAnt) { return config; } } return null; }
//Todo``` public void CopyFrom(RelayCell cell) { m_Ams = cell.Ams; m_AmsThreshold = cell.AmsThreshold; base.CopyFrom(cell); this.m_TAC = cell.TAC; m_PhyID = cell.PhyID; m_RCToCellAnt = cell.RCToCellAnt; m_CellToUEAnt = cell.CellToUEAnt; m_RelayUEPropModelConfig = cell.RelayUEPropModelConfig; m_SchedulePolicy = cell.SchedulePolicy; m_HighSpeed = cell.HighSpeed; //m_parentRN = cell.ParentRN; m_RSPower = cell.RSPower; m_CellRadius = cell.CellRadius; m_DlActualTxPower = cell.DlActualTxPower; m_BCHPoffset = cell.BCHPoffset; m_BCHPower = cell.BCHPower; m_BestStartFrequency = cell.BestStartFrequency; m_RCellPriority = cell.RCellPriority; m_RCellRadius = cell.RCellRadius; m_PCFICHPoffset = cell.PCFICHPoffset; m_PDCCHPoffset = cell.PDCCHPoffset; m_PHICHPoffset = cell.PHICHPoffset; ; m_SCHPoffset = cell.SCHPoffset; m_SCHPower = cell.SCHPower; m_UlActualIoT = cell.UlActualIoT; m_RPUCCHPower = cell.RPUCCHPower; //Cal m_RPUSCHPower = cell.RPUSCHPower; //add by xg 20100224 m_RelayAlgParameter = cell.RelayAlgParameter; m_PB = cell.PB; m_ActualDlLoad = cell.ActualDlLoad; m_ActualUlLoad = cell.ActualUlLoad; m_PowerBias = cell.PowerBias; m_IsIndoor = cell.m_IsIndoor; m_DLRsSinrAccessThreshold = cell.DLRsSinrAccessThreshold; }
public void SetRelayCellByTemplate(RelayCell newRC) { newRC.UlTargetLoad = this.UlLoad; newRC.DlTargetLoad = this.DlLoad; newRC.MaxPower = this.Power; }
//add by lw 3.11为了区别于别的制式 public void addNewRelayCell(string rcName, ReceptionEquipment reception) { RelayCell rc = new RelayCell(); this.SetIACellProperty(rcName, reception, rc); this.AddIACellToCarriers(rc); }
public void MyTestInitialize() { m_NgbCarrierList = new List<ISimulationCarrier>(); m_AdCarrier1 = new SimulationCarrier(); m_AdCarrier2 = new SimulationCarrier(); m_AdCarrier1.AdmissionCarrierTag = new AdmissionCellTag(); m_AdCarrier2.AdmissionCarrierTag = new AdmissionCellTag(); m_LbThresHoldParam = new LBThresholdParam(); m_SUser1 = new SimulationUser(); m_SUser2 = new SimulationUser(); m_SUser1.AdmissionUserTag = new SimulationUser(); m_SUser2.AdmissionUserTag = new SimulationUser(); m_AdmissionCarrier = new SimulationCarrier(); LTECell ltecarrier = new LTECell(); m_AdmissionCarrier.Carrier = ltecarrier; m_AdCarrier1.Carrier = ltecarrier; m_AdCarrier2.Carrier = ltecarrier; FrequencyBand freband = new FrequencyBand(); freband.BandWidth = 100; ltecarrier.FreqBand = freband; m_AdmissionCarrier.AdmissionCarrierTag = new AdmissionCellTag(); m_Lbth = new LBThresholdParam(); m_DLLB = new DlLoadBalancingService(m_CurrentTTI, m_Lbth); m_LbUserList = new List<ISimulationUser>(); m_User1 = new SimulationUser(); m_User2 = new SimulationUser(); m_LbUserList.Add(m_User1); m_LbUserList.Add(m_User2); m_DlDataWaitUserList = new List<ISimulationUser>(); m_DlDataWaitUserList.Add(m_SUser1); m_DlDataWaitUserList.Add(m_SUser2); m_AdmissionCarrier.DlDataWaitUserList = m_DlDataWaitUserList; m_DlVoiceWaitUserList = new List<ISimulationUser>(); m_DlVoiceWaitUserList.Add(m_SUser1); m_DlVoiceWaitUserList.Add(m_SUser2); m_AdmissionCarrier.DlVoiceWaitUserList = m_DlVoiceWaitUserList; m_NgbList = new List<ISimulationCarrier>(); RelayCell relaycarrier = new RelayCell(); LteAlgParam ltealgparam = new LteAlgParam(); m_AdmissionCarrier.Carrier = relaycarrier; m_AdCarrier1.Carrier = relaycarrier; m_AdCarrier2.Carrier = relaycarrier; m_DlUserList = new List<ISimulationUser>(); m_DlUserList.Add(m_SUser1); m_DlUserList.Add(m_SUser2); m_AdmissionCarrier.DlUserList = m_DlUserList; m_CarrierListInComputerArea = new CarrierTotalLoss(); List<CarrierTotalLoss> listcarrier1 = new List<CarrierTotalLoss>(); CarrierTotalLoss a = new CarrierTotalLoss(); CarrierTotalLoss b = new CarrierTotalLoss(); listcarrier1.Add(a); listcarrier1.Add(b); SimulationCarrier carrier = new SimulationCarrier(); ((SimulationUser)m_SUser1).CarrierListInComputeArea = listcarrier1.ToArray(); ((SimulationUser)m_SUser2).CarrierListInComputeArea = listcarrier1.ToArray(); ((SimulationUser)m_SUser1).CarrierListInComputeArea[0].Carrier = carrier; ((SimulationUser)m_SUser2).CarrierListInComputeArea[0].Carrier = carrier; ((SimulationUser)m_SUser1).CarrierListInComputeArea[1].Carrier = carrier; ((SimulationUser)m_SUser2).CarrierListInComputeArea[1].Carrier = carrier; ((SimulationUser)m_SUser1).CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; ((SimulationUser)m_SUser2).CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; ((SimulationUser)m_SUser1).CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; ((SimulationUser)m_SUser2).CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; m_User1.CarrierListInComputeArea = listcarrier1.ToArray(); m_User2.CarrierListInComputeArea = listcarrier1.ToArray(); m_User1.CarrierListInComputeArea[0].Carrier = carrier; m_User2.CarrierListInComputeArea[0].Carrier = carrier; m_User1.CarrierListInComputeArea[1].Carrier = carrier; m_User2.CarrierListInComputeArea[1].Carrier = carrier; m_User1.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; m_User2.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; m_User1.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; m_User2.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; m_User1.BestServiceCellBeforeHandOver = a; m_User1.StroNbrBeforeHandOver = b; m_User2.BestServiceCellBeforeHandOver = a; m_User2.StroNbrBeforeHandOver = b; m_CarrierListInComputerArea.Carrier = carrier; relaycarrier.RSPower = 100; }
/// <summary> /// access路损 /// </summary> /// <param name="carrier"></param> /// <param name="userList"></param> /// <returns></returns> public LinkLossStruct[][][] GetAccessLinkLoss(RelayCell carrier, List<User> userList) { LinkLossStruct[] ulAndDlLinkLoss; int num; LinkLossStruct[][][] structArray = new LinkLossStruct[userList.Count][][]; Transceiver parent = carrier.Parent; this.m_StructAntennaParam.IsSimple = false; isRelayOutdoorAntenna(carrier); for (num = 0; num < userList.Count; num++) { structArray[num] = new LinkLossStruct[][] { new LinkLossStruct[2] }; ulAndDlLinkLoss = GetAccessUlAndDlLinkLoss(carrier, userList[num]); structArray[num][0][0] = ulAndDlLinkLoss[0]; structArray[num][0][1] = ulAndDlLinkLoss[1]; } return structArray; }
private void GetRelayNodeList(AlloteAddRelayNodeEventArgs args, List<RelayNode> rnList) { List<string> candidateSiteName = new List<string>(); List<short> candidateSiteID = new List<short>(); List<RelayCell> commitCarrierList = new List<RelayCell>(); foreach (RelayNode rn in m_RNCollection.RNList) { candidateSiteName.Add(rn.Name); } List<double> listX = args.XList; List<double> listY = args.YList; for (int i = 0; i < listX.Count; i++) { double num4; double num5; LTECell parentCell; if (m_Model.LTECellColl.CellList == null || m_Model.LTECellColl.CellList.Count == 0) { return ; } else { List<LTECell> nearestLTECellList = new List<LTECell>(); float distance = float.MaxValue; LTECell nearestLTECell = new LTECell(); foreach (LTECell cell in m_Model.LTECellColl.CellList) { double dic = Math.Pow((cell.Parent.X - listX[i]), 2) + Math.Pow((cell.Parent.Y - listY[i]), 2); if (dic < distance) { distance = (float)dic; nearestLTECell = cell; } } foreach (LTECell cell in m_Model.LTECellColl.CellList) { double dic = Math.Pow((cell.Parent.X - listX[i]), 2) + Math.Pow((cell.Parent.Y - listY[i]), 2); if (Math.Abs(dic - distance) / distance < 0.0001) { nearestLTECellList.Add(cell); } } List<double> angleList = new List<double>(); foreach (LTECell cell in nearestLTECellList) { double rc_Angle = CalcAngle(listX[i] - cell.Parent.X, listY[i] - cell.Parent.Y); double intersectionAngle = Math.Abs(rc_Angle - cell.Parent.AntConfiguration[0].Azimuth); if (intersectionAngle > 180) { intersectionAngle = 360 - intersectionAngle; } angleList.Add(intersectionAngle); } LTECell[] cellArray = new LTECell[angleList.Count]; double[] angleArray = new double[angleList.Count]; for (int j = 0; j < angleList.Count; j++) { cellArray[j] = nearestLTECellList[j]; angleArray[j] = angleList[j]; } Array.Sort(angleArray, cellArray); parentCell = cellArray[0]; } RelayNode rn = new RelayNode(); rn.X = listX[i]; rn.Y = listY[i]; this.m_GeoObserver.TransformXYToBL(listX[i], listY[i], out num4, out num5); rn.Latitude = num4; rn.Longitude = num5; rn.Altitude = this.m_GeoObserver.GetDTM(rn.X, rn.Y);//获得海拔高度 rn.Name = this.GetNewRelayNodeName(candidateSiteName); rn.Active = true; rn.Visible = true; rn.Equipment = this.m_BTSCol.BtsEquipmentList[0]; rn.Parent = parentCell; rn.ID = this.GetNewRelayNodeID(candidateSiteID); parentCell.RNList.Add(rn); candidateSiteName.Add(rn.Name); candidateSiteID.Add(rn.ID); rnList.Add(rn); RelayCell rc = new RelayCell(rn); rc.Name = this.m_RCCollection.GetValidCellName(rn.Name); commitCarrierList.Add(rc); this.m_RCCollection.AddRelayCell("GIS", commitCarrierList, rn); rc.Reception = this.m_ReceptionEquip[0]; rc.CellToUEAnt.OutdoorAntenna = m_Antenna.FindAntennaByName(m_tplRelayCol.TplRC.AntennaName); rc.RCToCellAnt.OutdoorAntenna = m_Antenna.FindAntennaByName(m_tplRelayCol.TplRN.AntennaName); PropModelConfig item = new PropModelConfig(); item.CalcRadius = (int)(m_tplRelayCol.TplRC.MainCalcRidius); item.CalcResolution = (int)(m_tplRelayCol.TplRC.MainModelResolution); item.PropModelID = m_tplRelayCol.TplRC.MainPropagModelID; rc.FreqBand = rc.ParentRN.Parent.FreqBand; rc.ChannelIndex = rc.FreqBand.AvailableChIndexList[0]; rc.PropModels.Clear(); rc.PropModels.Add(item); rc.RelayUEPropModelConfig = rc.PropModels[0]; commitCarrierList.Clear(); } }