public C___I4(CCrSc objCrSc, C_GEO___I objGeo, C_IFO objIFO, C_STR___I objStr, C___I objC__I, C_MAT___I objMat, C_ADD___I objAdd, ECrScSymmetry1 eSym) { if (eSym == ECrScSymmetry1.eDS) GetCrSc4_ID(objCrSc, objGeo, objIFO, objStr, objC__I, objMat, objAdd); else GetCrSc4_IM(objCrSc, objGeo, objIFO, objStr, objC__I, objMat, objAdd); }
public C___I(C_GEO___I objGeo, C_MAT___I objMat, C_IFO objIFO, C_NAD objNAD, C_STR___I objStr, ECrScSymmetry1 eSym, ECrScPrType1 eProd) { if (eSym == ECrScSymmetry1.eDS) { // Flange GetClassTab52_OUT(objStr.m_fSigma_fA, objStr.m_fSigma_fB, objGeo.m_fc_f, objGeo.m_ft_f, objMat.m_fEps_f, m_fct_f, m_fLambda_f_1, m_fLambda_f_2, m_fLambda_f_3, m_iClass_f, objMat.BStainlessS); float fF_f = objGeo.m_fb * objGeo.m_ft_f * objMat.m_ff_y_f / objNAD.FGamma_M0; float fF_w = objGeo.m_fc_w * objGeo.m_ft_w * objMat.m_ff_y_w / objNAD.FGamma_M0; // Web GetClassTab52_INT(objStr.m_fSigma_wA, objStr.m_fSigma_wB, objStr.m_fSigma_N, fF_f, fF_w, fF_f, objIFO.FN_Ed, objGeo.m_fc_w, objGeo.m_ft_w, objMat.m_ff_y_w / objNAD.FGamma_M0, objMat.m_fEps_w, m_iKlassif_Psi_Fix_Sigma_N, m_bKlassif_Eps_Kl3_Sigma_com, m_fSigma_com_Ed, m_fct_w, m_fAlpha_w, m_fSigma_fyd_1, m_fSigma_fyd_2, m_fPsi_w, m_fLambda_w_1, m_fLambda_w_2, m_fLambda_w_3, m_iClass_w, objMat.BStainlessS); m_iClass = Math.Max(m_iClass_f, m_iClass_w); } else { // Upper Flange GetClassTab52_OUT(objStr.m_fSigma_fuA, objStr.m_fSigma_fuB, objGeo.m_fc_fu, objGeo.m_ft_fu, objMat.m_fEps_fu, m_fct_fu, m_fLambda_fu_1, m_fLambda_fu_2, m_fLambda_fu_3, m_iClass_fu, objMat.BStainlessS); // Bottom Flange GetClassTab52_OUT(objStr.m_fSigma_fbA, objStr.m_fSigma_fbB, objGeo.m_fc_fb, objGeo.m_ft_fb, objMat.m_fEps_fb, m_fct_fb, m_fLambda_fb_1, m_fLambda_fb_2, m_fLambda_fb_3, m_iClass_fb, objMat.BStainlessS); float fF_fu = objGeo.m_fb_fu * objGeo.m_ft_fu * objMat.m_ff_y_fu / objNAD.FGamma_M0 + objGeo.m_fr_su * objGeo.m_ft_w * objMat.m_ff_y_w / objNAD.FGamma_M0; float fF_w = objGeo.m_fc_w * objGeo.m_ft_w * objMat.m_ff_y_w / objNAD.FGamma_M0; float fF_fb = objGeo.m_fb_fb * objGeo.m_ft_fb * objMat.m_ff_y_fb / objNAD.FGamma_M0 + objGeo.m_fr_sb * objGeo.m_ft_w * objMat.m_ff_y_w / objNAD.FGamma_M0; float fF_f_com, fF_f_ten; if (objIFO.FM_y_Ed >= 0.0f) { fF_f_com = fF_fu; fF_f_ten = fF_fb; } else { fF_f_com = fF_fb; fF_f_ten = fF_fu; } // Web GetClassTab52_INT(objStr.m_fSigma_wA, objStr.m_fSigma_wB, objStr.m_fSigma_N, fF_f_com, fF_w, fF_f_ten, objIFO.FN_Ed, objGeo.m_fc_w, objGeo.m_ft_w, objMat.m_ff_y_w / objNAD.FGamma_M0, objMat.m_fEps_w, m_iKlassif_Psi_Fix_Sigma_N, m_bKlassif_Eps_Kl3_Sigma_com, m_fSigma_com_Ed, m_fct_w, m_fAlpha_w, m_fSigma_fyd_1, m_fSigma_fyd_2, m_fPsi_w, m_fLambda_w_1, m_fLambda_w_2, m_fLambda_w_3, m_iClass_w, objMat.BStainlessS); m_iClass = Math.Max(Math.Max(m_iClass_fu, m_iClass_fb), m_iClass_w); } }
C_NAD m_objNAD = new C_NAD(); // doriesit konstruktor a naplnenie Mat #endregion Fields #region Constructors public CCalcul() { // Basic Cross-section Data and Classification // s niektorymi objektami potrebujem pracovat aj dalej, takze by to malo byt inak :-/ // Mat jednu triedu, vytvarat jej objekt ako clensky v tejto triede a volat rozne konštruktory podla ECrScShType ???- zbytocne vela premennych - rozne typy maju rozne dáta switch (m_eCrScType) { case ECrScShType1.eCrScType_I: // I and H - section { C_GEO___I objGeo = new C_GEO___I(m_eSym, m_eProd); C_MAT___I objMat = new C_MAT___I(objGeo, m_eSym); C_ADD___I objAdd = new C_ADD___I(m_objNAD, objGeo, objMat, m_objCrSc, m_eSym, m_eProd); C_STR___I objStr = new C_STR___I(m_objIFO, objGeo, m_objCrSc, m_eSym); C___I objClass = new C___I(objGeo, objMat,m_objIFO,m_objNAD,objStr,m_eSym,m_eProd); if (objClass.m_iClass == 4) { C___I4 objC___I4 = new C___I4(m_objCrSc, objGeo, m_objIFO, objStr, objClass, objMat, objAdd, m_eSym); } break; } case ECrScShType1.eCrScType_C: // C and U (channel) - section { C_GEO___U objGeo = new C_GEO___U(m_eProd); C_MAT___U objMat = new C_MAT___U(objGeo, m_eSym); C_ADD___U objAdd = new C_ADD___U(m_objNAD, objGeo, objMat, m_objCrSc, m_eProd); C_STR___U objStr = new C_STR___U(m_objIFO, objGeo, m_objCrSc); C___U objClass = new C___U(objGeo, objMat, m_objIFO, m_objNAD, objStr); if (objClass.m_iClass == 4) { C___U4 objC___U4 = new C___U4(m_objCrSc, objGeo, m_objIFO, objStr, objClass, objMat, objAdd); } break; } case ECrScShType1.eCrScType_L: // L (angle) - section , equal and unequal { C_GEO___L objGeo = new C_GEO___L(m_eSym, m_eProd); C_MAT___L objMat = new C_MAT___L(objGeo, m_eSym); C_ADD___L objAdd = new C_ADD___L(m_objNAD, objGeo, objMat, m_objCrSc, m_eSym, m_eProd); C_STR___L objStr = new C_STR___L(m_objIFO, objGeo, m_objCrSc, m_eSym); C___L objClass = new C___L(objGeo, objMat, objStr); if (objClass.m_iClass == 4) { C___L4 objC___L4 = new C___L4(m_objCrSc, objGeo, m_objIFO, objStr, objClass, objMat, objAdd, m_eSym); } break; } case ECrScShType1.eCrScType_T: // T - section { /* C_GEO___T objGeo = new C_GEO___I(m_eSym, m_eProd); C_MAT___T objMat = new C_MAT___I(objGeo, m_eSym); C_ADD___I objAdd = new C_ADD___I(m_objNAD, objGeo, objMat, m_objCrSc, m_eSym, m_eProd); C_STR___I objStr = new C_STR___I(m_objIFO, objGeo, m_objCrSc, m_eSym); C___I objC___I = new C___I(objGeo, objMat, m_objIFO, m_objNAD, objStr, m_eSym, m_eProd); if (objC___I.m_iClass == 4) { C___I4 objC___I4 = new C___I4(m_objCrSc, objGeo, m_objIFO, objStr, objC___I, objMat, objAdd, m_eSym); } */ break; } case ECrScShType1.eCrScType_HL: // HoLLow / box - section, hollow - section (square and rectangular) { C_GEO__HL objGeo = new C_GEO__HL(m_eProd); C_MAT__HL objMat = new C_MAT__HL(objGeo, m_eProd); C_ADD__HL objAdd = new C_ADD__HL(m_objNAD, objGeo, objMat, m_objCrSc, m_eProd); C_STR__HL objStr = new C_STR__HL(m_objIFO, objGeo, m_objCrSc, m_eProd); C__HL objClass = new C__HL(objGeo, objMat, m_objIFO, m_objNAD, objStr, m_eSym, m_eProd); if (objClass.m_iClass == 4) { C__HL4 objC__HL4 = new C__HL4(m_objCrSc, objGeo, m_objIFO, objStr, objClass, objMat, objAdd, m_eProd); } break; } case ECrScShType1.eCrScType_FB: // Flat Bar { /* C_GEO___I objGeo = new C_GEO___I(m_eSym, m_eProd); C_MAT___I objMat = new C_MAT___I(objGeo, m_eSym); C_ADD___I objAdd = new C_ADD___I(m_objNAD, objGeo, objMat, m_objCrSc, m_eSym, m_eProd); C_STR___I objStr = new C_STR___I(m_objIFO, objGeo, m_objCrSc, m_eSym); C___I objC___I = new C___I(objGeo, objMat, m_objIFO, m_objNAD, objStr, m_eSym, m_eProd); if (objC___I.m_iClass == 4) { C___I4 objC___I4 = new C___I4(m_objCrSc, objGeo, m_objIFO, objStr, objC___I, objMat, objAdd, m_eSym); } */ break; } case ECrScShType1.eCrScType_RB: // Round Bar { /* C_GEO___I objGeo = new C_GEO___I(m_eSym, m_eProd); C_MAT___I objMat = new C_MAT___I(objGeo, m_eSym); C_ADD___I objAdd = new C_ADD___I(m_objNAD, objGeo, objMat, m_objCrSc, m_eSym, m_eProd); C_STR___I objStr = new C_STR___I(m_objIFO, objGeo, m_objCrSc, m_eSym); C___I objC___I = new C___I(objGeo, objMat, m_objIFO, m_objNAD, objStr, m_eSym, m_eProd); if (objC___I.m_iClass == 4) { C___I4 objC___I4 = new C___I4(m_objCrSc, objGeo, m_objIFO, objStr, objC___I, objMat, objAdd, m_eSym); }*/ break; } case ECrScShType1.eCrScType_TU: // TUbe { C_GEO__TU objGeo = new C_GEO__TU(m_eProd); C_MAT__TU objMat = new C_MAT__TU(objGeo); C_ADD__TU objAdd = new C_ADD__TU(m_objNAD, objGeo, objMat, m_objCrSc, m_eProd); C_STR__TU objStr = new C_STR__TU(m_objIFO, objGeo, m_objCrSc); C__TU objC__TU = new C__TU(objGeo, objMat, m_objIFO, m_objNAD, objStr); if (objC__TU.m_iClass == 4) { //Error } break; } default: { break; } } // Cross-section Design // Stability Design // Nasleduje if / else pre urcenie spravneho posudku ktory sa ma vytvorit // objekty CH_10000 - CH_90000 }
public C_ADD___I(C_NAD objNAD, C_GEO___I objGeo, C_MAT___I objMat, CCrSc objCrSc, ECrScSymmetry1 eSym, ECrScPrType1 eProd) { if (eSym == ECrScSymmetry1.eDS) { m_ft_V_z = objGeo.m_ft_w; // (6.20) m_ft_V_y = objGeo.m_ft_f; m_fA_w = objCrSc.m_fA - 2.0f * objGeo.m_fb * objGeo.m_ft_f; if (eProd == ECrScPrType1.eCrSc_rold) m_fA_w += (objGeo.m_ft_w + 2.0f * objGeo.m_fr) * objGeo.m_ft_f; m_fA_f = objCrSc.m_fA - m_fA_w; m_fN_pl = m_fA_f * objMat.m_ff_y_f + m_fA_w * objMat.m_ff_y_w; m_fN_u = m_fA_f * objMat.m_ff_u_f + m_fA_w * objMat.m_ff_u_w; if (eProd == ECrScPrType1.eCrSc_rold) { m_fA_v_z = Math.Max(m_fA_v_z, m_fEta * objGeo.m_fh_w * objGeo.m_ft_w); //6.2.6(3)a) } else { m_fA_v_z = m_fEta * objGeo.m_fh_w * objGeo.m_ft_w; // 6.2.6(3)d) } //6.2.8 float rW_pl_y_w; if (eProd == ECrScPrType1.eCrSc_rold) rW_pl_y_w = 2.0f * sqr(0.5f * objGeo.m_fh - 0.5f * objGeo.m_ft_f) * objGeo.m_ft_w / 4.0f + // acc. to 6.2.6(3) a) 2.0f * objGeo.m_fr * 0.5f * objGeo.m_ft_f * (0.5f * objGeo.m_fh - 0.75f * objGeo.m_ft_f) + 2.0f * 0.214602f * sqr(objGeo.m_fr) * (0.5f * objGeo.m_fh - objGeo.m_ft_f - 0.77663f * objGeo.m_fr); else rW_pl_y_w = sqr(objGeo.m_fh - 2.0f * objGeo.m_ft_f) * objGeo.m_ft_w / 4.0f; // acc. to 6.2.6(3) d) // 6.2.8 float rW_pl_z_f = 2.0f * sqr(objGeo.m_fb) * objGeo.m_ft_f / 4.0f; float rW_pl_y_wh = sqr(objGeo.m_fh_w) * objGeo.m_ft_w / 4.0f; m_fM_pl_y = objCrSc.m_fW_pl_y * objMat.m_ff_y_f + rW_pl_y_wh * (objMat.m_ff_y_w - objMat.m_ff_y_f); m_fM_pl_z = objCrSc.m_fW_pl_z * objMat.m_ff_y_w + rW_pl_z_f * (objMat.m_ff_y_f - objMat.m_ff_y_w); // 6.3.2.3(1) if (eProd == ECrScPrType1.eCrSc_rold) { m_fLambda_rel_LT_0 = objNAD.m_fLambda_rel_LT_0_IR; m_fBeta_LT = objNAD.m_fBeta_LT_IR; } else { m_fLambda_rel_LT_0 = objNAD.m_fLambda_rel_LT_0_IS; m_fBeta_LT = objNAD.m_fBeta_LT_IS; } if (objCrSc.m_fz_S == 0.0f) objCrSc.m_fz_S = objGeo.m_fh / 2.0f; m_bQuerschn_fuer_InterVerf_2_moeglich = true; } else { m_ft_V_z = objGeo.m_ft_w; // (6.20) m_ft_V_y = Math.Min(objGeo.m_ft_fu, objGeo.m_ft_fb); m_fA_fu = objGeo.m_fb_fu * objGeo.m_ft_fu; m_fA_fb = objGeo.m_fb_fb * objGeo.m_ft_fb; m_fA_f = Math.Min(m_fA_fu, m_fA_fb); // Temporary m_fA_w = objGeo.m_fh_w * objGeo.m_ft_w; m_fN_pl = m_fA_fu * objMat.m_ff_y_fu + m_fA_fb * objMat.m_ff_y_fb + m_fA_w * objMat.m_ff_y_w; m_fN_u = m_fA_fu * objMat.m_ff_u_fu + m_fA_fb * objMat.m_ff_u_fb + m_fA_w * objMat.m_ff_u_w; // 6.2.6(3) d) and e) m_fA_v_z = m_fEta * objGeo.m_fh_w * objGeo.m_ft_w; m_fA_v_y = objCrSc.m_fA - objGeo.m_fh_w * objGeo.m_ft_w; float rz_pl_0 = 0.5f * (-objGeo.m_fb_fu * objGeo.m_ft_fu * objMat.m_ff_y_fu + objGeo.m_fh_w * objGeo.m_ft_w * objMat.m_ff_y_w + objGeo.m_fb_fb * objGeo.m_ft_fb * objMat.m_ff_y_fb) / (objGeo.m_ft_w * objMat.m_ff_y_w) + objGeo.m_ft_fu; float rW_pl_y_wh; if (rz_pl_0 >= objGeo.m_ft_fu && rz_pl_0 <= objGeo.m_fh - objGeo.m_ft_fb) { rW_pl_y_wh = sqr(rz_pl_0 - objGeo.m_ft_fu) * objGeo.m_ft_w / 2.0f + sqr(objGeo.m_fh - rz_pl_0 - objGeo.m_ft_fb) * objGeo.m_ft_w / 2.0f; m_fM_pl_y = objGeo.m_fb_fu * objGeo.m_ft_fu * (rz_pl_0 - objGeo.m_ft_fu / 2.0f) * objMat.m_ff_y_fu + rW_pl_y_wh * objMat.m_ff_y_w + objGeo.m_fb_fb * objGeo.m_ft_fb * (objGeo.m_fh - rz_pl_0 - objGeo.m_ft_fb / 2.0f) * objMat.m_ff_y_fb; } else if (rz_pl_0 < objGeo.m_ft_fu) { rz_pl_0 = 0.5f * (objGeo.m_fb_fb * objGeo.m_ft_fb * objMat.m_ff_y_fb + objGeo.m_fb_fu * objGeo.m_ft_fu * objMat.m_ff_y_fu + objGeo.m_fh_w * objGeo.m_ft_w * objMat.m_ff_y_w) / (objGeo.m_fb_fu * objMat.m_ff_y_fu); rW_pl_y_wh = objGeo.m_fh_w * objGeo.m_ft_w * (objGeo.m_fh_w / 2.0f + objGeo.m_ft_fu - rz_pl_0); m_fM_pl_y = objGeo.m_fb_fu * (sqr(rz_pl_0) / 2.0f + sqr(objGeo.m_ft_fu - rz_pl_0) / 2.0f) * objMat.m_ff_y_fu + rW_pl_y_wh * objMat.m_ff_y_w + objGeo.m_fb_fb * objGeo.m_ft_fb * (objGeo.m_fh - rz_pl_0 - objGeo.m_ft_fb / 2.0f) * objMat.m_ff_y_fb; } else { rz_pl_0 = -0.5f * (objGeo.m_fb_fu * objGeo.m_ft_fu * objMat.m_ff_y_fu + objGeo.m_fh_w * objGeo.m_ft_w * objMat.m_ff_y_w - objGeo.m_fb_fb * objMat.m_ff_y_fb * objGeo.m_ft_fu - objGeo.m_fb_fb * objMat.m_ff_y_fb * objGeo.m_fh_w - objGeo.m_fh * objGeo.m_fb_fb * objMat.m_ff_y_fb) / (objGeo.m_fb_fb * objMat.m_ff_y_fb); rW_pl_y_wh = objGeo.m_fh_w * objGeo.m_ft_w * (rz_pl_0 - objGeo.m_ft_fu - objGeo.m_fh_w / 2.0f); m_fM_pl_y = objGeo.m_fb_fu * objGeo.m_ft_fu * (rz_pl_0 - objGeo.m_ft_fu / 2.0f) * objMat.m_ff_y_fu + rW_pl_y_wh * objMat.m_ff_y_w + objGeo.m_fb_fb * objGeo.m_ft_fb * (sqr(objGeo.m_fh - rz_pl_0) / 2.0f + sqr(rz_pl_0 - objGeo.m_fh_w - objGeo.m_ft_fu) / 2.0f) * objMat.m_ff_y_fb; } float rW_pl_y_w = m_fEta * rW_pl_y_wh; // Acc. to 6.2.6(3) d) float rW_pl_z_fo = 2.0f * (objGeo.m_fb_fu / 2.0f * objGeo.m_ft_fu * objGeo.m_fb_fu / 4.0f); float rW_pl_z_fu = 2.0f * (objGeo.m_fb_fb / 2.0f * objGeo.m_ft_fb * objGeo.m_fb_fb / 4.0f); float rW_pl_z_f = rW_pl_z_fo + rW_pl_z_fu; // Acc. to 6.2.6(3) e) m_fM_pl_z = objCrSc.m_fW_pl_z * objMat.m_ff_y_w + rW_pl_z_fo * (objMat.m_ff_y_fu - objMat.m_ff_y_w) + rW_pl_z_fu * (objMat.m_ff_y_fb - objMat.m_ff_y_w); // 6.3.2.3(1) m_fLambda_rel_LT_0 = objNAD.m_fLambda_rel_LT_0_IS; m_fBeta_LT = objNAD.m_fBeta_LT_IS; objGeo.m_fb = Math.Min(objGeo.m_fb_fu, objGeo.m_fb_fb); // Tab. 6.4 resp. 6.5 // Symmetriu musim urcovat skor - uz pri vytvoreni tried Geo a CrSc /* if (Math.Abs(objCrSc.m_fz_S - objGeo.m_fh / 2.0f) > objGeo.m_fh * 1.0e-3f) bDoppeltSymmQuerschnitt = FALSE; */ m_bQuerschn_fuer_InterVerf_2_moeglich = true; } }
void GetCrSc4_ID(CCrSc objCrSc, C_GEO___I objGeo, C_IFO objIFO, C_STR___I objStr, C___I objC__I, C_MAT___I objMat, C_ADD___I objAdd) { if (objC__I.m_iClass_f == 4) { // EN 1993-1-5, Table 4.2 GetEff_OUT(objStr.m_fSigma_fulA, objStr.m_fSigma_fulB, objGeo.m_fc_f, objGeo.m_ft_f, objMat.m_fEps_f, fSigma_1_ful, fSigma_2_ful, fPsi_ful, fk_Sigma_ful, fLambda_rel_p_ful, fRho_ful, fb_eff_ful, fb_red_ful, fb_em_ful, objMat.BStainlessS); // EN 1993-1-5, Table 4.2 GetEff_OUT(objStr.m_fSigma_furA, objStr.m_fSigma_furB, objGeo.m_fc_f, objGeo.m_ft_f, objMat.m_fEps_f, fSigma_1_fur, fSigma_2_fur, fPsi_fur, fk_Sigma_fur, fLambda_rel_p_fur, fRho_fur, fb_eff_fur, fb_red_fur, fb_em_fur, objMat.BStainlessS); // EN 1993-1-5, Table 4.2 GetEff_OUT(objStr.m_fSigma_fblA, objStr.m_fSigma_fblB, objGeo.m_fc_f, objGeo.m_ft_f, objMat.m_fEps_f, fSigma_1_fbl, fSigma_2_fbl, fPsi_fbl, fk_Sigma_fbl, fLambda_rel_p_fbl, fRho_fbl, fb_eff_fbl, fb_red_fbl, fb_em_bl, objMat.BStainlessS); // EN 1993-1-5, Table 4.2 GetEff_OUT(objStr.m_fSigma_fbrA, objStr.m_fSigma_fbrB, objGeo.m_fc_f, objGeo.m_ft_f, objMat.m_fEps_f, fSigma_1_fbr, fSigma_2_fbr, fPsi_fbr, fk_Sigma_fbr, fLambda_rel_p_fbr, fRho_fbr, fb_eff_fbr, fb_red_fbr, fb_em_br, objMat.BStainlessS); fA_eff_f = objCrSc.m_fA - (fb_red_ful + fb_red_fur + fb_red_fbl + fb_red_fbr) * objGeo.m_ft_f; fz_eff_c_f = (objCrSc.m_fA * objGeo.m_fh / 2.0f - fb_red_ful * objGeo.m_ft_f * objGeo.m_ft_f / 2.0f - fb_red_fur * objGeo.m_ft_f * objGeo.m_ft_f / 2.0f - fb_red_fbl * objGeo.m_ft_f * (objGeo.m_fh - objGeo.m_ft_f / 2.0f) - fb_red_fbr * objGeo.m_ft_f * (objGeo.m_fh - objGeo.m_ft_f / 2.0f) ) / fA_eff_f; fy_eff_c_f = (objCrSc.m_fA * objGeo.m_fb / 2.0f - fb_red_ful * objGeo.m_ft_f * fb_em_ful - fb_red_fur * objGeo.m_ft_f * (objGeo.m_fb - fb_em_fur) - fb_red_fbl * objGeo.m_ft_f * fb_em_bl - fb_red_fbr * objGeo.m_ft_f * (objGeo.m_fb - fb_em_br) ) / fA_eff_f; fI_eff_y_f = objCrSc.m_fI_y + objCrSc.m_fA * sqr(fz_eff_c_f - objGeo.m_fh / 2.0f) - fb_red_ful * (float)Math.Pow(objGeo.m_ft_f, 3) / 12.0f - fb_red_ful * objGeo.m_ft_f * sqr(fz_eff_c_f - objGeo.m_ft_f / 2.0f) - fb_red_fur * (float)Math.Pow(objGeo.m_ft_f, 3) / 12.0f - fb_red_fur * objGeo.m_ft_f * sqr(fz_eff_c_f - objGeo.m_ft_f / 2.0f) - fb_red_fbl * (float)Math.Pow(objGeo.m_ft_f, 3) / 12.0f - fb_red_fbl * objGeo.m_ft_f * sqr(objGeo.m_fh - fz_eff_c_f - objGeo.m_ft_f / 2.0f) - fb_red_fbr * (float)Math.Pow(objGeo.m_ft_f, 3) / 12.0f - fb_red_fbr * objGeo.m_ft_f * sqr(objGeo.m_fh - fz_eff_c_f - objGeo.m_ft_f / 2.0f); fI_eff_z_f = objCrSc.m_fI_z + objCrSc.m_fA * sqr(fy_eff_c_f - objGeo.m_fb / 2.0f) - (float)Math.Pow(fb_red_ful, 3) * objGeo.m_ft_f / 12.0f - fb_red_ful * objGeo.m_ft_f * sqr(fy_eff_c_f - fb_em_ful) - (float)Math.Pow(fb_red_fur, 3) * objGeo.m_ft_f / 12.0f - fb_red_fur * objGeo.m_ft_f * sqr(objGeo.m_fb - fy_eff_c_f - fb_em_fur) - (float)Math.Pow(fb_red_fbl, 3) * objGeo.m_ft_f / 12.0f - fb_red_fbl * objGeo.m_ft_f * sqr(fy_eff_c_f - fb_em_bl) - (float)Math.Pow(fb_red_fbr, 3) * objGeo.m_ft_f / 12.0f - fb_red_fbr * objGeo.m_ft_f * sqr(objGeo.m_fb - fy_eff_c_f - fb_em_br); } else { fb_red_ful = 0.0f; fb_red_fur = 0.0f; fb_red_fbl = 0.0f; fb_red_fbr = 0.0f; fb_em_ful = 0.0f; fb_em_fur = 0.0f; fb_em_bl = 0.0f; fb_em_br = 0.0f; fA_eff_f = objCrSc.m_fA; fz_eff_c_f = objGeo.m_fh / 2.0f; fy_eff_c_f = objGeo.m_fb / 2.0f; fI_eff_y_f = objCrSc.m_fI_y; fI_eff_z_f = objCrSc.m_fI_z; } if (objC__I.m_iClass_w == 4) { float rSigma_N = objIFO.FN_Ed / fA_eff_f; float fSigma_My_wu = objIFO.FM_y_Ed / fI_eff_y_f * (fz_eff_c_f - objGeo.m_ft_f - objGeo.m_fr); float fSigma_My_wb = objIFO.FM_y_Ed / fI_eff_y_f * (objGeo.m_fh - fz_eff_c_f - objGeo.m_ft_f - objGeo.m_fr); float rSigma_Mz = objIFO.FM_z_Ed / fI_eff_z_f * (fy_eff_c_f - objGeo.m_fb / 2.0f); objStr.m_fSigma_wA = rSigma_N - fSigma_My_wu + rSigma_Mz; objStr.m_fSigma_wB = rSigma_N + fSigma_My_wb + rSigma_Mz; // EN 1993-1-5, Table 4.1 GetEff_INT(objStr.m_fSigma_wA, objStr.m_fSigma_wB, objGeo.m_fc_w, objGeo.m_ft_w, objMat.m_fEps_w, fSigma_1_w, fSigma_2_w, fPsi_w, fk_Sigma_w, fLambda_rel_p_w, fRho_w, fb_eff_w, fb_e1_w, fb_e2_w, fb_red_w, fb_em_w, objMat.BStainlessS); m_fA_eff = fA_eff_f - fb_red_w * objGeo.m_ft_w; fz_eff_c = (objCrSc.m_fA * objGeo.m_fh / 2.0f - fb_red_ful * objGeo.m_ft_f * objGeo.m_ft_f / 2.0f - fb_red_fur * objGeo.m_ft_f * objGeo.m_ft_f / 2.0f - fb_red_fbl * objGeo.m_ft_f * (objGeo.m_fh - objGeo.m_ft_f / 2.0f) - fb_red_fbr * objGeo.m_ft_f * (objGeo.m_fh - objGeo.m_ft_f / 2.0f) - fb_red_w * objGeo.m_ft_w * (fb_em_w + objGeo.m_fr + objGeo.m_ft_f) ) / m_fA_eff; fy_eff_c = (objCrSc.m_fA * objGeo.m_fb / 2.0f - fb_red_ful * objGeo.m_ft_f * fb_em_ful - fb_red_fur * objGeo.m_ft_f * (objGeo.m_fb - fb_em_fur) - fb_red_fbl * objGeo.m_ft_f * fb_em_bl - fb_red_fbr * objGeo.m_ft_f * (objGeo.m_fb - fb_em_br) - fb_red_w * objGeo.m_ft_w * objGeo.m_fb / 2.0f ) / m_fA_eff; m_fI_eff_y = objCrSc.m_fI_y + objCrSc.m_fA * sqr(fz_eff_c - objGeo.m_fh / 2.0f) - fb_red_ful * (float)Math.Pow(objGeo.m_ft_f, 3) / 12.0f - fb_red_ful * objGeo.m_ft_f * sqr(fz_eff_c - objGeo.m_ft_f / 2.0f) - fb_red_fur * (float)Math.Pow(objGeo.m_ft_f, 3) / 12.0f - fb_red_fur * objGeo.m_ft_f * sqr(fz_eff_c - objGeo.m_ft_f / 2.0f) - fb_red_fbl * (float)Math.Pow(objGeo.m_ft_f, 3) / 12.0f - fb_red_fbl * objGeo.m_ft_f * sqr(objGeo.m_fh - fz_eff_c - objGeo.m_ft_f / 2.0f) - fb_red_fbr * (float)Math.Pow(objGeo.m_ft_f, 3) / 12.0f - fb_red_fbr * objGeo.m_ft_f * sqr(objGeo.m_fh - fz_eff_c - objGeo.m_ft_f / 2.0f) - (float)Math.Pow(fb_red_w, 3) * objGeo.m_ft_w / 12.0f - fb_red_w * objGeo.m_ft_w * sqr(fz_eff_c - objGeo.m_ft_f - fb_em_w - objGeo.m_fr); m_fI_eff_z = objCrSc.m_fI_z + objCrSc.m_fA * sqr(fy_eff_c - objGeo.m_fb / 2.0f) - (float)Math.Pow(fb_red_ful, 3) * objGeo.m_ft_f / 12.0f - fb_red_ful * objGeo.m_ft_f * sqr(fy_eff_c - fb_em_ful) - (float)Math.Pow(fb_red_fur, 3) * objGeo.m_ft_f / 12.0f - fb_red_fur * objGeo.m_ft_f * sqr(objGeo.m_fb - fy_eff_c - fb_em_fur) - (float)Math.Pow(fb_red_fbl, 3) * objGeo.m_ft_f / 12.0f - fb_red_fbl * objGeo.m_ft_f * sqr(fy_eff_c - fb_em_bl) - (float)Math.Pow(fb_red_fbr, 3) * objGeo.m_ft_f / 12.0f - fb_red_fbr * objGeo.m_ft_f * sqr(objGeo.m_fb - fy_eff_c - fb_em_br) - (float)Math.Pow(objGeo.m_ft_w, 3) * fb_red_w / 12.0f - objGeo.m_ft_w * fb_red_w * sqr(fy_eff_c - objGeo.m_fb / 2.0f); } else { fb_red_w = 0.0f; m_fA_eff = fA_eff_f; fz_eff_c = fz_eff_c_f; fy_eff_c = fy_eff_c_f; m_fI_eff_y = fI_eff_y_f; m_fI_eff_z = fI_eff_z_f; } float fA_f_eff = objAdd.m_fA_f - (fb_red_ful + fb_red_fur + fb_red_fbl + fb_red_fbr) * objGeo.m_ft_f; float fA_w_eff = objAdd.m_fA_w - fb_red_w * objGeo.m_ft_w; m_fN_pl_eff = fA_f_eff * objMat.m_ff_y_f + fA_w_eff * objMat.m_ff_y_w; m_fe_Ny = fz_eff_c - objGeo.m_fh / 2.0f; m_fe_Nz = fy_eff_c - objGeo.m_fb / 2.0f; m_fW_eff_y_min = m_fI_eff_y / Math.Max(fz_eff_c, objGeo.m_fh - fz_eff_c); m_fW_eff_z_min = m_fI_eff_z / Math.Max(fy_eff_c - Math.Min(fb_red_ful, fb_red_fbl), objGeo.m_fb - fy_eff_c - Math.Min(fb_red_fur, fb_red_fbr)); }
/* // Flanges float fSigma_1_ful, fSigma_2_ful, fPsi_ful, fk_Sigma_ful, fLambda_rel_p_ful, fRho_ful, fb_eff_ful, fb_red_ful, fb_em_ful, fSigma_1_fur, fSigma_2_fur, fPsi_fur, fk_Sigma_fur, fLambda_rel_p_fur, fRho_fur, fb_eff_fur, fb_red_fur, fb_em_fur, fSigma_1_fbl, fSigma_2_fbl, fPsi_fbl, fk_Sigma_fbl, fLambda_rel_p_fbl, fRho_fbl, fb_eff_fbl, fb_red_fbl, fb_em_bl, fSigma_1_fbr, fSigma_2_fbr, fPsi_fbr, fk_Sigma_fbr, fLambda_rel_p_fbr, fRho_fbr, fb_eff_fbr, fb_red_fbr, fb_em_br; // Web float fSigma_1_w, fSigma_2_w, fPsi_w, fk_Sigma_w, fLambda_rel_p_w, fRho_w, fb_eff_w, fb_e1_w, fb_e2_w, fb_red_w, fb_em_w; float fA_eff_f, fz_eff_c_f, fy_eff_c_f, fI_eff_y_f, fI_eff_z_f; // Web float fz_eff_c, fy_eff_c; */ void GetCrSc4_IM(CCrSc objCrSc, C_GEO___I objGeo, C_IFO objIFO, C_STR___I objStr, C___I objC__I, C_MAT___I objMat, C_ADD___I objAdd) { if (objC__I.m_iClass_fu == 4 || objC__I.m_iClass_fb == 4) { // EN 1993-1-5, Table 4.2 GetEff_OUT(objStr.m_fSigma_fulA, objStr.m_fSigma_fulB, objGeo.m_fc_fu, objGeo.m_ft_fu, objMat.m_fEps_fu, fSigma_1_ful, fSigma_2_ful, fPsi_ful, fk_Sigma_ful, fLambda_rel_p_ful, fRho_ful, fb_eff_ful, fb_red_ful, fb_em_ful, objMat.BStainlessS); // EN 1993-1-5, Tabl e 4.2 GetEff_OUT(objStr.m_fSigma_furA, objStr.m_fSigma_furB, objGeo.m_fc_fu, objGeo.m_ft_fu, objMat.m_fEps_fu, fSigma_1_fur, fSigma_2_fur, fPsi_fur, fk_Sigma_fur, fLambda_rel_p_fur, fRho_fur, fb_eff_fur, fb_red_fur, fb_em_fur, objMat.BStainlessS); // EN 1993-1-5, Table 4.2 GetEff_OUT(objStr.m_fSigma_fblA, objStr.m_fSigma_fblB, objGeo.m_fc_fb, objGeo.m_ft_fb, objMat.m_fEps_fb, fSigma_1_fbl, fSigma_2_fbl, fPsi_fbl, fk_Sigma_fbl, fLambda_rel_p_fbl, fRho_fbl, fb_eff_fbl, fb_red_fbl, fb_em_bl, objMat.BStainlessS); // EN 1993-1-5, Table 4.2 GetEff_OUT(objStr.m_fSigma_fbrA, objStr.m_fSigma_fbrB, objGeo.m_fc_fb, objGeo.m_ft_fb, objMat.m_fEps_fb, fSigma_1_fbr, fSigma_2_fbr, fPsi_fbr, fk_Sigma_fbr, fLambda_rel_p_fbr, fRho_fbr, fb_eff_fbr, fb_red_fbr, fb_em_br, objMat.BStainlessS); fA_eff_f = objCrSc.m_fA - (fb_red_ful + fb_red_fur) * objGeo.m_ft_fu - (fb_red_fbl + fb_red_fbr) * objGeo.m_ft_fb; fz_eff_c_f = (objCrSc.m_fA * objCrSc.m_fz_S - fb_red_ful * objGeo.m_ft_fu * objGeo.m_ft_fu / 2.0f - fb_red_fur * objGeo.m_ft_fu * objGeo.m_ft_fu / 2.0f - fb_red_fbl * objGeo.m_ft_fb * (objGeo.m_fh - objGeo.m_ft_fb / 2.0f) - fb_red_fbr * objGeo.m_ft_fb * (objGeo.m_fh - objGeo.m_ft_fb / 2.0f) ) / fA_eff_f; float rb_d = (objGeo.m_fb_fu - objGeo.m_fb_fb) / 2.0f; fy_eff_c_f = (objCrSc.m_fA * objGeo.m_fb_fu / 2.0f - fb_red_ful * objGeo.m_ft_fu * fb_em_ful - fb_red_fur * objGeo.m_ft_fu * (objGeo.m_fb_fu - fb_em_fur) - fb_red_fbl * objGeo.m_ft_fb * (rb_d + fb_em_bl) - fb_red_fbr * objGeo.m_ft_fb * (objGeo.m_fb_fu - rb_d - fb_em_br) ) / fA_eff_f; fI_eff_y_f = objCrSc.m_fI_y + objCrSc.m_fA * sqr(fz_eff_c_f - objCrSc.m_fz_S) - fb_red_ful * (float)Math.Pow(objGeo.m_ft_fu, 3) / 12.0f - fb_red_ful * objGeo.m_ft_fu * sqr(fz_eff_c_f - objGeo.m_ft_fu / 2.0f) - fb_red_fur * (float)Math.Pow(objGeo.m_ft_fu, 3) / 12.0f - fb_red_fur * objGeo.m_ft_fu * sqr(fz_eff_c_f - objGeo.m_ft_fu / 2.0f) - fb_red_fbl * (float)Math.Pow(objGeo.m_ft_fb, 3) / 12.0f - fb_red_fbl * objGeo.m_ft_fb * sqr(objGeo.m_fh - fz_eff_c_f - objGeo.m_ft_fb / 2.0f) - fb_red_fbr * (float)Math.Pow(objGeo.m_ft_fb, 3) / 12.0f - fb_red_fbr * objGeo.m_ft_fb * sqr(objGeo.m_fh - fz_eff_c_f - objGeo.m_ft_fb / 2.0f); fI_eff_z_f = objCrSc.m_fI_z + objCrSc.m_fA * sqr(fy_eff_c_f - objGeo.m_fb_fu / 2.0f) - (float)Math.Pow(fb_red_ful, 3) * objGeo.m_ft_fu / 12.0f - fb_red_ful * objGeo.m_ft_fu * sqr(fy_eff_c_f - fb_em_ful) - (float)Math.Pow(fb_red_fur, 3) * objGeo.m_ft_fu / 12.0f - fb_red_fur * objGeo.m_ft_fu * sqr(objGeo.m_fb_fu - fy_eff_c_f - fb_em_fur) - (float)Math.Pow(fb_red_fbl, 3) * objGeo.m_ft_fb / 12.0f - fb_red_fbl * objGeo.m_ft_fb * sqr(fy_eff_c_f - rb_d - fb_em_bl) - (float)Math.Pow(fb_red_fbr, 3) * objGeo.m_ft_fb / 12.0f - fb_red_fbr * objGeo.m_ft_fb * sqr(objGeo.m_fb_fb + rb_d - fy_eff_c_f - fb_em_br); } else { fb_red_ful = 0.0f; fb_red_fur = 0.0f; fb_red_fbl = 0.0f; fb_red_fbr = 0.0f; fb_em_ful = 0.0f; fb_em_fur = 0.0f; fb_em_bl = 0.0f; fb_em_br = 0.0f; fA_eff_f = objCrSc.m_fA; fz_eff_c_f = objCrSc.m_fz_S; fy_eff_c_f = objGeo.m_fb_fu / 2.0f; fI_eff_y_f = objCrSc.m_fI_y; fI_eff_z_f = objCrSc.m_fI_z; } if (objC__I.m_iClass_w == 4) { float rSigma_N = objIFO.FN_Ed / fA_eff_f; float fSigma_My_wu = objIFO.FM_y_Ed / fI_eff_y_f * (fz_eff_c_f - objGeo.m_ft_fu - objGeo.m_fr_su); float fSigma_My_wb = objIFO.FM_y_Ed / fI_eff_y_f * (objGeo.m_fh - fz_eff_c_f - objGeo.m_ft_fb - objGeo.m_fr_sb); float rSigma_Mz = objIFO.FM_z_Ed / fI_eff_z_f * (fy_eff_c_f - objGeo.m_fb_fu / 2.0f); objStr.m_fSigma_wA = rSigma_N - fSigma_My_wu + rSigma_Mz; objStr.m_fSigma_wB = rSigma_N + fSigma_My_wb + rSigma_Mz; // EN 1993-1-5, Table 4.1 GetEff_INT(objStr.m_fSigma_wA, objStr.m_fSigma_wB, objGeo.m_fc_w, objGeo.m_ft_w, objMat.m_fEps_w, fSigma_1_w, fSigma_2_w, fPsi_w, fk_Sigma_w, fLambda_rel_p_w, fRho_w, fb_eff_w, fb_e1_w, fb_e2_w, fb_red_w, fb_em_w, objMat.BStainlessS); m_fA_eff = fA_eff_f - fb_red_w * objGeo.m_ft_w; fz_eff_c = (objCrSc.m_fA * objCrSc.m_fz_S - fb_red_ful * objGeo.m_ft_fu * objGeo.m_ft_fu / 2.0f - fb_red_fur * objGeo.m_ft_fu * objGeo.m_ft_fu / 2.0f - fb_red_fbl * objGeo.m_ft_fb * (objGeo.m_fh - objGeo.m_ft_fb / 2.0f) - fb_red_fbr * objGeo.m_ft_fb * (objGeo.m_fh - objGeo.m_ft_fb / 2.0f) - fb_red_w * objGeo.m_ft_w * (fb_em_w + objGeo.m_fr_su + objGeo.m_ft_fu) ) / m_fA_eff; float rb_d = (objGeo.m_fb_fu - objGeo.m_fb_fb) / 2.0f; fy_eff_c = (objCrSc.m_fA * objGeo.m_fb_fu / 2.0f - fb_red_ful * objGeo.m_ft_fu * fb_em_ful - fb_red_fur * objGeo.m_ft_fu * (objGeo.m_fb_fu - fb_em_fur) - fb_red_fbl * objGeo.m_ft_fb * (rb_d + fb_em_bl) - fb_red_fbr * objGeo.m_ft_fb * (objGeo.m_fb_fu - rb_d - fb_em_br) - fb_red_w * objGeo.m_ft_w * objGeo.m_fb_fu / 2.0f ) / m_fA_eff; // Trägheitsmomente des wirksamen relschnitts m_fI_eff_y = objCrSc.m_fI_y + objCrSc.m_fA * sqr(fz_eff_c - objCrSc.m_fz_S) - fb_red_ful * (float)Math.Pow(objGeo.m_ft_fu, 3) / 12.0f - fb_red_ful * objGeo.m_ft_fu * sqr(fz_eff_c - objGeo.m_ft_fu / 2.0f) - fb_red_fur * (float)Math.Pow(objGeo.m_ft_fu, 3) / 12.0f - fb_red_fur * objGeo.m_ft_fu * sqr(fz_eff_c - objGeo.m_ft_fu / 2.0f) - fb_red_fbl * (float)Math.Pow(objGeo.m_ft_fb, 3) / 12.0f - fb_red_fbl * objGeo.m_ft_fb * sqr(objGeo.m_fh - fz_eff_c - objGeo.m_ft_fb / 2.0f) - fb_red_fbr * (float)Math.Pow(objGeo.m_ft_fb, 3) / 12.0f - fb_red_fbr * objGeo.m_ft_fb * sqr(objGeo.m_fh - fz_eff_c - objGeo.m_ft_fb / 2.0f) - (float)Math.Pow(fb_red_w, 3) * objGeo.m_ft_w / 12.0f - fb_red_w * objGeo.m_ft_w * sqr(fz_eff_c - objGeo.m_ft_fu - fb_em_w - objGeo.m_fr_su); m_fI_eff_z = objCrSc.m_fI_z + objCrSc.m_fA * sqr(fy_eff_c - objGeo.m_fb_fu / 2.0f) - (float)Math.Pow(fb_red_ful, 3) * objGeo.m_ft_fu / 12.0f - fb_red_ful * objGeo.m_ft_fu * sqr(fy_eff_c - fb_em_ful) - (float)Math.Pow(fb_red_fur, 3) * objGeo.m_ft_fu / 12.0f - fb_red_fur * objGeo.m_ft_fu * sqr(objGeo.m_fb_fu - fy_eff_c - fb_em_fur) - (float)Math.Pow(fb_red_fbl, 3) * objGeo.m_ft_fb / 12.0f - fb_red_fbl * objGeo.m_ft_fb * sqr(fy_eff_c_f - rb_d - fb_em_bl) - (float)Math.Pow(fb_red_fbr, 3) * objGeo.m_ft_fb / 12.0f - fb_red_fbr * objGeo.m_ft_fb * sqr(objGeo.m_fb_fb + rb_d - fy_eff_c_f - fb_em_br) - (float)Math.Pow(objGeo.m_ft_w, 3) * fb_red_w / 12.0f - objGeo.m_ft_w * fb_red_w * sqr(fy_eff_c - objGeo.m_fb_fu / 2.0f); } else { fb_red_w = 0.0f; m_fA_eff = fA_eff_f; fz_eff_c = fz_eff_c_f; fy_eff_c = fy_eff_c_f; m_fI_eff_y = fI_eff_y_f; m_fI_eff_z = fI_eff_z_f; } float fA_fu_eff = objAdd.m_fA_fu - (fb_red_ful + fb_red_fur) * objGeo.m_ft_fu; float fA_fb_eff = objAdd.m_fA_fb - (fb_red_fbl + fb_red_fbr) * objGeo.m_ft_fb; float fA_w_eff = objAdd.m_fA_w - fb_red_w * objGeo.m_ft_w; m_fN_pl_eff = fA_fu_eff * objMat.m_ff_y_fu + fA_fb_eff * objMat.m_ff_y_fb + fA_w_eff * objMat.m_ff_y_w; m_fe_Ny = fz_eff_c - objCrSc.m_fz_S; m_fe_Nz = fy_eff_c - objGeo.m_fb_fu / 2.0f; float fW_eff_y_fu = m_fI_eff_y / fz_eff_c; float fW_eff_y_fb = m_fI_eff_y / (objGeo.m_fh - fz_eff_c); m_fW_eff_y_min = Math.Min(fW_eff_y_fu, fW_eff_y_fb); float fW_eff_z_fu = m_fI_eff_z / Math.Max(fy_eff_c - fb_red_ful, objGeo.m_fb_fu - fy_eff_c - fb_red_fur); float fW_eff_z_fb = m_fI_eff_z / Math.Max(fy_eff_c + ((objGeo.m_fb_fb - objGeo.m_fb_fu) / 2.0f) - fb_red_fbl, objGeo.m_fb_fu + (objGeo.m_fb_fb - objGeo.m_fb_fu) / 2.0f - fy_eff_c - fb_red_fbr); m_fW_eff_z_min = Math.Min(fW_eff_z_fu, fW_eff_z_fb); }