/// <summary> /// 取得控制验算结果 /// </summary> /// <returns></returns> public SingleEleCheckResData GetControlData() { SingleEleCheckResData Res = new SingleEleCheckResData(); //对字典进行遍历 foreach (DictionaryEntry DE in _SingleEleCheckRes) { Res = Res.TheMaxRatio(DE.Value as SingleEleCheckResData); } return(Res); }
/// <summary> /// 验算单个单元 /// </summary> /// <param name="mm">模型对像</param> /// <param name="iElem">单元号</param> public void CheckElemByNum(ref Bmodel mm, int iElem) { EleCheckResData EleData = new EleCheckResData(iElem); //单元组合验算表 List <string> coms = mm.LoadCombTable.ComSteel; foreach (string com in coms) { double gamma_re = 1.0;//承载力抗震调整系数 //如果未激活则不验算 if (mm.LoadCombTable[com].bACTIVE == false) { continue; } FrameElement ele = mm.elements[iElem] as FrameElement; //若为地震组合则取存储的承载力抗震调整系数 if (mm.LoadCombTable[com].hasLC_ANAL(ANAL.ES) || mm.LoadCombTable[com].hasLC_ANAL(ANAL.RS)) { gamma_re = ele.DPs.Gamma_re; } //先进行单元内力组合 ElemForce EFcom = mm.CalElemForceComb(mm.LoadCombTable[com], iElem); //计算强度 double Strength_i = CodeCheck.CalSecMaxStrength_YW(EFcom.Force_i, mm.sections[ele.iPRO], ele.DPs) * gamma_re;//i截面计算强度 double Strength_2 = CodeCheck.CalSecMaxStrength_YW(EFcom.Force_48, mm.sections[ele.iPRO], ele.DPs) * gamma_re; double Strength_j = CodeCheck.CalSecMaxStrength_YW(EFcom.Force_j, mm.sections[ele.iPRO], ele.DPs) * gamma_re; //计算稳定性强度 //double Stability_i = CodeCheck.CalStability_YW(EFcom.Force_i, mm.sections[ele.iPRO], // ele.DPs, mm.mats[ele.iMAT].Elast)*gamma_re; //double Stability_2 =CodeCheck. CalStability_YW(EFcom.Force_48, mm.sections[ele.iPRO], // ele.DPs, mm.mats[ele.iMAT].Elast)*gamma_re; //double Stability_j =CodeCheck. CalStability_YW(EFcom.Force_j, mm.sections[ele.iPRO], // ele.DPs, mm.mats[ele.iMAT].Elast)*gamma_re; double Stability_i = CodeCheck.CalSecMaxStability_YW(EFcom.Force_i, mm.sections[ele.iPRO], ele.DPs, mm.mats[ele.iMAT].Elast) * gamma_re; double Stability_2 = CodeCheck.CalSecMaxStability_YW(EFcom.Force_48, mm.sections[ele.iPRO], ele.DPs, mm.mats[ele.iMAT].Elast) * gamma_re; double Stability_j = CodeCheck.CalSecMaxStability_YW(EFcom.Force_j, mm.sections[ele.iPRO], ele.DPs, mm.mats[ele.iMAT].Elast) * gamma_re; double Ratio = Math.Max(Strength_i, Stability_i) / ele.DPs.fy; double Ratio_2 = Math.Max(Strength_2, Stability_2) / ele.DPs.fy; double Ratio_j = Math.Max(Strength_j, Stability_j) / ele.DPs.fy; //加入到数据库 SingleEleCheckResData Secrd = new SingleEleCheckResData("I", com, EFcom.Force_i.N, EFcom.Force_i.My, EFcom.Force_i.Mz, Strength_i, Stability_i, Ratio); SingleEleCheckResData Secrd_2 = new SingleEleCheckResData("1/2", com, EFcom.Force_48.N, EFcom.Force_48.My, EFcom.Force_48.Mz, Strength_2, Stability_2, Ratio_2); SingleEleCheckResData Secrd_j = new SingleEleCheckResData("J", com, EFcom.Force_j.N, EFcom.Force_j.My, EFcom.Force_j.Mz, Strength_j, Stability_j, Ratio_j); Secrd = Secrd.TheMaxRatio(Secrd_2);//取得控制内力 Secrd = Secrd.TheMaxRatio(Secrd_j); EleData.Add(com, Secrd);//添加到单元验算结果数据中 } //添加到数据表 if (this._CheckResTable.ContainsKey(iElem)) { this._CheckResTable.Remove(iElem); this._CheckResTable.Add(iElem, EleData); } else { this._CheckResTable.Add(iElem, EleData); } }