public static double BRBNcre_sym( [ExcelArgument(Name = "Kg", Description = "Gusset rotational stiffness")] double Kg, [ExcelArgument(Name = "Kr", Description = "Restrainer end rotational stiffness")] double Kr, [ExcelArgument(Name = "ξL0", Description = "Connection buckling length")] double ξL0, [ExcelArgument(Name = "γEIr", Description = "Connection flexural stiffness")] double γEIr, [ExcelArgument(Name = "L0", Description = "Full brace buckling length")] double L0, [ExcelArgument(Name = "EIr", Description = "Restrainer flexural stiffness")] double EIr, [ExcelArgument(Name = "Tolerance", Description = "Load increment [default = 1·force unit]")] object _tol) { // increments are based on N/Ncr0 double tol = Check <double>(_tol, 1); double Ncr0 = BRBNcr0(ξL0, γEIr); double ke = ElasticBuckling.ke_crit(N => ElasticBuckling.det_sym(N, BRBnorm_K(Kg, ξL0, γEIr), BRBnorm_K(Kr, ξL0, γEIr), ξL0 / L0, γEIr / EIr), 1, tol / Ncr0, 1.0); if (double.IsInfinity(ke)) { return(0); } else { return(Ncr0 / Pow(ke, 2)); } }
public static double BRBke_sym( [ExcelArgument(Name = "κg", Description = "Normalized gusset rotational stiffness (Kg·ξL0/γEIr)")] double κg, [ExcelArgument(Name = "κr", Description = "Normalized restrainer end rotational stiffness (Kr·ξL0/γEIr)")] double κr, [ExcelArgument(Name = "ξ", Description = "Ratio of connection to full buckling length (ξL0/L0)")] double ξ, [ExcelArgument(Name = "γ", Description = "Ratio of connection to restrainer flexural stiffness (γEIr/EIr)")] double γ, [ExcelArgument(Name = "Tolerance", Description = "Load increment = tol·Ncr0 [default = 0.0001]")] object _tol, [ExcelArgument(Name = "Mode", Description = "Mode number [default = 1]")] object _mode, [ExcelArgument(Name = "Maximum", Description = "Maximum [default = 2.0]")] object _max) { // increments are based on N/Ncr0 double tol = Check <double>(_tol, 0.0001); double mode = Check <double>(_mode, 1); double max = Check <double>(_max, 2); return(ElasticBuckling.ke_crit(N => ElasticBuckling.det_sym(N, κg, κr, ξ, γ), mode, tol, max)); }