//---------------------------------------------------------------------------

#pragma hdrstop

#include "Perfor_beam.h"
#include "ListConst.h"
#include "message.h"
#include "ProcExt.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//Компоновка перфорированной балки
int Perfor_beam(PARAM_CHOSEN_SECT *Param_chosen_sect, double Mmax, double Qmax, double Length, SECT_DVUTAVR *sect) {
  double L0[6] = { 6000, 9000, 12000, 15000, 18000, 21000 };
  double tw0[7] = { 5, 8, 10, 12, 14, 16, 16 };
  double gamma_c = Param_chosen_sect->gamma_c;

  double t_max = MAX(sect->h1, sect->h2);
  double t_max = MIN(10,0, t_max);
  //  Получить таблицу свойств стали по марке стали
  rc = Get_Mater_param(MaterProp[Material_Number].title, &mater_param);
  if (rc>0) return rc;
  // Проверить границы толщин и получить диапазон толщин
  rc = Get_thick_range(MaterProp[Material_Number].title, t_max, thick_range);
  if (rc==1 || rc==2) {  // толщины не попадают в диапазон толщин
	return 100;
  }
  double Ry = Steel_param_Ry(MaterProp[Material_Number].title, t_max, &rc, true);
  double Ryw = Ry;
  double Rsw = Rs = 0.58*Ryw;               // Предел сдвига

  // Расчетные усилия с учетом собственного веса балки
  double Mp = 1.02*Mmax;
  double Qp = 1.02*Qmax;
  // Требуемый момент сопротивления
  double Wxmp = Mp/(Ry*gamma_c);
  // Оптимальная высота сквозного двутавра
  double tw;
  for ((i = 0); i < 6; i++) {
	  if (Length <L0[i]) {
		 break;
	  }
  }
  tw = tw0[i];
  double hopt = 1.4*sqrt(Wxmp/tw);
  // Минимальная высота из требований по предельной деформативности
  E_ = 206000;
  hmin = 5*Ry*Length*del_lim/(24*0.95*E_*knorm);
}
