/// <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="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); } }