/// <summary> /// 生成基本组合:由永久荷载控制 /// </summary> private void CreatFundamentalComb_DL() { //由活载控制的基本组合 List <BLoadCase> List_V = new List <BLoadCase>(); //所有可变荷载工况列表 List_V.AddRange(List_LL); //活 List_V.AddRange(List_WL); //风 List_V.AddRange(List_TL); //温 List <BLoadCase[]> c = new List <BLoadCase[]>(); //可变荷载组合列表 for (int i = 1; i <= List_V.Count; i++) { List <BLoadCase[]> ci = PermutationAndCombination <BLoadCase> .GetCombination(List_V.ToArray(), i); c.AddRange(ci); } //生成完整组合 for (int i = 0; i < c.Count; i++) { LCType ctrT = LCType.D; //控制工况类型:恒载 BLoadCombG LComb = new BLoadCombG(ctrT); LComb.NAME = "C1"; //临时取个名 LComb.KIND = LCKind.GEN; foreach (BLoadCase lc in List_DL) //恒 { double F_DL = FF.getPartialF_ctr(LCType.D); BLCFactGroup lcf_DL = new BLCFactGroup(lc, F_DL); LComb.AddLCFactGroup(lcf_DL); } int num_LL = c[i].Length; for (int j = 0; j < num_LL; j++) { LCType lct = c[i][j].LCType; BLCFactGroup lcf_LL = new BLCFactGroup(c[i][j], FF.getPartialF(lct) * FF.getLamd_LL(lct) * FF.getCombinationF(lct)); LComb.AddLCFactGroup(lcf_LL);//添加组合活荷载 } LComb.DESC = LComb.ToString();//指定组合描述 BLT.AddEnforce(LComb); } }
/// <summary> /// 由工况类型取得行数的对应关系 /// </summary> /// <param name="type">工况类型</param> /// <returns>表中的行索引</returns> public int LCindex(LCType type) { int LCindex = 0; switch (type) { case LCType.D: LCindex = 0; break; case LCType.L: LCindex = 1; break; case LCType.W: LCindex = 2; break; case LCType.T: LCindex = 3; break; default: LCindex = 0; break; } return(LCindex); }
private static string GetLocalizationInfo(int LCID, LCType type) { StringBuilder sb = new StringBuilder(); int count = GetLocaleInfo((uint)LCID, (uint)type, sb, 0); sb = new StringBuilder(count); GetLocaleInfo((uint)LCID, (uint)type, sb, count); return sb.ToString(); }
/// <summary> /// 查得不控制时的分项系数 /// </summary> /// <param name="type"></param> /// <returns>系数值</returns> public double getPartialF(LCType type) { int i = this.LCindex(type);//取得行索引 return((double)_FTable.Rows[i]["PartialF"]); }
/// <summary> /// 查得组合值系数 /// </summary> /// <param name="type"></param> /// <returns>系数值</returns> public double getCombinationF(LCType type) { int i = this.LCindex(type);//取得行索引 return((double)_FTable.Rows[i]["CombinationF"]); }
/// <summary> /// 查得活载使用年限调整系数 /// </summary> /// <param name="type"></param> /// <returns>系数值</returns> public double getLamd_LL(LCType type) { int i = this.LCindex(type);//取得行索引 return((double)_FTable.Rows[i]["Lamd_LL"]); }
/// <summary> /// 生成基本组合:由可变荷载控制 /// </summary> /// <param name="DL_Favour">恒载是否有利</param> private void CreatFundamentalComb_VL(bool DL_Favour) { //由活载控制的基本组合 List <BLoadCase> List_V = new List <BLoadCase>(); //所有可变荷载工况列表 List_V.AddRange(List_LL); //活 List_V.AddRange(List_WL); //风 List_V.AddRange(List_TL); //温 List <BLoadCase[]> c = new List <BLoadCase[]> (); //可变荷载组合列表 for (int i = 1; i <= List_V.Count; i++) { List <BLoadCase[]> ci = PermutationAndCombination <BLoadCase> .GetCombination(List_V.ToArray(), i); if (i == 1) { c.AddRange(ci); continue; } //按主控制工况进行办换顺序 foreach (BLoadCase[] cc in ci) { List <BLoadCase[]> cn = PermutationAndCombination <BLoadCase> .GetPermutationOne(cc); c.AddRange(cn); } } //生成完整组合 for (int i = 0; i < c.Count; i++) { LCType ctrT = c[i][0].LCType; //控制工况类型 BLoadCombG LComb = new BLoadCombG(ctrT); LComb.NAME = "C1"; //临时取个名 LComb.KIND = LCKind.GEN; foreach (BLoadCase lc in List_DL) //恒 { double F_DL = 1.0; if (DL_Favour) { F_DL = FF.Rgn_DL;//恒载有利; } else { F_DL = FF.Rg_DL;//恒载不利; } BLCFactGroup lcf_DL = new BLCFactGroup(lc, F_DL); LComb.AddLCFactGroup(lcf_DL); } int num_LL = c[i].Length; BLCFactGroup lcf_zLL = new BLCFactGroup(c[i][0], FF.getPartialF_ctr(c[i][0].LCType) * FF.getLamd_LL(c[i][0].LCType)); LComb.AddLCFactGroup(lcf_zLL);//添加控制活荷载工况 if (num_LL > 1) { for (int j = 1; j < num_LL; j++) { LCType lct = c[i][j].LCType; BLCFactGroup lcf_LL = new BLCFactGroup(c[i][j], FF.getPartialF_ctr(lct) * FF.getLamd_LL(lct) * FF.getCombinationF(lct)); LComb.AddLCFactGroup(lcf_LL);//添加组合活荷载 } } LComb.DESC = LComb.ToString();//指定组合描述 BLT.AddEnforce(LComb); } }