// Проверки изгибаемого элемента
int TCheckExecute::CheckBending(DATA_CHECK_U *data_check, int *n_krit, double *krit, int *nnel_krit) {
	  FI_Y_PARAM Fi_y_param;
	  FI_E_PARAM Fi_e_param;
	  double sigma_loc;
	  double lef;
	  double alfa_w, lambda_ux, lambda_uy, Qfic;
	  double excentr, m_exc;
	  double Wc, Wt; // момент сопротивления, соответствующий более сжатому и растянутому поясу
	  double sig_1, sig_2;
	  double sig_1w, sig_2w;
	  double lambda_uw;
	  double tau_m, hd, Ad, delta_fi, Ar, lambda_uw20;
	  bool flag_check[30];
	  bool flag_const;
	  int inc;   // приращение критериев для переменной высоты стенки
	  double krit_1, krit_2;
	  double alfa_x, alfa_y, alfa_y0, k_, k_x, fi_m;
	  double fi_f1, fi_f2;
	  double M_c;
	  double lambda_cent; // гибкость при центральном сжатии
	  int  index_105 = 0;  // 1 - применяется формула 105 - с учетом пластики; 0 - пластика не допускается - ф.106
	  int  index_105g;     // первичная оценка применимости формулы 105: 1 - формула 105 может быть применена при выполнении других условий; 0 - пластика не допускается - ф.106
	  double length, lambda, i_f;
	  double Wx_min, beta, cx_, cy_, n_, Wy_min, Af_y, Iyy, Sy, t_y; // параметры сечения, воспринимающего M_y и Q_y
	  double lambda_b, lambda_ub;
	  int k, j_, m, n_RSU, list_RSU[10];
	  double x_;
	  int i_current, n_elem; // текущий номер элемента
	  int n_elem_rep; // текущий номер элемента, который помещается в массив критерия nnel_krit
	  int i;
	  char stroka[120];
	  double NatMmax;
	  CHECK_ELEM_PARAM_U *Cp;
	  bool flag_message_1 = false;
	  SECT_DVUTAVR Sect_Elem_Copy;

	  int ngroup, Nelem; // число элементов группы
	  GEOM_PARAM_SECT param_sect;
	  GEOM_PARAM_SECT param_netto;
	  STEEL_PARAM steel_param;
	  double i_zz, i_yy;
	  double lambdaX[100], lambdaY[100];   // гибкости в плоскостях XZ и YZ
   double lambda_x[100], lambda_y[100]; // условные гибкости
   double lambda_w; // условная гибкость стенки
   double lambda_f; // условная гибкость поясов
   double h_, t_, hef;
   double bef_1, bef_2, tef_1, tef_2;
   double fi_x[100], fi_y[100];
   double fi_e[100], fi_ey[100], fi_exy[100];
   double lambda_f1, lambda_f2;
   double N_, Q_, Q_y, M_, M_y;
   int type_sect;
   double Ryw, Rsw, Ru, Ryn;
   double Ry, Ey;
   double Ryw_plate, Rsw_plate, Ru_plate, Ryn_plate;
   double Ry_plate;

   //  Длины элементов конструкций
   double step_len[5] = {1000, 3000, 6000, 12000, 100000};
   double dev_len[5]  = {120, 150, 200,  250,   300};

   int rc;
   MATER_PARAM mater_param;
   double gamma_m;
   double sigma_comm[6]; // напряжение в угловых точках 0, 1 - верхний пояс, 1, 2 - нижний пояс
   double Forces[8];
   double Aw, Af;
   // Условные гибкости поясов в плоскости поясов
   double lambda_f1Y, lambda_f2Y;

   // Гибкости поясов в плоскости поясов
   double Lambda_f1Y, Lambda_f2Y;
   double krit_bend_max = 0;
   int RSU_bend_max;
   double len, q_bal_norm, q_bal_ras;
   double f_lim, fmax;
   double krit_8_5_8, krit_8_5_18;

   PARAM_PERFOR param_perfor;
   double hw;
   FI_B_PARAM Fi_b_param;
   CHECK_STAB_PARAM Check_stab_param;
   double Aup, Adown;
   double Wx_up, Wx_down;
   double Ry_up, Ry_down;
   double Ry_min, Ry_c;

   //-------------------------------------------------------------------------------------
   // Начало работы
   //-------------------------------------------------------------------------------------

   Cp = &(Check_param);

   // номер группы проверки
   ngroup = NumNameGroup[0];
   Nelem = NelemInGroup[ngroup];
   //-----------------------------------------------------------------
   // Материал профиля
   // Максимальная высота полки двутавра
   double t_max = MAX(Sect_Elem_Group[ngroup].com_sect.dvutavr.h1, Sect_Elem_Group[ngroup].com_sect.dvutavr.h2);
   //  Получить таблицу свойств стали по марке стали профиля и проверить границы толщин
   rc = Get_Mater_param(MaterPropU_prof.title, &mater_param);
   if (rc>0) return rc;
   if (t_max > mater_param.thick_row[mater_param.n_row] || t_max <  mater_param.thick_row[0]) {
	 krit[0] = 100;
	 *n_krit = 1;
	 return 0;
   }
   // Получить диапазон толщин
   double thick_range[2];
   rc = Get_thick_range(MaterPropU_prof.title, t_max, thick_range);
   SelectProfilSectForm->Data_select.t0 = thick_range[0];
   SelectProfilSectForm->Data_select.t1 = thick_range[1];

	// Расчетное сопротивление растяжению, сжатию и изгибу по пределу текучески для поясов
   Ry = Steel_param_Ry(MaterPropU_prof.title, t_max, &rc, true);
	// Расчетное сопротивление растяжению, сжатию и изгибу по пределу текучески
   SelectProfilSectForm->Data_select.Ry = Ry;
   SelectProfilSectForm->Data_select.Run = Steel_param_Run(MaterPropU_prof.title, t_max, &rc, false);

   //---Material_Number = data_check->index_mater_polka;


   Ey = MaterPropU_prof.E;
   //Rs = 0.58*Ry;

   rc = Steel_param(MaterPropU_prof.title, t_max, &(steel_param), false);
   if (rc>0)
	 return rc;
   Ru = steel_param.Ru;

   if (Sect_Elem_Group[ngroup].com_sect.dvutavr.n_group == -1)  // Сварной двутавр
	  Ryw = Steel_param_Ry(MaterPropU_prof.title, Sect_Elem_Group[ngroup].com_sect.dvutavr.b, &rc, true);
   else  // Прокатной (фасонный)
	  Ryw = Ry;

   Rsw = 0.58*Ryw;               // Предел сдвига
	// Нормативное сопротивление стали
   Ryn = steel_param.Ryn;
   //if (steel_param.Ryn > 440)
   //	 Ryn = Ry;
   //else
   //	 Ryn = steel_param.Ru/data_check->koeff_material_nadeghn;
   // Материал пластины
  if (data_check->flag_composed) {      // Составная балка
	t_max = data_check->plate_thick;
   //  Получить таблицу свойств стали по марке стали профиля и проверить границы толщин
	rc = Get_Mater_param(MaterPropU_prof.title, &mater_param);
	if (rc>0) return rc;
	if (t_max > mater_param.thick_row[mater_param.n_row] || t_max <  mater_param.thick_row[0]) {
	   krit[0] = 100;
	   *n_krit = 1;
	   return 0;
	}

	// Расчетное сопротивление растяжению, сжатию и изгибу по пределу текучески для поясов
	Ry_plate = Steel_param_Ry(MaterPropU_plate.title, t_max, &rc, true);
	// Расчетное сопротивление растяжению, сжатию и изгибу по пределу текучески
	rc = Steel_param(MaterPropU_plate.title, t_max, &(steel_param), false);
	if (rc>0)
	  return rc;
	Ru_plate = steel_param.Ru;

	Ryw_plate = Ry_plate;

	Rsw_plate = 0.58*Ryw_plate;               // Предел сдвига
	// Нормативное сопротивление стали
	Ryn_plate = steel_param.Ryn;
  }
  else {
	Ry_plate = Ry;
	// Расчетное сопротивление растяжению, сжатию и изгибу по пределу текучески
	Ru_plate = Ru;

	Ryw_plate = Ry;

	Rsw_plate = Rsw;               // Предел сдвига
	// Нормативное сопротивление стали
	Ryn_plate = Ryn;

  }

   // Условие допустимости пластики, п. 9.1.1
   if (data_check->index_class == 1 || Ryn > 440 || !data_check->flag_razrez || data_check->flag_dynamic_load )
	 index_105g = 0;  // Пластика не допускается
   else
	 index_105g = 1;  // пластика допускается при выполнении других условий

   gamma_m = MaterPropU_prof.gamma_m;           // Коэффициент надежности по материалу

   rc = Steel_param(MaterPropU_prof.title, t_max, &(steel_param), false);
   if (rc>0)
	 return rc;

   // Вычислить геометрические характеристики сечения группы (исходного)
   if (data_check->flag_composed)  // Составное сечение
	 Get_param_sect_composed(Sect_Elem_Group[ngroup].type_sect, &(Sect_Elem_Group[ngroup].com_sect),
							 data_check->plate_width, data_check->plate_thick, &param_sect, data_check->index_composed);
   else
	 Get_param_sect_comm(Sect_Elem_Group[ngroup].type_sect, &(Sect_Elem_Group[ngroup].com_sect), &param_sect);
   // Вычислить геометрические характеристики сечения группы c учетом перфорации
   if (data_check->flag_perfor) {
	 Get_param_sect_perfor(&(Sect_Elem_Group[ngroup].com_sect.dvutavr),&param_sect, data_check->perfor_h, &param_perfor);
   }
   memcpy((char*)&param_netto, (char*)&param_sect, sizeof(GEOM_PARAM_SECT));
   //-----
   i_zz = sqrt(param_sect.Izz/param_sect.Ar);
   i_yy = sqrt(param_sect.Iyy/param_sect.Ar);

   type_sect = Sect_Elem_Group[ngroup].type_sect;
   if (Sect_Elem_Group[ngroup].type_sect==TAVR &&  data_check->flag_composed)   // Составной элемент
	  type_sect = DVUTAVR;

   // Гибкость элемента
   for (i=0; i<NRSU; i++) {
	 n_elem = ListElem_RSU[i];

	 // Проверка задания шага раскреплений
	 if (data_check->step_ext[n_elem] == 0 || data_check->step_int[n_elem]==0) {
	   data_check->step_ext[n_elem] = data_check->step_int[n_elem] = data_check->length_YZ[n_elem];
		   //	 krit[0] = 101;
		   //	*n_krit = 1;
		   //	return 0;
	 }

	 lambdaX[n_elem] = data_check->length_XZ[n_elem]/i_zz;
	 lambdaY[n_elem] = data_check->length_YZ[n_elem]/i_yy;
   // Условная гибкость элемента
	 lambda_x[n_elem] = lambdaX[n_elem]*sqrt(Ry/Ey);     // в плоскости стенки
	 lambda_y[n_elem] = lambdaY[n_elem]*sqrt(Ry/Ey);     // в плоскости поясов
   // Вычисление fi_y - коэффициент устойчивости в плоскости поясов при центальном сжатии
	 fi_y[n_elem] = Round(Fun_fi_713(type_sect, lambda_y[n_elem], 1), 3);
	 fi_y[n_elem] = MAX(0.001, fi_y[n_elem]);

   // Вычисление fi_x коэффициент устойчивости в плоскости стенки при центальном сжатии
	 fi_x[n_elem] = Round(Fun_fi_713(type_sect, lambda_x[n_elem], 0), 3);
	 fi_x[n_elem] = MAX(0.001, fi_x[n_elem]);

   }


   if (type_sect == DVUTAVR) {

	 if (data_check->flag_perfor) {
	   h_ = Sect_Elem_Group[ngroup].com_sect.dvutavr.h +  param_perfor.h1;
	   hw = Sect_Elem_Group[ngroup].com_sect.dvutavr.h -  param_perfor.h1;
	 }
	 else {
	   h_ = Sect_Elem_Group[0].com_sect.dvutavr.h;
	   hw = h_;
	 }
	 if (Sect_Elem_Group[ngroup].type_sect==TAVR)
	   hef = h_ - param_sect.Rad;
	 else
	   hef = h_ - 2*param_sect.Rad;

	 t_ = Sect_Elem_Group[ngroup].com_sect.dvutavr.b;

	 lambda_w = (hef/t_)*sqrt(Ryw/Ey);
	 // Гибкости поясов в плоскости поясов
	 if (data_check->flag_composed) {
	   switch (data_check->index_composed) {
	   case 0:
		 bef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
		 tef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h1;
		 bef_2 = data_check->plate_width;
		 tef_2 = data_check->plate_thick;
		 lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry/Ey);
		 lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry_plate/Ey);
		 Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
		 Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
	 // Условные гибкости поясов в плоскости поясов
		 lambda_f1Y = Lambda_f1Y*sqrt(Ry/Ey);
		 lambda_f2Y = Lambda_f2Y*sqrt(Ry_plate/Ey);
	   break;
	   case 1:
		 bef_2 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
		 tef_2 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h1;
		 bef_1 = data_check->plate_width;
		 tef_1 = data_check->plate_thick;
		 lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry_plate/Ey);
		 lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry/Ey);
		 Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
		 Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
	 // Условные гибкости поясов в плоскости поясов
		 lambda_f1Y = Lambda_f1Y*sqrt(Ry_plate/Ey);
		 lambda_f2Y = Lambda_f2Y*sqrt(Ry/Ey);
	   break;
	   case 2:
		 bef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
		 tef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h1;
		 bef_2 = data_check->plate_width;
		 tef_2 = data_check->plate_thick + Sect_Elem_Group[ngroup].com_sect.dvutavr.h2;
		 lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry/Ey);
		 lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry_plate/Ey);
		 Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
		 Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
	 // Условные гибкости поясов в плоскости поясов
		 lambda_f1Y = Lambda_f1Y*sqrt(Ry/Ey);
		 lambda_f2Y = Lambda_f2Y*sqrt(Ry_plate/Ey);
	   break;
	   }
	 }
	 else {
	   bef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
	   tef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h1;
	   bef_2 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b2;
	   tef_2 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h2;
	 // Условные гибкости свеса поясов
	   lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry/Ey);
	   lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry/Ey);
	   Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
	   Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
	 // Условные гибкости поясов в плоскости поясов
	   lambda_f1Y = Lambda_f1Y*sqrt(Ry/Ey);
	   lambda_f2Y = Lambda_f2Y*sqrt(Ry/Ey);
	 }
	 if (!data_check->flag_composed || (data_check->flag_composed && data_check->index_composed!=2)) {
	   if (bef_1*tef_1 < bef_2*tef_2) {   // меньшая площадь пояса
		 Af = bef_1*tef_1;
		 Cp->tf = tef_1;   // меньшая площадь пояса
	   }
	   else {
		 Af = bef_2*tef_2;
		 Cp->tf = tef_2;   // меньшая площадь пояса
	   }
	   Aup = bef_1*tef_1;
	   Adown = bef_2*tef_2;
	 }
	 else {  // Двутавр с пластиной
	   Af = bef_1*tef_1;
	   Cp->tf = tef_1;
	   Aup = bef_1*tef_1;
	   Adown = Sect_Elem_Group[ngroup].com_sect.dvutavr.b2*Sect_Elem_Group[ngroup].com_sect.dvutavr.h2 +
			   data_check->plate_width*data_check->plate_thick;
	 }
	 Aw = t_*hw;

	 Wy_min = MIN(2*param_netto.Iyy/bef_1, 2*param_netto.Iyy/bef_2);
	 Wx_up = param_netto.Izz/param_netto.Zct;
	 Wx_down = param_netto.Izz/(param_netto.Hsect - param_netto.Zct);
	 if (data_check->flag_composed) {
		switch (data_check->index_composed) {
		case 0:
		case 2:
		  if (Wx_up < Wx_down) {
				Wy_min = Wx_up;
				Ry_min = Ry;
		  }
		  else {
				Wy_min = Wx_down;
				Ry_min = Ry_plate;
		  }
		  Ry_up = Ry;
		  Ry_down = Ry_plate;
		break;
		case 1:
		  if (Wx_up < Wx_down) {
				Wy_min = Wx_up;
				Ry_min = Ry_plate;
		  }
		  else {
				Wy_min = Wx_down;
				Ry_min = Ry;
		  }
		  Ry_down = Ry;
		  Ry_up = Ry_plate;
		break;
		}
	 }
	 else {
		  Wx_min = MIN(Wx_up, Wx_down);
		  Ry_min = Ry;
		  Ry_up = Ry;
		  Ry_down = Ry;
	 }
	 Cp->tw = t_;
	 Cp->Aw = Aw;
	 Cp->Af = Af;
	 Cp->Iy = param_sect.Iyy;
	 Cp->Ix = param_sect.Izz;

   }

	//-------------------------------------------------------------------------------------
	if (data_check->fi_b_type_constr == 0 && (data_check->fi_b_num_constr <0 || data_check->fi_b_num_constr>2)) {
		i = Application->MessageBox(L"Не определены необходимые данные для расчета fi_b", L" ", MB_ICONERROR);
		return 1;
	}

	for (i=0; i<data_check->num_krit; i++)
		flag_check[i] = data_check->Checked[i];

	  // Зануление критериев
	for (i=0; i<data_check->num_krit; i++) {
		krit[i] = -1;
		nnel_krit[i] = -1;
	}
	  // Вычисление sigma_loc, ф.47 СП
	if (data_check->index_local == 0)
		lef = data_check->Local_b_ + 2*(tef_1);
	else
		lef = 3.25*pow(tef_1*tef_1*tef_1*bef_1/(12*t_) + data_check->IRels*1000, 0.33333);
	if (lef>0) {
		sigma_loc = data_check->Local_F_*1000/(lef*t_);
	}
	else
	  sigma_loc = 0;
	  // коэффициент потери устойчивости при центральном сжатии для поясов

	  //InfMessage("lambda_w = "+FloatToStr(Round(lambda_w, 3)));
	  //-------------------------------------------------------------
	  //-------------------------

	  double Mmax = 0;
	  double Qmax = 0;
	  double Nmin = 0;
	  double alfa_yf1_max = 0;
	  double alfa_yf2_max = 0;
	  Cp->sigma_max = 0;
	  Cp->tau_max = 0;
	  Cp->tau_y_max = 0;
	  Cp->n_RSU = 3;
	  Cp->alfa_f = Af/(t_*h_);
	  i_current = -1;
	  Cp->hef1 = 0;
	  Cp->hw1 = 0;
	  //---------------------------------------------------------
	  // Выполнение проверок по первому критерию
	  //---------------------------------------------------------
	  double krit_perf = -1;
	  for (i = 0; i<NRSU; i++) {
		  n_elem = ListElem_RSU[i];
		  n_elem_rep = n_elem;
		  if (!CheckElem[i][3])
			continue;


		  if (fi_y[n_elem] < fi_x[n_elem])
			lambda_cent = lambda_y[n_elem];
		  else
			lambda_cent = lambda_x[n_elem];
		  //  Вычисление параметров конструктивного элемента по сечению
		  // Установить текущую высоту стенки элемента
		  memcpy((char*) &Sect_Elem_Copy, (char*)&(Sect_Elem_Group[0].com_sect.dvutavr), sizeof(SECT_DVUTAVR));

		  //Sect_Elem_Group[0].com_sect.dvutavr.h = H_sten[n_elem][ListNSect_RSU[i]];
		  //--------------------------------------------------------------------------
		  // Вычислить геометрические характеристики сечения группы
		  if (Sect_Elem_Group[0].type_sect >= 0 && Sect_Elem_Group[0].com_sect.dvutavr.h < 1.0) {
			rc = Application->MessageBox((L"CheckExecute%Bending_CV:Программная ошибка. Высота стенки двутавра элемента "+IntToStr(n_elem+1) +" < 1.0").c_str(),
			L"", MB_OK | MB_ICONERROR);
		  return 1;
		  }
		  // Вычислить геометрические характеристики сечения группы (исходного)
		  if (data_check->flag_composed)  // Составное сечение
			 Get_param_sect_composed(Sect_Elem_Group[ngroup].type_sect, &(Sect_Elem_Group[ngroup].com_sect),
							 data_check->plate_width, data_check->plate_thick, &param_sect, data_check->index_composed);
		  else
			 Get_param_sect_comm(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), &param_sect);
		  // Вычислить геометрические характеристики сечения группы c учетом перфорации
		  if (data_check->flag_perfor) {
			 Get_param_sect_perfor(&(Sect_Elem_Group[ngroup].com_sect.dvutavr),&param_sect, data_check->perfor_h, &param_perfor);
		  }
		  memcpy((char*)&param_netto, (char*)&param_sect, sizeof(GEOM_PARAM_SECT));

		  i_zz = sqrt(param_sect.Izz/param_sect.Ar);
		  i_yy = sqrt(param_sect.Iyy/param_sect.Ar);
		  // Гибкость элемента
		  lambdaX[n_elem] = data_check->length_XZ[n_elem]/i_zz;
		  lambdaY[n_elem] = data_check->length_YZ[n_elem]/i_yy;
		  // Условная гибкость элемента
		  lambda_x[n_elem] = lambdaX[n_elem]*sqrt(Ry/Ey);     // в плоскости стенки
		  lambda_y[n_elem] = lambdaY[n_elem]*sqrt(Ry/Ey);     // в плоскости поясов

		  if (data_check->flag_perfor) {
			h_ = Sect_Elem_Group[ngroup].com_sect.dvutavr.h +  param_perfor.h1;
			hw = Sect_Elem_Group[ngroup].com_sect.dvutavr.h -  param_perfor.h1;
		  }
		  else {
			h_ = Sect_Elem_Group[0].com_sect.dvutavr.h;
			hw = h_;
		  }


		  if (Sect_Elem_Group[ngroup].type_sect==TAVR)
			hef = h_ - param_sect.Rad;
		  else
			hef = h_ - 2*param_sect.Rad;

		  t_ = Sect_Elem_Group[0].com_sect.dvutavr.b;
		  bef_1 = Sect_Elem_Group[0].com_sect.dvutavr.b1;
		  tef_1 = Sect_Elem_Group[0].com_sect.dvutavr.h1;
		  if (data_check->flag_composed) {
			bef_2 = data_check->plate_width;
			tef_2 = data_check->plate_thick;
		  }
		  else {
			bef_2 = Sect_Elem_Group[0].com_sect.dvutavr.b2;
			tef_2 = Sect_Elem_Group[0].com_sect.dvutavr.h2;
		  }
		  // Af - меньшая площадь пояса определена выше
		  Aw = t_*hw;

		  /*   Условные гибкости определены ранее
		  lambda_w = (hef/t_)*sqrt(Ryw/Ey);
		  // Условные гибкости свеса поясов
		  lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry/Ey);
		  lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry/Ey);
		  // Гибкости поясов в плоскости поясов
		  Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
		  Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
		  // Условные гибкости поясов в плоскости поясов
		  lambda_f1Y = Lambda_f1Y*sqrt(Ry/Ey);
		  lambda_f2Y = Lambda_f2Y*sqrt(Ry/Ey);
		  */
		  // Вычисление fi_y - коэффициент устойчивости в плоскости поясов при центальном сжатии
		  fi_y[n_elem] = Round(Fun_fi_713(type_sect, lambda_y[n_elem], 1), 3);
		  // Вычисление fi_x коэффициент устойчивости в плоскости стенки при центальном сжатии
		  fi_x[n_elem] = Round(Fun_fi_713(type_sect, lambda_x[n_elem], 0), 3);

		  fi_f1 = Round(Fun_fi_713(RECTANCULAR, lambda_f1Y, 0), 3);
		  fi_f2 = Round(Fun_fi_713(RECTANCULAR, lambda_f2Y, 0), 3);

		  //Wx_min = MIN(param_netto.Izz/param_netto.Zct, param_netto.Izz/(param_netto.Hsect - param_netto.Zct));
		  //Wy_min = MIN(2*param_netto.Iyy/bef_1, 2*param_netto.Iyy/bef_2);

		if (Cp->hef1 == 0) {
		  Cp->hef1 = hef;
		  Cp->hw1 = h_;
		}
		Cp->hef2 = hef;   // Будет последнее, несмотря на жесткие вставки
		Cp->hw2 = h_;

		N_ = Elem_RSU[i][0]*1000;
		M_ = MAX(100, (ABS(Elem_RSU[i][2]*1e6)));


		Q_ = ABS(Elem_RSU[i][3]*1000);
		M_y = ABS(Elem_RSU[i][4]*1e6);
		Q_y = ABS(Elem_RSU[i][5]*1000);

		M_c = 0;


		Forces[0] = Elem_RSU[i][0]*1000;
		Forces[1] = Elem_RSU[i][1]*1e6;
		Forces[2] = Elem_RSU[i][2]*1e6;
		Forces[3] = Elem_RSU[i][3]*1000;
		Forces[4] = Elem_RSU[i][4]*1e6;
		Forces[5] = Elem_RSU[i][5]*1000;

		q_bal_norm = ABS(q_bal_n[i][0]);  // Нормативная погонная нагрузка
		q_bal_ras = ABS(q_bal_r[i][0]);    // Расчетная погонная нагрузка
		// длина элемента
		len = data_check->length[n_elem];
		// Минимальное и максимальное напряжение в стенке
		sig_1 = N_/param_sect.Ar + M_*(param_sect.Zct - tef_1 - param_sect.Rad)/param_sect.Izz;
		if (data_check->flag_composed) {
		  if (Sect_Elem_Group[ngroup].type_sect==TAVR)
			 sig_2 = N_/param_sect.Ar - M_*(param_sect.Hsect - param_sect.Zct - tef_2)/param_sect.Izz;
		  else  {
			 sig_2 = N_/param_sect.Ar - M_*(param_sect.Hsect - param_sect.Zct - tef_2 -
											Sect_Elem_Group[ngroup].com_sect.dvutavr.h2 - param_sect.Rad)/param_sect.Izz;
		  }
		}
		else
		  sig_2 = N_/param_sect.Ar - M_*(param_sect.Hsect - param_sect.Zct - tef_2 - param_sect.Rad)/param_sect.Izz;
		sig_1w = MIN(sig_1, sig_2);
		sig_2w = MAX(sig_1, sig_2);

		if (sig_1w != 0.0)
		  alfa_w = (sig_1w - sig_2w)/sig_1w;
		else
		  alfa_w = 1;
		// Вычисление напряжений
		sigma_beam_comm(&param_sect, Forces, sigma_comm);

		if (sigma_comm[0] < sigma_comm[2]) {
		  Wc = Wx_up;    // Момент сопротивления, соответствующий сжатому поясу
		  Wt = Wx_down;      // Момент сопротивления, соответствующий растянутому поясу
		}
		else  {
		  Wc = Wx_down;
		  Wt = Wx_up;
		}

		if (N_ != 0) {
		  excentr = ABS(M_/N_);
		  m_exc = excentr*param_sect.Ar/Wc;  // ф. стр. 15
		}
		else {
		  N_ = -0.0001;
		  m_exc = 20;
		}

		double fi_b;
		if (data_check->flag_composed) {
		  Get_fi_e_comp(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), data_check->plate_width, data_check->plate_thick, M_, N_, 0,
				   data_check->length_XZ[n_elem], &param_sect, Ry, Ey, &Fi_e_param, data_check->index_composed);

		  // Вычисление fi_b
		  fi_b = Get_fi_b_bend_comp(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), data_check->plate_width, data_check->plate_thick, M_, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
						&param_sect, Ry, Ey,
						data_check->fi_b_type_constr, data_check->fi_b_num_constr,
						data_check->fi_b_type_load, data_check->fi_b_index_poyas, &Fi_b_param, data_check->index_composed);

		  if (fi_b <= 0) {
			fi_b = 1;
		  }
		  Get_c_fi_y_comp(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), data_check->plate_width, data_check->plate_thick, M_, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
						&param_sect, Ry, Ey, &Fi_y_param, fi_b, data_check->index_composed);
		}
		else {
		  // Вычисление fi_e
		  Get_fi_e(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), M_, N_, 0,
				   data_check->length_XZ[n_elem], &param_sect, Ry, Ey, &Fi_e_param);

		  // Вычисление fi_b
		  fi_b = Get_fi_b_bend(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), M_, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
						&param_sect, Ry, Ey,
						data_check->fi_b_type_constr, data_check->fi_b_num_constr,
						data_check->fi_b_type_load, data_check->fi_b_index_poyas, &Fi_b_param);
		  if (fi_b <= 0) {
		   fi_b = 1;
		  }
		  Get_c_fi_y(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), M_, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
						&param_sect, Ry, Ey, &Fi_y_param, fi_b);
		}

		// Вычисление fi_e

		alfa_x = (ABS(N_))/(Fi_e_param.fi_e*param_sect.Ar*Ry*data_check->gamma_c);
		alfa_y = (ABS(N_))/(Fi_y_param.c_*Fi_y_param.fi_y*param_sect.Ar*Ry*data_check->gamma_c);
		alfa_y0 = (ABS(N_))/(Fi_y_param.fi_y*param_sect.Ar*Ry*data_check->gamma_c);
		lambda_ux = data_check->Limit_lambda1 - data_check->Limit_lambda2*(MAX(0.5, alfa_x));
		lambda_uy = data_check->Limit_lambda1 - data_check->Limit_lambda2*(MAX(0.5, alfa_y0));
		// Вычисление k_x в соответствии с 7.3.11
		if (lambdaX[n_elem]/lambda_ux <= alfa_x || lambdaY[n_elem]/lambda_uy <= alfa_y)
		  k_x = 1.0;
		else {
		  fi_m = MIN(Fi_e_param.fi_e, Fi_y_param.c_*Fi_y_param.fi_y);
		  if ((ABS(N_)) <= 1e-1)
			 k_x = 1.25;
		  else
			 k_x = MIN(sqrt(fi_m*param_sect.Ar*Ry/(ABS(N_))), 1.25);
		}
		// lambda_uw при mx=20 по п. 8.5.8
		lambda_uw20 = Fun_lambda_uw20(M_, Q_, Ry, Ryw, Ey, Rsw, hef, t_, Af, data_check->gamma_c);
		// Среднее касательное напряжение
		tau_m = (ABS(Q_))/(h_*t_);
		delta_fi = Fi_y_param.c_*Fi_y_param.fi_y - Fi_e_param.fi_e;
		// Предельная гибкость по табл. 22

		lambda_uw = Fun_lambda_uw_cent_bend(type_sect, lambda_x[n_elem], m_exc, sig_1w, sig_2w, tau_m, delta_fi,
					Ry, data_check->gamma_c, lambda_uw20);

		#ifdef INFMESSAGE
		InfMessage(IntToStr(i+1)+": N ="+FloatToStr(Round(N_/1000, 1))+", M ="+FloatToStr(Round(M_/1e6, 1)));
		InfMessage("     lambda_uw20 ="+FloatToStr(lambda_uw20)+", lambda_uw ="+FloatToStr(Round(lambda_uw, 3)));
		#endif
		hd = t_*(lambda_uw - (lambda_w/lambda_uw - 1)*(lambda_uw - 1.2 - 0.15*(MIN(lambda_x[n_elem], 3.5))))*sqrt(Ey/Ry);
		// Редуцированная площадь
		Ad = param_sect.Ar - 2*(h_ - hd)*t_;
		if (((ABS(M_y)) > 1000 ||(ABS(Q_y)) > 10) && data_check->index_Qy == -1) {
		   int rc = Application->MessageBox(L"Изгибающий момент в плоскости поясов не равен нулю. Необходимо задать распределение усилий по поясам",
											L"Изгибаемые элементы",  MB_OK | MB_ICONERROR);
		   return rc;
		}
		switch (data_check->index_Qy) {
		case 0:
		   Af_y = bef_1*tef_1;
		   Wy_min = bef_1*bef_1*tef_1/6;
		   Iyy = bef_1*bef_1*bef_1*bef_1*tef_1/12;
		   Sy = Af_y*0.5*bef_1/4;
		   t_y = tef_1;
		break;
		case 1:
		   Af_y = bef_2*tef_2;
		   Wy_min = bef_2*bef_2*tef_2/6;
		   Iyy = bef_2*bef_2*bef_2*bef_2*tef_2/12;
		   Sy = Af_y*0.5*bef_2/4;
		   t_y = tef_2;
		break;
		default:
		   Af_y = bef_1*tef_1 + bef_2*tef_2;
		   Wy_min = 2*param_sect.Iyy/param_sect.Wsect;
		   Iyy = param_sect.Iyy;
		   Sy = bef_1*tef_1*0.5*bef_1/4 + bef_2*tef_2*0.5*bef_2/4;
		   t_y = tef_1 + tef_2;
		}

		// определение lambda_b
		if (sigma_comm[0] < data_check->sigma_minus ) {  // сжат верхний пояс
		  // Условная гибкость сжатого пояса
		  lambda_b = (data_check->step_ext[n_elem]/bef_1)*sqrt(Ry/Ey);
		  lambda_ub = 0.35+0.0032*bef_1/tef_1+(0.76-0.02*bef_1/tef_1)*bef_1/param_sect.Hp;  // Формула 71
		  Wc = Wx_up;    // Момент сопротивления, соответствующий сжатому поясу
		  Wt = Wx_down;      // Момент сопротивления, соответствующий растянутому поясу
		}
		if (sigma_comm[2] < data_check->sigma_minus ) {  // сжат нижний пояс
		  // Условная гибкость сжатого пояса
		  lambda_b = (data_check->step_int[n_elem]/bef_2)*sqrt(Ry/Ey);
		  lambda_ub = 0.35+0.0032*bef_2/tef_2+(0.76-0.02*bef_2/tef_2)*bef_2/param_sect.Hp;  // Формула 71
		  Wc = Wx_down;
		  Wt = Wx_up;
		}

		//------------------------------------------------------------------------------------
		// 1. (2.2.6), (2.2.7) ------------------------------------------------------
		// Расчет на прочность по нормальным напряжениям, п. 9.1.1 ф.(105) или (106)
		if (flag_check[0]) {
		  double tau_y;
		  //--------------------------------------------------------------------------
		  // Условие п. 8.5.8
		  {
			double tau_m, alfa, sig1, sig2, r_, A1, A2, h1, Dev;

			tau_m = (ABS(Q_))/(t_*h_);
			r_ =  MAX(1.0, Ry/Ryw);
			alfa = Fun_alfa_18(lambda_w, tau_m/Rsw);

			if (bef_1 == bef_2 && tef_1 == tef_2) {
			  // симметричное сечение
				krit_8_5_8 = (ABS(M_))/(Ry*data_check->gamma_c*hef*hef*t_*(r_*bef_1*tef_1/(h_*t_) + alfa));
			}
			else { // моносимметричное сечение
			  if (sigma_comm[0]<0) {
				sig1 = MIN((ABS(sigma_comm[0])), Ry);
				sig2 = MIN((ABS(sigma_comm[2])), Ry);
				A1 = Aup;
				A2 = Adown;
			  }
			  if (sigma_comm[2]<0) {
				sig1 = MIN((ABS(sigma_comm[2])), Ry);
				sig2 = MIN((ABS(sigma_comm[0])), Ry);
				A1 = Adown;
				A2 = Aup;
			  }
			  //t и tw в формуле 87 равны - для балок асимметричного сечения с более развитым сжатым поясом
			  if (Ryw*Ryw - 3*tau_m*tau_m > 0) {
				h1 = h_*t_/(2*t_)+(A2*sig2 - A1*sig1)/(2*t_*sqrt(Ryw*Ryw - 3*tau_m*tau_m));
				h1 = MIN(h1, h_);
				Dev = sig1*A1*h1 + sig2*A2*(h_ - h1)+4*h1*h1*t_*alfa*Ry +
					 h_*t_*(h_ - 2*h1)*sqrt(Ryw*Ryw - 3*tau_m*tau_m)*0.5;
			  }
			  else {
				h1 = h_/2;
				Dev = sig1*A1*h1 + sig2*A2*(h_ - h1)+4*h1*h1*t_*alfa*Ry;

			  }
			  krit_8_5_8 = (ABS(M_))/(Dev*data_check->gamma_c);
			}
		  }
		//-----------------------------------------------------------------
		// Проверка местной устойчивости сжатого пояса, п. 8.5.18 для балок 1-го класса
		  {
			double lambda_f, lambda_uf, sig_f1, sig_f2, sig_max;
			krit_8_5_18 = 0;
			sig_f1 = N_/param_netto.Ar - M_*(param_netto.Zct)/param_netto.Izz;
			sig_f2 = N_/param_netto.Ar + M_*(param_netto.Hsect - param_netto.Zct)/param_netto.Izz;
			sig_max = MAX((ABS(sig_f1)), (ABS(sig_f2)));
			if (data_check->index_class == 1) { // Для балок первого класса
			  if (Cp->sigma_max < sig_max) {
				double s1, s2;
				Cp->sigma_max = sig_max;
				s1 = MIN(sig_f1, sig_f2);
				s2 = MAX(sig_f1, sig_f2);
				Cp->alfa = (s1 - s2)/s1;
			  }
			  if (sig_f1 < 0 ) {
				lambda_uf = 0.5*sqrt(Ry/(ABS(sig_f1)));
				krit_8_5_18 = lambda_f1/lambda_uf;
			  }
			  if (sig_f2 < 0 ) {
				lambda_uf = 0.5*sqrt(Ry/(ABS(sig_f2)));
				krit_8_5_18 = MAX(krit_8_5_18, lambda_f2/lambda_uf);
			  }
			}
			else {   // Для балок 2-го и 3-го класса
			  if (krit_8_5_8 <= 1.0 && lambda_uw <=5.5 && lambda_uw >= 2.2) {
				double lambda_uf = 0.17 + 0.06*lambda_uw;
				if (sig_f1 < 0 ) {
				  krit_8_5_18 =  lambda_f1/lambda_uf;
				}
				if (sig_f2 < 0 ) {
					krit_8_5_18 = MAX(krit_8_5_18, lambda_f2/lambda_uf);
				}
			  }
			  else {
				krit_8_5_18 = -1;
			  }
			}
		  }
		  tau_m = (ABS(Q_))/(t_*h_);   // Касательное напряжение в стенке
		  tau_y = (ABS(Q_y))/Af_y;

		  if (index_105g == 0)
			 index_105 = 0;   // Пластика не допускается
		  else {
			 if (krit_8_5_8 <= 1.0 && krit_8_5_18 <=1.0 && tau_m <= 0.9*Rsw && tau_y <= 0.9*Rsw)
			   index_105 = 1;
			  else
				index_105 = 0;
		  }
		  double krit_105, krit_106;
		  if (index_105 == 1) { // Формула 105 - пластика допускается
			  double alfa_f;
			  if (tau_m <= 0.5*Rsw)
				beta = 1;
			  else {
				alfa_f = Af/(t_*h_);
				beta = 1 - pow(tau_m/Rsw, 4)*0.2/(alfa_f +0.25);
			  }
			  // Получить значение коэффициентов n, cx, cy по табл Е.1
			  Get_n_cx_cy(0, type_sect, &(Sect_Elem_Group[0].com_sect), &n_, &cx_, &cy_);

			  krit_105 = pow((ABS(N_))/(param_netto.Ar*Ry*data_check->gamma_c), n_) + (ABS(M_))/(cx_*beta*Wx_min*Ry_min*data_check->gamma_c) +
						 (ABS(M_y))/(cy_*Wy_min*Ry*data_check->gamma_c);
		  }
		  //else {
		  {
			  double sig_N, sig_ext, sig_int, sig_M_y, sig_sum;
			  double sig_M_down, sig_equ;
			  double Dw; // момент сопротивления сечения пластины или пластины+полка
			  double tau_q_down;

			  sig_N = N_/param_netto.Ar;
			  sig_ext = sig_N  - M_*param_sect.Zct/param_netto.Izz;
			  sig_int = sig_N + M_*(param_sect.Hsect - param_sect.Zct)/param_netto.Izz;
			  sig_M_y =(ABS(M_y))/Wy_min;
			  sig_sum = MAX((ABS(sig_ext + sig_M_y)), (ABS(sig_ext - sig_M_y)));
			  if (sig_sum > (ABS(sig_int + sig_M_y))) {
				 Cp->y_106 = param_sect.Zct;
			  }
			  else {
				 Cp->y_106 = (param_sect.Hsect - param_sect.Zct);
			  }
			  Cp->x_106 = param_netto.Iyy/Wy_min;
			  sig_sum = MAX(sig_sum, (ABS(sig_int + sig_M_y)));
			  sig_sum = MAX(sig_sum, (ABS(sig_int - sig_M_y)));

			  krit_106 = sig_sum/(Ry*data_check->gamma_c);

			  // проверка по эквивалентным напряжениям
			  if (data_check->flag_composed) {
				 if (Sect_Elem_Group[0].type_sect == TAVR) {
				   Dw = data_check->plate_thick*data_check->plate_thick/6;
				 }
				 else {
				   Dw = data_check->plate_thick*data_check->plate_thick/6 +
						Sect_Elem_Group[0].com_sect.dvutavr.h2*Sect_Elem_Group[0].com_sect.dvutavr.h2/6;
				 }
				 sig_M_down = data_check->M_down_LR_max/Dw;
				 tau_q_down = 0.5*data_check->q_down_LR_max/data_check->plate_thick;
				 sig_equ = sqrt(sig_sum*sig_sum + sig_sum*sig_M_down + sig_M_down*sig_M_down + 3*tau_q_down*tau_q_down);
			  }
			  else {
				sig_equ = sig_sum;
			  }
			  krit_106 = sig_equ/(Ry*data_check->gamma_c);
		  }
		  if (krit_106 <=1 || index_105 == 0) {
			  index_105g = 0;
			  if (krit[0] < krit_106) {
				 MAXNNEL(krit[0], krit_106, 0) ;
			  }
		  }
		  else {
			  index_105g = 1;
			  if (krit[0] < krit_105) {
				  Cp->n_pow = n_;
				  Cp->beta = beta;
				  Cp->cx = cx_;
				  Cp->cy = cy_;
				  Cp->N_105 = ABS(N_);
			  }
			  MAXNNEL(krit[0], krit_105, 0) ;
		  }
		  if (data_check->flag_perfor) {  // Дополнительные проверки для перфорированного профиля  СП 16.13330.2011
			 double krit_14, krit_15, krit_16;
			 double z13 = data_check->length[n_elem]/2 - param_perfor.Jx*data_check->perfor_a/(2*param_perfor.hp*param_perfor.Wmax_tavr);
			 double z24 = data_check->length[n_elem]/2 - param_perfor.Jx*data_check->perfor_a/(4*param_perfor.h1*param_perfor.Wmin_tavr);
			 if (z24 < 0) {
				z24 = z13 + data_check->perfor_b/2;
			 }
			 double M13 = (q_bal_ras*data_check->length[n_elem]*z13/2 - q_bal_ras*z13*z13/2)*1.02;
			 double Q13 = (q_bal_ras*data_check->length[n_elem]/2 - q_bal_ras*z13)*1.02;
			 double M24 = (q_bal_ras*data_check->length[n_elem]*z24/2 - q_bal_ras*z24*z24/2)*1.02;
			 double Q24 = (q_bal_ras*data_check->length[n_elem]/2 - q_bal_ras*z24)*1.02;
			 // Для точек в углах вырезанных отверстий на расстоянии 0.5*h1
			 double sig_13 = M13/Wx_min + Q13*data_check->perfor_a/(4*param_perfor.Wmin_tavr);
			 // Для точек над углами вырезанных отверстий на расстоянии 0.5*h_
			 double sig_24 = M24/Wx_min + Q24*data_check->perfor_a/(4*param_perfor.Wmax_tavr);
			 double s_ = 2*(data_check->perfor_a + data_check->perfor_b);   // Шаг
			 double tau_2p = (ABS(Q_))*s_/(t_*data_check->perfor_a*hef);
			 krit_14 = sig_13/(Ry*data_check->gamma_c);
			 krit_15 = sig_24/(Ru*data_check->gamma_c/1.3);
			 krit_16 = tau_2p/(Rsw*data_check->gamma_c);
			 Cp->Wmin_tavr = param_perfor.Wmin_tavr;
			 Cp->Wmax_tavr = param_perfor.Wmax_tavr;
			 Cp->Wx_perf = Wx_min;
			 Cp->s_perf = s_;
			 if  (krit[14] < krit_14) {
				 Cp->M13 = M13;
				 Cp->Q13 = Q13;
             }
			 if  (krit[15] < krit_15) {
				 Cp->M24 = M24;
				 Cp->Q24 = Q24;
			 }
			 if  (krit[16] < krit_16) {
				 Cp->Qperf = ABS(Q_);
			 }
			 MAXNNEL(krit[14], sig_13/(Ry*data_check->gamma_c), 14);
			 MAXNNEL(krit[15], sig_24/(Ru*data_check->gamma_c/1.3), 15);
			 MAXNNEL(krit[16], tau_2p/(Rsw*data_check->gamma_c), 16);
			 //
			 /*
			 krit_perf = MAX(krit_perf, sig_13/(Ry*data_check->gamma_c));
			 krit_perf = MAX(krit_perf, sig_24/(Ry*data_check->gamma_c));
			 krit_perf = MAX(krit_perf, tau_2p/(Rsw*data_check->gamma_c));
			 if (krit[0] < krit_perf) {
				krit[0] = krit_perf;
				nnel_krit[0] = n_elem_rep;
			 }
			 */
		  }
		}
		memcpy((char*)&(Sect_Elem_Group[0].com_sect.dvutavr), (char*) &Sect_Elem_Copy, sizeof(SECT_DVUTAVR));
	  }
	  if (index_105g==0)
		index_105 = 0;
		if (N_ < Nmin) {
		  Nmin = N_;
		  Cp->RSU[0][0] = Elem_RSU[i][0];
		  Cp->RSU[0][2] = Elem_RSU[i][2];
		  Cp->RSU[0][3] = Elem_RSU[i][3];
		  Cp->RSU[0][4] = Elem_RSU[i][4];
		  Cp->RSU[0][5] = Elem_RSU[i][5];
		  Cp->RSU[0][6] = M_c*1e-6;
		}

		if ((ABS(Q_)) > Qmax) {
		  Qmax = ABS(Q_);
		  Cp->RSU[1][0] = Elem_RSU[i][0];
		  Cp->RSU[1][2] = Elem_RSU[i][2];
		  Cp->RSU[1][3] = Elem_RSU[i][3];
		  Cp->RSU[1][4] = Elem_RSU[i][4];
		  Cp->RSU[1][5] = Elem_RSU[i][5];
		  Cp->RSU[1][6] = M_c*1e-6;
		}

		if ((ABS(M_)) > Mmax) {
		  Mmax = ABS(M_);
		  NatMmax = N_;

		  Cp->Mx = M_;
		  Cp->My = M_y;
		  Cp->Qy = Q_;
		  Cp->Qx = Q_y;
		  Cp->N_ = N_;

		  Cp->nelem = n_elem_rep;
		  Cp->hw = h_;
		  Cp->hef = hef;
		  Cp->RSU[2][0] = Elem_RSU[i][0];
		  Cp->RSU[2][2] = Elem_RSU[i][2];
		  Cp->RSU[2][3] = Elem_RSU[i][3];
		  Cp->RSU[2][4] = Elem_RSU[i][4];
		  Cp->RSU[2][5] = Elem_RSU[i][5];
		  Cp->RSU[2][6] = M_c*1e-6;
		  strcpy(Cp->Steel, MaterPropU_prof.title);
		  Cp->Ryn = steel_param.Ryn;
		  Cp->bef = bef_1;
		  Cp->Ey = Ey;
		  Cp->Ry = Ry;
		  Cp->Ru = Ru;
		  Cp->Ryw = Ryw;
		  Cp->Rs = Rsw;
		  Cp->lambdaX = lambdaX[n_elem];
		  Cp->lambdaY = lambdaY[n_elem];
		  Cp->lambda_x = lambda_x[n_elem];
		  Cp->lambda_y = lambda_y[n_elem];
		  Cp->lambda_uw = lambda_uw;
		  Cp->lambda_w = lambda_w;
		  Cp->lambda_f1 = lambda_f1;
		  Cp->lambda_f2 = lambda_f2;
		  Cp->lambdaBF1 = Lambda_f1Y;
		  Cp->lambda_bf1 = lambda_f1Y;
		  Cp->lambdaBF2 = Lambda_f2Y;
		  Cp->lambda_bf2 = lambda_f2Y;
		  Cp->fi_x = fi_x[n_elem];
		  Cp->fi_y = fi_y[n_elem];
		  Cp->Wc = Wc;
		  Cp->Wt = Wt;
		  Cp->Ad = Ad;
		  Cp->Wx_min = Wx_min;
		  Cp->Wy_min = Wy_min;
		  memcpy(&(Cp->Sect_Elem), &(Sect_Elem_Group[0]), sizeof(DATA_SECT_SCAD));
		  memcpy(&(Cp->param_sect), &(param_sect), sizeof(GEOM_PARAM_SECT));
		  memcpy(&(Cp->param_netto), &(param_netto), sizeof(GEOM_PARAM_SECT));
		  Cp->fi_e = Fi_e_param.fi_e;
		  Cp->fi_b = Fi_y_param.fi_b;
		  Cp->fi_y = Fi_y_param.fi_y;
		  Cp->cfi_y = Fi_y_param.fi_y*Fi_y_param.c_;
		  Cp->m_ef = Fi_e_param.m_ef;
		  Cp->lambda_b1 = (data_check->step_ext[n_elem]/bef_1)*sqrt(Ry/Ey);
		  Cp->lambda_b2 = (data_check->step_int[n_elem]/bef_2)*sqrt(Ry/Ey);
		  Cp->mx = m_exc;
		  Cp->m_exc = m_exc;
		  Cp->index_105 = index_105;
		  Cp->cx_ = cx_;
		  Cp->cy_ = cy_;
		  Cp->n_ = n_;
		  Cp->A_netto = param_netto.Ar;
		  Cp->Sx = param_netto.Sx[0];

		}
	  // Конец определения index_105
	  //sprintf(stroka,"Mmax = %8.1f кН*м, N=%6.1f кН, mx = %4.1f, m_ef = %4.1f", Mmax*1e-6, NatMmax*1e-3, m_exc, Fi_e_param.m_ef);
	  //InfMessage("Изгибаемый      : "+(AnsiString)stroka);
	  //----------------------------------------------------------------------
	  // Цикл для остальных критериев
	  //----------------------------------------------------------------------
	  i_current = -1;
	  for (i = 0; i<NRSU; i++) {
		  n_elem = ListElem_RSU[i];
		  n_elem_rep = n_elem;
		  if (!CheckElem[i][3])
			continue;

		  memcpy((char*) &Sect_Elem_Copy, (char*)&(Sect_Elem_Group[0].com_sect.dvutavr), sizeof(SECT_DVUTAVR));
		  // Установить текущую высоту стенки элемента
		  //Sect_Elem_Group[0].com_sect.dvutavr.h = H_sten[n_elem][ListNSect_RSU[i]];

		  //  Вычисление параметров конструктивного элемента по сечению
		  //--------------------------------------------------------------------------
		  // Вычислить геометрические характеристики сечения группы
		  if (data_check->flag_composed)  // Составное сечение
			Get_param_sect_composed(Sect_Elem_Group[ngroup].type_sect, &(Sect_Elem_Group[ngroup].com_sect),
							 data_check->plate_width, data_check->plate_thick, &param_sect, data_check->index_composed);
		  else
			Get_param_sect_comm(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), &param_sect);
		  // Вычислить геометрические характеристики сечения группы c учетом перфорации
		  if (data_check->flag_perfor) {
			 Get_param_sect_perfor(&(Sect_Elem_Group[ngroup].com_sect.dvutavr),&param_sect, data_check->perfor_h, &param_perfor);
		  }
		  //if (data_check->flag_netto) {
		  //  Get_param_sect_netto(&(Sect_Elem_Group[0].com_sect.dvutavr), &param_netto,
		  //                 data_check->diametr, data_check->num_holes, data_check->space, data_check->step);
		  //}
		  memcpy((char*)&param_netto, (char*)&param_sect, sizeof(GEOM_PARAM_SECT));

		  i_zz = sqrt(param_sect.Izz/param_sect.Ar);
		  i_yy = sqrt(param_sect.Iyy/param_sect.Ar);
		  // Гибкость элемента
		  lambdaX[n_elem] = data_check->length_XZ[n_elem]/i_zz;
		  lambdaY[n_elem] = data_check->length_YZ[n_elem]/i_yy;
		  // Условная гибкость элемента
		  lambda_x[n_elem] = lambdaX[n_elem]*sqrt(Ry/Ey);     // в плоскости стенки
		  lambda_y[n_elem] = lambdaY[n_elem]*sqrt(Ry/Ey);     // в плоскости поясов

		  if (data_check->flag_perfor) {
			h_ = Sect_Elem_Group[ngroup].com_sect.dvutavr.h +  param_perfor.h1;
			hw = Sect_Elem_Group[ngroup].com_sect.dvutavr.h -  param_perfor.h1;
		  }
		  else {
			h_ = Sect_Elem_Group[0].com_sect.dvutavr.h;
			hw = h_;
		  }
		  hef = h_ - 2*param_sect.Rad;

		  t_ = Sect_Elem_Group[0].com_sect.dvutavr.b;
		  bef_1 = Sect_Elem_Group[0].com_sect.dvutavr.b1;
		  tef_1 = Sect_Elem_Group[0].com_sect.dvutavr.h1;
		  bef_2 = Sect_Elem_Group[0].com_sect.dvutavr.b2;
		  tef_2 = Sect_Elem_Group[0].com_sect.dvutavr.h2;
		  Af = MIN(bef_1*tef_1, bef_2*tef_2);   // меньшая площадь пояса
		  Aw = t_*hw;

		  lambda_w = (hef/t_)*sqrt(Ryw/Ey);
	 // Гибкости поясов в плоскости поясов
		  if (data_check->flag_composed) {
			switch (data_check->index_composed) {
			case 0:
			  bef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
			  tef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h1;
			  bef_2 = data_check->plate_width;
			  tef_2 = data_check->plate_thick;
			  lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry/Ey);
			  lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry_plate/Ey);
			  Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
			  Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
	 // Условные гибкости поясов в плоскости поясов
			  lambda_f1Y = Lambda_f1Y*sqrt(Ry/Ey);
			  lambda_f2Y = Lambda_f2Y*sqrt(Ry_plate/Ey);
			break;
			case 1:
			  bef_2 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
			  tef_2 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h1;
			  bef_1 = data_check->plate_width;
			  tef_1 = data_check->plate_thick;
			  lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry_plate/Ey);
			  lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry/Ey);
			  Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
			  Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
	 // Условные гибкости поясов в плоскости поясов
			  lambda_f1Y = Lambda_f1Y*sqrt(Ry_plate/Ey);
			  lambda_f2Y = Lambda_f2Y*sqrt(Ry/Ey);
			break;
			case 2:
			  bef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
			  tef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h1;
			  bef_2 = data_check->plate_width;
			  tef_2 = data_check->plate_thick + Sect_Elem_Group[ngroup].com_sect.dvutavr.h2;
			  lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry/Ey);
			  lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry_plate/Ey);
			  Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
			  Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
	 // Условные гибкости поясов в плоскости поясов
			  lambda_f1Y = Lambda_f1Y*sqrt(Ry/Ey);
			  lambda_f2Y = Lambda_f2Y*sqrt(Ry_plate/Ey);
			 break;
			}
		  }
		  else {
			bef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
			tef_1 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h1;
			bef_2 = Sect_Elem_Group[ngroup].com_sect.dvutavr.b2;
			tef_2 = Sect_Elem_Group[ngroup].com_sect.dvutavr.h2;
	 // Условные гибкости свеса поясов
			lambda_f1 = (((bef_1 - t_)*0.5 - param_sect.Rad)/tef_1)*sqrt(Ry/Ey);
			lambda_f2 = (((bef_2 - t_)*0.5 - param_sect.Rad)/tef_2)*sqrt(Ry/Ey);
			Lambda_f1Y = (data_check->step_ext[n_elem]*3.4641/bef_1);    // 3.4641 = sqrt(12)
			Lambda_f2Y = (data_check->step_int[n_elem]*3.4641/bef_2);
	 // Условные гибкости поясов в плоскости поясов
			lambda_f1Y = Lambda_f1Y*sqrt(Ry/Ey);
			lambda_f2Y = Lambda_f2Y*sqrt(Ry/Ey);
		  }
		  if (data_check->flag_composed) {
			// Вычисление fi_y - коэффициент устойчивости в плоскости поясов при центальном сжатии
			fi_y[n_elem] = Round(Fun_fi_713(DVUTAVR, lambda_y[n_elem], 1), 3);
			// Вычисление fi_x коэффициент устойчивости в плоскости стенки при центальном сжатии
			fi_x[n_elem] = Round(Fun_fi_713(DVUTAVR, lambda_x[n_elem], 0), 3);
		  }
		  else {
			// Вычисление fi_y - коэффициент устойчивости в плоскости поясов при центальном сжатии
			fi_y[n_elem] = Round(Fun_fi_713(Sect_Elem_Group[ngroup].type_sect, lambda_y[n_elem], 1), 3);
			// Вычисление fi_x коэффициент устойчивости в плоскости стенки при центальном сжатии
			fi_x[n_elem] = Round(Fun_fi_713(Sect_Elem_Group[ngroup].type_sect, lambda_x[n_elem], 0), 3);
		  }
		  // коэфф. fi для внешнего и внутреннего пояса п. 7.1.3
		  fi_f1 = Round(Fun_fi_713(RECTANCULAR, lambda_f1Y, 0), 3);
		  fi_f2 = Round(Fun_fi_713(RECTANCULAR, lambda_f2Y, 0), 3);


		N_ = Elem_RSU[i][0]*1000;
		M_ = MAX(100, (ABS(Elem_RSU[i][2]*1e6)));


		Q_ = ABS(Elem_RSU[i][3]*1000);
		M_y = ABS(Elem_RSU[i][4]*1e6);
		Q_y = ABS(Elem_RSU[i][5]*1000);

		//if (data_check->M_third > 0.1 && (ABS(Elem_RSU[i][2])) > data_check->M_third)
		//  M_c = data_check->M_third*1e6*SIGN(M_);
		//else
		//  M_c = M_;
		M_c = 0;

		//for (m=0; m<6; m++) {
		//  result_check->RSU[j_][k][m] = Elem_RSU[i][m];
	   // }
	   // result_check->RSU[j_][k][m] = M_c*1e-6;

		Forces[0] = Elem_RSU[i][0]*1000;
		Forces[1] = Elem_RSU[i][1]*1e6;
		Forces[2] = Elem_RSU[i][2]*1e6;
		Forces[3] = Elem_RSU[i][3]*1000;
		Forces[4] = Elem_RSU[i][4]*1e6;
		Forces[5] = Elem_RSU[i][5]*1000;

		q_bal_norm = ABS(q_bal_n[i][0]);
		len = data_check->length[n_elem];
		if (data_check->delta_lim > 0)
		  f_lim = len/data_check->delta_lim;
		else {
		  data_check->delta_lim = l_app(step_len, dev_len, len, 5);
		  f_lim = len/l_app(step_len, dev_len, len, 5);
		}

		// Минимальное и максимальное напряжение в стенке
		sig_1 = N_/param_sect.Ar + M_*(param_sect.Zct - tef_1 - param_sect.Rad)/param_sect.Izz;
		sig_2 = N_/param_sect.Ar - M_*(param_sect.Hsect - param_sect.Zct - tef_2 - param_sect.Rad)/param_sect.Izz;
		sig_1w = MIN(sig_1, sig_2);
		sig_2w = MAX(sig_1, sig_2);

		if (sig_1w!=0.0)
		  alfa_w = (sig_1w - sig_2w)/sig_1w;
		else
		  alfa_w = 1;
		// Вычисление напряжений
		sigma_beam_comm(&param_sect, Forces, sigma_comm);

		if (sigma_comm[0] < sigma_comm[2]) {
		  Wc = Wx_up;
		  Wt = Wx_down;
		  Ry_c = Ry_up;
		}
		else {
		  Wc = Wx_down;
		  Wt = Wx_up;
		  Ry_c = Ry_down;
		}

		if (N_ != 0) {
		  excentr = ABS(M_/N_);
		  m_exc = excentr*param_sect.Ar/Wc;  // ф. стр. 15
		}
		else {
		  N_ = -1;
		  m_exc = 20;
		}
		double fi_b;
		if (data_check->flag_composed) {
		  Get_fi_e_comp(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), data_check->plate_width, data_check->plate_thick, M_, N_, 0,
				   data_check->length_XZ[n_elem], &param_sect, Ry, Ey, &Fi_e_param, data_check->index_composed);

		  // Вычисление fi_b
		  fi_b = Get_fi_b_bend_comp(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), data_check->plate_width, data_check->plate_thick, M_, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
						&param_sect, Ry, Ey,
						data_check->fi_b_type_constr, data_check->fi_b_num_constr,
						data_check->fi_b_type_load, data_check->fi_b_index_poyas, &Fi_b_param, data_check->index_composed);

		  if (fi_b <= 0) {
			fi_b = 1;
		  }
		  Get_c_fi_y_comp(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), data_check->plate_width, data_check->plate_thick, M_, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
						&param_sect, Ry, Ey, &Fi_y_param, fi_b, data_check->index_composed);
		}
		else {
		  // Вычисление fi_e
		  Get_fi_e(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), M_, N_, 0,
				   data_check->length_XZ[n_elem], &param_sect, Ry, Ey, &Fi_e_param);

		  // Вычисление fi_b
		  fi_b = Get_fi_b_bend(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), M_, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
						&param_sect, Ry, Ey,
						data_check->fi_b_type_constr, data_check->fi_b_num_constr,
						data_check->fi_b_type_load, data_check->fi_b_index_poyas, &Fi_b_param);
		if (fi_b <= 0) {
		   fi_b = 1;
		}
		Get_c_fi_y(Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), M_, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
						&param_sect, Ry, Ey, &Fi_y_param, fi_b);
		}

		alfa_x = (ABS(N_))/(Fi_e_param.fi_e*param_sect.Ar*Ry*data_check->gamma_c);
		alfa_y = (ABS(N_))/(Fi_y_param.c_*Fi_y_param.fi_y*param_sect.Ar*Ry*data_check->gamma_c);
		alfa_y0 = (ABS(N_))/(Fi_y_param.fi_y*param_sect.Ar*Ry*data_check->gamma_c);
		lambda_ux = data_check->Limit_lambda1 - data_check->Limit_lambda2*(MAX(0.5, alfa_x));
		lambda_uy = data_check->Limit_lambda1 - data_check->Limit_lambda2*(MAX(0.5, alfa_y0));
		// Вычисление k_x
		if (lambdaX[n_elem]/lambda_ux <= alfa_x || lambdaY[n_elem]/lambda_uy <= alfa_y)
		  k_x = 1.0;
		else {
		  fi_m = MIN(Fi_e_param.fi_e, Fi_y_param.c_*Fi_y_param.fi_y);
		  if ((ABS(N_)) <= 1e-1)
			 k_x = 1.25;
		  else
			 k_x = MIN(sqrt(fi_m*param_sect.Ar*Ry/(ABS(N_))), 1.25);
		}
		// lambda_uw при mx=20 по п. 8.5.8
		lambda_uw20 = Fun_lambda_uw20(M_, Q_, Ry, Ryw, Ey, Rsw, hef, t_, Af, data_check->gamma_c);
		// Среднее касательное напряжение
		tau_m = (ABS(Q_))/(h_*t_);
		delta_fi = Fi_y_param.c_*Fi_y_param.fi_y - Fi_e_param.fi_e;
		// Предельная гибкость по табл. 22

		lambda_uw = Fun_lambda_uw_cent_bend(type_sect, lambda_x[n_elem], m_exc, sig_1w, sig_2w, tau_m, delta_fi,
					Ry, data_check->gamma_c, lambda_uw20);

		#ifdef INFMESSAGE
		InfMessage(IntToStr(i+1)+": N ="+FloatToStr(Round(N_/1000, 1))+", M ="+FloatToStr(Round(M_/1e6, 1)));
		InfMessage("     lambda_uw20 ="+FloatToStr(lambda_uw20)+", lambda_uw ="+FloatToStr(Round(lambda_uw, 3)));
		#endif
		hd = t_*(lambda_uw - (lambda_w/lambda_uw - 1)*(lambda_uw - 1.2 - 0.15*(MIN(lambda_x[n_elem], 3.5))))*sqrt(Ey/Ry);
		// Редуцированная площадь
		Ad = param_sect.Ar - 2*(h_ - hd)*t_;
		if (((ABS(M_y)) > 1000 ||(ABS(Q_y))) > 10 && data_check->index_Qy == -1) {
		   int rc = Application->MessageBox(L"Изгибающий момент в плоскости поясов не равен нулю. На вкладке ""Данные о нагрузках"" необходимо задать распределение усилий по поясам",
											   L"Изгибаемые элементы",  MB_OK | MB_ICONERROR);
		   return rc;
		}
		switch (data_check->index_Qy) {
		case 0:
		   Af_y = bef_1*tef_1;
		   Wy_min = bef_1*bef_1*tef_1/6;
		   Iyy = bef_1*bef_1*bef_1*bef_1*tef_1/12;
		   Sy = Af_y*0.5*bef_1/4;
		   t_y = tef_1;
		break;
		case 1:
		   Af_y = bef_2*tef_2;
		   Wy_min = bef_2*bef_2*tef_2/6;
		   Iyy = bef_2*bef_2*bef_2*bef_2*tef_2/12;
		   Sy = Af_y*0.5*bef_2/4;
		   t_y = tef_2;
		break;
		default:
		   Af_y = bef_1*tef_1 + bef_2*tef_2;
		   Wy_min = 2*param_sect.Iyy/param_sect.Wsect;
		   Iyy = param_sect.Iyy;
		   Sy = bef_1*tef_1*0.5*bef_1/4 + bef_2*tef_2*0.5*bef_2/4;
		   t_y = tef_1 + tef_2;
		}

		// определение lambda_b
		if (sigma_comm[0] < data_check->sigma_minus ) {  // сжат верхний пояс
		  lambda_b = (data_check->step_ext[n_elem]/bef_1)*sqrt(Ry/Ey);
		  lambda_ub = 0.35+0.0032*bef_1/tef_1+(0.76-0.02*bef_1/tef_1)*bef_1/param_sect.Hp;  // Формула 71
		  Wc = Wx_up;
		  Wt = Wx_down;
		}
		if (sigma_comm[2] < data_check->sigma_minus ) {  // сжат нижний пояс
		  lambda_b = (data_check->step_int[n_elem]/bef_2)*sqrt(Ry/Ey);
		  lambda_ub = 0.35+0.0032*bef_2/tef_2+(0.76-0.02*bef_2/tef_2)*bef_2/param_sect.Hp;  // Формула 71
		  Wc = Wx_down;
		  Wt = Wx_up;
		}
	 //-------------------------------------------------------------------------------
	 // 2. Проверка стенки на действие поперечной силы, п. 8.2.1, ф. (42)",
		if (flag_check[1]) {
		  double Q_1, tau_max;
		  //Qfic = GetQfic(Ey, Ry, N_, fi_x);        // - используется коэффициент fi_x, полученный для центрального сжатия
		  //Q_1 = MAX((ABS(Q_)), Qfic);
		  Q_1 = Q_;
		  tau_max = Calc_Tau_Pop_Force(N_, M_, Q_1, &(Sect_Elem_Group[0].com_sect.dvutavr), &param_netto, data_check->ugol_var);
		  if (Cp->tau_max < tau_max) {
			 Cp->tau_max = tau_max;
			 Cp->Qy = Q_1;
		  }
		  MAXNNEL(krit[1], tau_max/(Rsw*data_check->gamma_c), 1);
		}

	 //-----------------------------------------------------------------
	 // 3. Расчет на прочность поясов от поперечной силы в плоскости поясов, кроме опорных сечений, п. 8.2.1
		if (flag_check[2]) {
		   double tau_y;
		   tau_y = (ABS(Q_y))*Sy/(Iyy*t_y);
		   if (Cp->tau_y_max < tau_y) {
			 Cp->tau_y_max = tau_y;
			 Cp->Qx = Q_y;
		   }
		   MAXNNEL(krit[2], tau_y/(Rsw*data_check->gamma_c), 2);
		}
	 //-----------------------------------------------------------------
	 // 4. Расчет на прочность стенки в опорном сечении, п. 8.2.3, ф. (54)
		//if (flag_check[3] && index_105 == 1) {
		if (flag_check[3]) {
		   MAXNNEL(krit[3], (ABS(Q_))/(Aw*Rsw*data_check->gamma_c), 3);
		}
	 //-----------------------------------------------------------------
	 // 5. Расчет на прочность поясов в опорном сечении, п. 8.2.3, ф. (55)
		//if (flag_check[4] && index_105 == 1) {
		if (flag_check[4]) {
		   if (data_check->index_Qy==0 || data_check->index_Qy==1) {
			  MAXNNEL(krit[4], (ABS(Q_y))/(2*Af_y*Rsw*data_check->gamma_c), 4);
		   }
		   else {
			  MAXNNEL(krit[4], (ABS(Q_y))/(Af_y*Rsw*data_check->gamma_c), 4);
		   }
		}
	 //---------------------------------------------------------------------------
	 // 6. Прочность стенки, не укрепленной ребрами жесткости, п. 8.2.1 ф. (44)
		if (flag_check[5]) {
		  double sig_y1, sig_y2, krit_5;
		  if (!data_check->flag_step_edge && data_check->index_class > 1)
			 krit[5] = 999;
		  else {
			if (data_check->index_class == 1 && !data_check->flag_step_edge) {
			  // 1 класс не укрепленный ребрами жесткости
		   // знак момента: M>0 - внешние волокна сжаты
			  switch (data_check->index_local) {
			  case 0:
			   sig_y1 = -sigma_loc - data_check->q_ext*1000/(t_);
			   sig_y2 = 0;
			  break;
			  case 1:
			   sig_y1 = -data_check->q_ext*1000/(t_);
			   sig_y2 = sigma_loc;
			  break;
			  case 2:
			   sig_y1 = -data_check->q_ext*1000/(t_);
			   sig_y2 = 0;
			  break;
			  }
			  krit_5 = MAX((ABS(sig_y1))/(Ry*data_check->gamma_c), (ABS(sig_y2))/(Ry*data_check->gamma_c));
			  MAXNNEL(krit[5], krit_5, 5);
			}
			else {  // укрепленный ребрами
			  krit[5] = 0;
			}
		  }
		}
		if (flag_check[6]) {
		// 7. Расчет на прочность стенки при одновременном действии нормальной силы, момента и поперечной силы, п. 8.2.1 ф. (44)
		  double sig_x1, sig_x2, sig_y1, sig_y2, tau_xy0, tau_xy1, tau_xy2, krit_6;
		 // знак момента: M>0 - внешние волокна сжаты
		  sig_x1 = N_/param_netto.Ar - M_*(param_netto.Zct - tef_1)/param_netto.Izz;
		  sig_x2 = N_/param_netto.Ar + M_*(param_netto.Hsect - param_netto.Zct - tef_2)/param_netto.Izz;
		  switch (data_check->index_local) {
			case 0:
			  sig_y1 = -sigma_loc - data_check->q_ext*1000/(t_);
			  sig_y2 = 0;
			break;
			case 1:
			  sig_y1 = -data_check->q_ext*1000/(t_);
			  sig_y2 = sigma_loc;
			break;
			case 2:
			  sig_y1 = -data_check->q_ext*1000/(t_);
			  sig_y2 = 0;
			break;
		  }
		  //
		  tau_xy0 = (ABS(Q_))*param_netto.Sx[0]/(param_netto.Izz*t_);
		  tau_xy1 = (ABS(Q_))*param_netto.Sx[1]/(param_netto.Izz*t_);
		  tau_xy2 = (ABS(Q_))*param_netto.Sx[2]/(param_netto.Izz*t_);
		  krit_6 = MAX(0.87*sqrt(sig_x1*sig_x1 - sig_x1*sig_y1 + sig_y1*sig_y1 + 3*tau_xy1*tau_xy1)/(Ryw*data_check->gamma_c),
					   0.87*sqrt(sig_x2*sig_x2 - sig_x2*sig_y2 + sig_y2*sig_y2 + 3*tau_xy2*tau_xy2)/(Ryw*data_check->gamma_c));
		  krit_6 = MAX(krit_6, tau_xy0/(Rsw*data_check->gamma_c));
		  if (krit_6 > krit[6]) {
			if (sqrt(sig_x1*sig_x1 - sig_x1*sig_y1 + sig_y1*sig_y1 + 3*tau_xy1*tau_xy1) >
			   sqrt(sig_x2*sig_x2 - sig_x2*sig_y2 + sig_y2*sig_y2 + 3*tau_xy2*tau_xy2)) {
			  Cp->sig_xw = Round(sig_x1, 0);
			  Cp->sig_yw = Round(sig_y1, 0);
			  Cp->tau_w = Round(tau_xy1, 0);
			}
			else {
			  Cp->sig_xw = Round(sig_x2, 0);
			  Cp->sig_yw = Round(sig_y2, 0);
			  Cp->tau_w = Round(tau_xy2, 0);
			}
		  }

		  MAXNNEL(krit[6], krit_6, 6);
		}
		if (flag_check[7] || flag_check[8] || flag_check[9] || flag_check[17] ||
			flag_check[18] || flag_check[19] || flag_check[20]) {  // flag_check[8] для вычисления напряжений в поясах
		  double sig_x1, sig_x2, sig_x1f, sig_x2f, sig_y1, sig_y2, tau_xy1, tau_xy2, krit_7;
		  double My_ext, My_int, Nf1, Nf2, Af1, Af2;
		  double fi_f0;
		  COMMON_SECT sect_f;
		  GEOM_PARAM_SECT param_sect_f;
		  FI_E_PARAM Fi_e_param_f;

		 // знак момента: M>0 - внешние волокна сжаты
		  sig_x1 = N_/param_netto.Ar - M_*(param_netto.Zct)/param_netto.Izz;
		  sig_x2 = N_/param_netto.Ar + M_*(param_netto.Hsect - param_netto.Zct)/param_netto.Izz;
		  // Напряжения в ц.т. поясов
		  sig_x1f = N_/param_netto.Ar - M_*(param_netto.Zp)/param_netto.Izz;
		  sig_x2f = N_/param_netto.Ar + M_*(param_netto.Hp - param_netto.Zp)/param_netto.Izz;
		  switch (data_check->index_Qy) {  // 0 - к внешнему поясу, 1 - к внутреннему, 2 - ко всему сечению
		   case 0:
			My_ext = M_y;
			if (sig_x1 < 0) {
			  sig_x1 -= ABS(M_y/Wy_min);
			  sig_x1f -= ABS(M_y/Wy_min);
			}
			else {
			  sig_x1 += ABS(M_y/Wy_min);
			  sig_x1f += ABS(M_y/Wy_min);
			}
			tau_xy1 = (ABS(Q_y))*Sy/(Iyy*t_y);
			tau_xy2 = 0;
		   break;
		   case 1:
			My_int = M_y;
			if (sig_x2 < 0) {
			  sig_x2 -= ABS(M_y/Wy_min);
			  sig_x2f -= ABS(M_y/Wy_min);
			}
			else {
			  sig_x2 += ABS(M_y/Wy_min);
			  sig_x2f += ABS(M_y/Wy_min);
			}
			tau_xy2 = (ABS(Q_y))*Sy/(Iyy*t_y);
			tau_xy1 = 0;
		   break;
		   default:
			My_ext = M_y/2;
			My_int = M_y/2;
			if (sig_x1 < 0) {
			  sig_x1 -= ABS(0.5*M_y/Wy_min);
			  sig_x1f -= ABS(0.5*M_y/Wy_min);
			}
			else {
			  sig_x1 += ABS(0.5*M_y/Wy_min);
			  sig_x1f += ABS(0.5*M_y/Wy_min);
			}
			if (sig_x2 < 0) {
			  sig_x2 -= ABS(0.5*M_y/Wy_min);
			  sig_x2f -= ABS(0.5*M_y/Wy_min);
			}
			else {
			  sig_x2 += ABS(0.5*M_y/Wy_min);
			  sig_x2f += ABS(0.5*M_y/Wy_min);
			}
			tau_xy1 = (ABS(Q_y))*0.5*Sy/(Iyy*t_y);
			tau_xy2 = (ABS(Q_y))*0.5*Sy/(Iyy*t_y);
		  }
		  sig_y1 = 0;
		  sig_y2 = 0;
		  Af1 = bef_1*tef_1;
		  Nf1 = Af1*sig_x1f;
		  Af2 = bef_2*tef_2;
		  Nf2 = Af2*sig_x2f;
		  //
		// 8. Расчет на прочность поясов по эквивалентным напряжениям, п. 8.2.1 ф. (44)
		  if (flag_check[7]) {
			krit_7 = MAX(0.87*sqrt(sig_x1*sig_x1 - sig_x1*sig_y1 + sig_y1*sig_y1 + 3*tau_xy1*tau_xy1)/(Ry_min*data_check->gamma_c),
					   0.87*sqrt(sig_x2*sig_x2 - sig_x2*sig_y2 + sig_y2*sig_y2 + 3*tau_xy2*tau_xy2)/(Ry_min*data_check->gamma_c));
		  if (krit_7 > krit[7]) {
			if (sqrt(sig_x1*sig_x1 - sig_x1*sig_y1 + sig_y1*sig_y1 + 3*tau_xy1*tau_xy1) >
			   sqrt(sig_x2*sig_x2 - sig_x2*sig_y2 + sig_y2*sig_y2 + 3*tau_xy2*tau_xy2)) {
			  Cp->sig_xf = Round(sig_x1, 0);
			  Cp->sig_yf = Round(sig_y1, 0);
			  Cp->tau_f = Round(tau_xy1, 0);
			}
			else {
			  Cp->sig_xf = Round(sig_x2, 0);
			  Cp->sig_yf = Round(sig_y2, 0);
			  Cp->tau_f = Round(tau_xy2, 0);
			}
		  }
			MAXNNEL(krit[7], krit_7, 7);
		  }
		  //-----------------------------------------------------------
		  // 9. Устойчивость по изгибно-крутильной форме , п. 8.4.4., с учетом требований п. 8.4.6. или по п. 8.4.1.,
		  //а для элементов с переменной высотой стенки по стержневой аналогии
		  if (flag_check[8]) {
			double c1x, delta, krit_8, c_;
			double Af, Nf, M_yf, length_f;
			double krit_8a;

			if (index_105 == 1) {
			  c_ = 2;
			  c1x = MAX(beta*cx_, ABS(M_/(Wx_min*Ry_min*data_check->gamma_c)));
			  delta = 1 - 0.6*(c1x - 1)/(c_ - 1);
			}
			else
			  delta = 1;
			if (lambda_ub==0) {
				lambda_ub = 1;
			}
			krit_8 = lambda_b/(delta*lambda_ub);
			//if (krit_8 > 1.0 && index_105 == 0) {
			if (index_105 == 0) {
			  if (!data_check->flag_vary_sten) {
				krit_8 = (ABS(M_))/(Fi_y_param.fi_b*Wc*Ry_c*data_check->gamma_c) +
					   (ABS(M_y))/(Wy_min*Ry*data_check->gamma_c);
			  }
			  else {  // расчет устойчивости по стержневой аналогии
					// 7. Расчет на устойчивость внешнего пояса из плоскости рамы по стержневой аналогии, п. п. 7.1.3 ф.(7)
				if (Nf1 < 0) { // внешний пояс сжат
				  fi_f0 = fi_f1;
				  lambda_f = lambda_f1Y;
				  sect_f.rect_solid.h = bef_1;
				  sect_f.rect_solid.b = tef_1;
				  length_f = data_check->step_ext[n_elem];
				  Af = Af1;
				  Nf = Nf1;
				  M_yf = My_ext;;
				}
				else {
				  fi_f0 = fi_f2;
				  lambda_f = lambda_f2Y;
				  sect_f.rect_solid.h = bef_2;
				  sect_f.rect_solid.b = tef_2;
				  length_f = data_check->step_int[n_elem];
				  Af = Af2;
				  Nf = Nf2;
				  M_yf = My_int;;
				}
				if (Nf<0) {
				  if ((ABS(M_yf)) <1000) {    // центрально сжатый
					krit_8 = -Nf/(fi_f0*Af*Ry*data_check->gamma_c);
				  }
				  else {
					Get_param_sect_comm(RECTANCULAR, &(sect_f), &param_sect_f);
				// вид потери устойчивости и тип сечения прямоугольник
					Get_fi_e(RECTANCULAR, &(sect_f), M_yf, Nf, 0, length_f, &param_sect_f, Ry, Ey, &Fi_e_param_f);
					krit_8 = -Nf/(Fi_e_param_f.fi_e*Af*Ry*data_check->gamma_c);
				  }
				}
				else
				  krit_8 = 0;

			  }
			}
			Cp->Wcx = Round(Wc, 0);
			Cp->Wy = Round(Wy_min, 0);

			Cp->fi_b = Fi_b_param.fi_b;
			Cp->fi_1 = Fi_b_param.fi_1;
			Cp->l_ef = Fi_b_param.l_ef;
			Cp->h_fi_b = Fi_b_param.h_fi_b;
			Cp->psi = Fi_b_param.psi;

			MAXNNEL(krit[8], krit_8, 8);
			if (flag_check[9])
				MAXNNEL(krit[9], krit_8, 9);
		  }
		 //-----------------------------------------------------------
		/* 10. Прочность элементов, закрепляющих сжатый пояс, п. 8.4.5
		  if (flag_check[9]) {
			double Nf, Nf1, Nf2, fi, krit_9;
			Nf1 = bef_1*tef_1*Ry + 0.25*t_*h_*Ryw;
			Nf2 = bef_2*tef_2*Ry + 0.25*t_*h_*Ryw;
			Nf = 0;
			if (sig_x1 < data_check->sigma_minus) { // внешний пояс сжат
			  lambda_f = lambda_f1Y;
			  Nf = Nf1;
			}
			if (sig_x2 < data_check->sigma_minus) { // внешний пояс сжат
			  lambda_f = lambda_f2Y;
			  Nf = Nf2;
			}
			if (Nf >0) {
		  // Вычисление fi - коэффициент устойчивости внешнего пояся в плоскости поясов при центальном сжатии
			  fi = Round(Fun_fi_713(RECTANCULAR, lambda_f), 3);
			  Qfic = GetQfic(Ey, Ry, Nf, fi);
			  if (!data_check->flag_cont_ext) {
				krit_9 = Qfic/(data_check->Qu_*1000);
			  }
			  else {
				krit_9 = 3*Qfic/(data_check->len_ext*data_check->q_u_*1000);
			  }
			  MAXNNEL(krit[9], krit_9, 9);
			}
			else {
			  krit[9] = MAX(krit[9], 0);
			}
		  }
		  */
		//----------------------------------------------------------------------
		  if (flag_check[17]) {
		// 18. Проверка местной устойчивости сжатого пояса, п. 8.5.18, 8.5.19.
			double lambda_uf20;
			if (sig_x1 < data_check->sigma_minus) {
			  // Вычисление lambda_uf20
			  lambda_uf20 = Fun_lambda_uf20(index_105, Ry, sig_x1, lambda_uw20);
			  if (krit[17] < lambda_f1/lambda_uf20) {  \
				Cp->lambda_f = lambda_f1;
				Cp->lambda_uf = lambda_uf20; // Предельная условная гибкость стенки или поясов в пл. XZ
			  }
			  MAXNNEL(krit[17], lambda_f1/lambda_uf20, 17);
			}
			if (sig_x2 < data_check->sigma_minus) { // внутренний пояс сжат
			  lambda_uf20 = Fun_lambda_uf20(index_105, Ry, sig_x2, lambda_uw20);
			  if (krit[17] < lambda_f2/lambda_uf20) {  \
				Cp->lambda_f = lambda_f2;
				Cp->lambda_uf = lambda_uf20; // Предельная условная гибкость стенки или поясов в пл. XZ
			  }
			  MAXNNEL(krit[17], lambda_f2/lambda_uf20, 17);
			}
		  }
		  // Определение коэффициента k_ в сответствии с п. 10.4.2
		  if ((data_check->index_otvetstv == 0 || data_check->index_otvetstv == 1) &&
			   data_check->index_group <= 3)
            k_=1;
          else
            k_=1.1;
        //--------------------------------------------------------------------
        // 19. Предельная гибкость внешнего пояса, п. 9.4.
          if (flag_check[18]) {
            double alfa_yf, lambda_yuf;
            Fi_e_param_f.fi_e = 0;
            alfa_yf = 0;
            if (Nf1 < -100.0) {
              sect_f.rect_solid.h = bef_1;
              sect_f.rect_solid.b = tef_1;
			  Get_param_sect_comm(RECTANCULAR, &(sect_f), &param_sect_f);
			  if ((ABS(My_ext)) <1000) {    // центрально сжатый
				fi_f0 = fi_f1;
			  }
              else {
               // вид потери устойчивости и тип сечения прямоугольник
				Get_fi_e(RECTANCULAR, &(sect_f), My_ext, Nf1, 0, data_check->step_ext[n_elem], &param_sect_f, Ry, Ey, &Fi_e_param_f);
				fi_f0 = Fi_e_param_f.fi_e;
              }

			  alfa_yf = (ABS(Nf1))/(fi_f0*Af1*Ry*data_check->gamma_c);
			  if (alfa_yf >=2) {
                 alfa_yf = 2;
				 Get_fi_e(RECTANCULAR, &(sect_f), My_ext, Nf1, 0, data_check->step_ext[n_elem], &param_sect_f, Ry, Ey, &Fi_e_param_f);
			  }
              lambda_yuf = 180 - 60*alfa_yf;
            }
            else {
			  lambda_yuf = 400;
            }
            MAXNNEL(krit[18], Lambda_f1Y/(k_*lambda_yuf), 18);

            if (alfa_yf1_max < alfa_yf) {
                alfa_yf1_max = alfa_yf;
              //sprintf(stroka,"fi_f=%5.3f; fi_f1=%5.3f; fi_e=%5.3f, Nf1=%6.0f, alfa_yf=%5.3f, lambda_f1Y=%5.2f, k_=%2.1f, krit=%5.3f",
              //        fi_f, fi_f1, Fi_e_param_f.fi_e, Nf1, alfa_yf, lambda_f1Y, k_, krit[18]);
              //InfMessage((AnsiString)stroka);
            }
          }
		// 19. Предельная гибкость внутреннего пояса, п. 9.4.
		  if (flag_check[19]) {
            double alfa_yf, lambda_yuf;

            Fi_e_param_f.fi_e = 0;
			alfa_yf = 0;

            if (Nf2 < -100.0) {
              sect_f.rect_solid.h = bef_2;
              sect_f.rect_solid.b = tef_2;
			  Get_param_sect_comm(RECTANCULAR, &(sect_f), &param_sect_f);
			  if ((ABS(My_int)) <1000) {    // центрально сжатый
				fi_f0 = fi_f2;
			  }
			  else {
               // вид потери устойчивости и тип сечения прямоугольник
				Get_fi_e(RECTANCULAR, &(sect_f), My_int, Nf2, 0, data_check->step_int[n_elem], &param_sect_f, Ry, Ey, &Fi_e_param_f);
				fi_f0 = Fi_e_param_f.fi_e;
              }
			  alfa_yf = (ABS(Nf2))/(fi_f0*Af2*Ry*data_check->gamma_c);
			  if (alfa_yf >=2) {
                 alfa_yf = 2;
				 Get_fi_e(RECTANCULAR, &(sect_f), My_int, Nf2, 0, data_check->step_int[n_elem], &param_sect_f, Ry, Ey, &Fi_e_param_f);
              }
              lambda_yuf = 180 - 60*alfa_yf;
            }
            else
              lambda_yuf = 400;
            MAXNNEL(krit[19], Lambda_f2Y/(k_*lambda_yuf), 19);

			char stroka[120];
            if (alfa_yf2_max < alfa_yf) {
                alfa_yf2_max = alfa_yf;
              //sprintf(stroka,"fi_f=%5.3f; fi_f2=%5.3f; fi_e=%5.3f, Nf2=%6.0f, alfa_yf=%5.3f, lambda_f2Y=%5.3f, k_=%2.1f, krit20=%5.3f",
              //        fi_f, fi_f2, Fi_e_param_f.fi_e, Nf2, alfa_yf, lambda_f2Y, k_, krit[19]);
              //InfMessage((AnsiString)stroka);
			  //sprintf(stroka,"n_elem=%d: N_=%6.3f, M_=%6.3f", n_elem+1, N_*1e-3, M_*1e-6);
			  //InfMessage((AnsiString)stroka);
			}
          }
	  //--------------------------------------------------
	  // 21. Предельный прогиб
		 if (flag_check[20] ) {
		   if (data_check->span == 0) { //Вычисляется при РСУ
			 fmax = ABS(5*q_bal_norm*pow(len, 4.0)/(384*Ey*param_sect.Izz)) - data_check->strela;
		   }
		   else {
			 fmax = (ABS(data_check->del_max))- data_check->strela;
			 f_lim = data_check->span/data_check->delta_lim;
		   }
		   if (fmax > 0) {
			  if (krit[20] < (ABS(fmax/f_lim))) {
				  Cp->delta_b = fmax;
				  Cp->delta_ub = f_lim;
			  }
			  MAXNNEL(krit[20], (ABS(fmax/f_lim)), 20);
              //krit[20] = -1;
		   }
		 }
        }
    //--------------------------------------------------------
    // 11. Проверка условной гибкости стенки, п. 8.5.3, 8.5.8, 8.5.16.
		if (flag_check[10]) {
		  double krit_lamb;
          if (sig_1w!=0.0) {
			if (index_105 == 1) {
			  krit_lamb = lambda_w/(5.5*sqrt(Ry/(ABS(sig_1w ))));
			  if (krit[10] < krit_lamb) {
				Cp->krit_lambdaw = 5.5*sqrt(Ry/(ABS(sig_1w)));
				Cp->sigma1w = ABS(sig_1w);
			  }
			  MAXNNEL(krit[10], krit_lamb, 10);
			}
			else {
			  krit_lamb = lambda_w/(6.0*sqrt(Ry/(ABS(sig_1w ))));
			  if (krit[10] < krit_lamb) {
				Cp->krit_lambdaw = 6.0*sqrt(Ry/(ABS(sig_1w )));
				Cp->sigma1w = ABS(sig_1w);
			  }
			  MAXNNEL(krit[10], krit_lamb, 10);
			}
		  }
		}
	//-----------------------------------------------------------
    // 12. Проверка устойчивости стенки, п. 8.5.1, 8.5.3, 8.5.6, 8.5.7, 8.5.8 или по интегральному критерию для переменной высоты стенки
		if (flag_check[11]) {
           double krit_11;
           double M1, M2;
           double a_otsek;

		   if (index_105==0) {  // формула 106 - пластика не допускается     data_check.flag_edge
			 double k12;
			 if (!data_check->flag_step_edge || data_check->edge_step ==0.0) {  // шаг не задан
			   if (sigma_loc < 1.0 ) {
				 //if (data_check->index_nf >0 || Sect_Elem_Group[ngroup].com_sect.dvutavr.n_group >=0)
				 if (Sect_Elem_Group[ngroup].com_sect.dvutavr.n_group >=0)
					k12 = 3.5;
				 else
					k12 = 3.2;
			   }
			   else
				 k12=2.5;
			   krit_11 = lambda_w/k12;
			   if (krit_11 >= 1.0 && !flag_message_1) {
				 flag_message_1 = true;
			#ifdef EMBRAC
				 rc = Application->MessageBox(L"Шаг ребер не задан. Устойчивость стенки оценивается по п. 8.5.1",L"Изгибаемые элементы",
				   MB_OK | MB_ICONWARNING);
			#else
				 rc = Application->MessageBox("Для выполнения проверки устойчивости стенки необходимо задать шаг ребер","Изгибаемые элементы",
				   MB_OK | MB_ICONWARNING);
			#endif
			   }
			   Cp->index_stab_w = 0; // Проверка по 8.5.1
			 }
			 else {   // шаг задан
			   a_otsek = data_check->edge_step;
		   //M1 = M_ - Q_*a_otsek/2;
		   //M2 = M_ + Q_*a_otsek/2;
			   M1 = M_;
			   M2 = M_;

			   if (data_check->flag_vary_sten) {  // переменная высота стенки

				 SECT_DVUTAVR sect0;
				 memcpy(&sect0, &(Sect_Elem_Group[0].com_sect.dvutavr), sizeof(SECT_DVUTAVR));

				 sect0.h += a_otsek * tan(data_check->ugol_var/57.3);

				 krit_11 = CheckStab_teta(&(Sect_Elem_Group[0].com_sect.dvutavr), &(sect0), sigma_loc, data_check->length_XZ[n_elem],
									 M1, M2, Q_, N_, Ry, Rsw, Ey, a_otsek, data_check->index_place_local, data_check->gamma_c);
			   }

			   else { // Постоянная высота стенки
				 krit_11 = CheckStab_norm(&(Sect_Elem_Group[0].com_sect.dvutavr), &(Sect_Elem_Group[0].com_sect.dvutavr),
									 sigma_loc, data_check->length_XZ[n_elem],
									 M1, M2, Q_, N_, Ry, Rsw, Ey, a_otsek, data_check->index_place_local, data_check->gamma_c,
									 &Check_stab_param);

			   }
			   Cp->index_stab_w = 1;
			   Cp->sigma_stab_max = Check_stab_param.sigma_max;
			   Cp->sigma_stab_cr = Check_stab_param.sigma_cr;
			   Cp->tau_stab_max = Check_stab_param.tau_max;
			   Cp->tau_stab_cr = Check_stab_param.tau_cr;
			   Cp->sigma_loc = Check_stab_param.sigma_loc;
			   Cp->sigma_loc_cr = Check_stab_param.sigma_loc_cr;
			   Cp->k12 = 0;
			 }
			 if (krit_11 > krit[11]) {
			   Cp->k12 = k12;
			 }
		   }
		   else {  // пластика допускается Формула 105
			 // Условие п. 8.5.8
			 double tau_m, alfa, sig1, sig2, r_, A1, A2, h1, Dev;

			 tau_m = (ABS(Q_))/(t_*h_);
			 r_ =  MAX(1.0, Ry/Ryw);
			 alfa = Fun_alfa_18(lambda_w, tau_m/Rsw);

			 if (bef_1 == bef_2 && tef_1 == tef_2) {
			  // симметричное сечение
			   krit_11 = (ABS(M_))/(Ry*data_check->gamma_c*hef*hef*t_*(r_*bef_1*tef_1/(h_*t_) + alfa));
			 }
			 else { // моносимметричное сечение
			   if (sigma_comm[0]<0) {
				 sig1 = MIN((ABS(sigma_comm[0])), Ry);
				 sig2 = MIN((ABS(sigma_comm[2])), Ry);
				 A1 = bef_1*tef_1;
				 A2 = bef_2*tef_2;
			   }
			   if (sigma_comm[2]<0) {
				 sig1 = MIN((ABS(sigma_comm[2])), Ry);
				 sig2 = MIN((ABS(sigma_comm[0])), Ry);
				 A1 = bef_2*tef_2;
				 A2 = bef_1*tef_1;
			   }
			  //t и tw в формуле 87 равны
			   h1 = h_*t_/(2*t_)+(A2*sig2 - A1*sig1)/(2*t_*sqrt(Ryw*Ryw-3*tau_m*tau_m));
			   Dev = sig1*A1*h1 + sig2*A2*(h_ - h1)+4*h1*h1*t_*alfa*Ry +
					 h_*t_*(h_ - 2*h1)*sqrt(Ryw*Ryw-3*tau_m*tau_m)*0.5;
			   krit_11 = (ABS(M_))/(Dev*data_check->gamma_c);
			   //Cp->alfa_f = bef_1*tef_1/(h_*t_);
			   //Cp->r_stab = r_;
			   //Cp->alfa_stab = alfa;
			 }
			 if (krit_11 > krit[11]) {
			   Cp->alfa_f = bef_1*tef_1/(h_*t_);
			   Cp->r_stab = r_;
			   Cp->alfa_stab = alfa;
			 }
		   }
		   MAXNNEL(krit[11], krit_11, 11);
		}

	//-------------------------------------------------------------------
	// 13. Проверка поперечных ребрер п. 8.5.9.
		double krit_12 = -1;
		if (flag_check[12]) {
		  if (!data_check->flag_step_edge) {   // проверяется необходимость ребер
		  double del_lamb;
		  if (index_105==1) {  // Пластика допускается, ребра в любом случае должны быть
			  krit_12 = 2;
		  }
		  else {          // пластика не допускается
			  if ((ABS(N_)) < 10.0) {
				del_lamb = 3.2;
				krit_12 = lambda_w/3.2;
			  }
			  else {
				del_lamb = 2.3;
				krit_12 = lambda_w/2.3;   // как для сжато-изгибаемого элемента
			  }
		  }
		  if (krit[12] < krit_12  ) {
			   Cp->del_lamb = del_lamb;
			 //nnel_krit[12] = n_elem_rep;
			 //krit[12] = krit_12;
			 MAXNNEL(krit[12], krit_12, 12);
		  }
		}
		else {  // Проверяется шаг ребер
		  if (data_check->edge_step <1.0) {
			   rc = Application->MessageBox(L"Для выполнения проверки шага поперечных ребер необходимо задать реальную величину шага",L"Изгибаемые элементы",
				 MB_OK | MB_ICONERROR);
			 return rc;
		  }
		  double step_max, lambda_b, lambda_ub;
		  if (lambda_w >= 3.2)
			  step_max = 2*h_;
		  else
			  step_max = 2.5*h_;
		  if (index_105==0) {
			if (sig_1 <0 ) {  // сжат верхний пояс
			  if (!data_check->flag_cont_ext) {
				lambda_b = (data_check->step_ext[n_elem]/bef_1)*sqrt(Ry/Ey);
				lambda_ub = 0.35+0.0032*bef_1/tef_1+(0.76-0.02*bef_1/tef_1)*bef_1/param_sect.Hp;  // Формула 71
				if (lambda_b <= lambda_ub)
				  step_max = 3*h_;
			  }
			}
			if (sig_2 <0 ) {  // сжат нижний пояс
			  if (!data_check->flag_cont_int) {
				lambda_b = (data_check->step_int[n_elem]/bef_2)*sqrt(Ry/Ey);
				lambda_ub = 0.35+0.0032*bef_2/tef_2+(0.76-0.02*bef_2/tef_2)*bef_2/param_sect.Hp;  // Формула 71
				if (lambda_b <= lambda_ub)
				  step_max = 3*h_;
			  }
			}
		  }
		  krit_12 = data_check->edge_step/step_max;
		  //nnel_krit[13] = n_elem_rep;
		  if (krit[12] < krit_12) {
			  Cp->step_max = step_max;
			  Cp->lambda_b = lambda_b;
			  Cp->lambda_ub = lambda_ub;
		  }
		  MAXNNEL(krit[12], krit_12, 12);
		}
	  }
   //-------------------------------------------------
   // 14. Проверка шага поперечных ребер, п. 8.5.9
		if (flag_check[13] && data_check->flag_step_edge)  {  // Не активна
		  Cp->flag_check_step = false;
		  double krit_13;
		  if (data_check->edge_step <1.0) {
			   rc = Application->MessageBox(L"Для выполнения проверки шага поперечных ребер необходимо задать величину шага",L"Изгибаемые элементы",
				 MB_OK | MB_ICONERROR);
			 return rc;
		  }
		  Cp->flag_check_step = true;
		  double step_max, lambda_b, lambda_ub;
		  if (lambda_w >= 3.2)
			  step_max = 2*h_;
		  else
			  step_max = 2.5*h_;
		  if (index_105==0) {
			if (sig_1 <0 ) {  // сжат верхний пояс
			  if (!data_check->flag_cont_ext) {
				lambda_b = (data_check->step_ext[n_elem]/bef_1)*sqrt(Ry/Ey);
				lambda_ub = 0.35+0.0032*bef_1/tef_1+(0.76-0.02*bef_1/tef_1)*bef_1/param_sect.Hp;  // Формула 71
				if (lambda_b <= lambda_ub)
				  step_max = 3*h_;
			  }
			}
			if (sig_2 <0 ) {  // сжат нижний пояс
			  if (!data_check->flag_cont_int) {
				lambda_b = (data_check->step_int[n_elem]/bef_2)*sqrt(Ry/Ey);
				lambda_ub = 0.35+0.0032*bef_2/tef_2+(0.76-0.02*bef_2/tef_2)*bef_2/param_sect.Hp;  // Формула 71
				if (lambda_b <= lambda_ub)
				  step_max = 3*h_;
			  }
			}
		  }
		  krit_13 = data_check->edge_step/step_max;
		  //nnel_krit[13] = n_elem_rep;
		  if (krit[13] < krit_13) {
			  Cp->step_max = step_max;
			  Cp->lambda_b = lambda_b;
			  Cp->lambda_ub = lambda_ub;
		  }
		  MAXNNEL(krit[13], krit_13, 13);
		}
   //-----------------------------------------------------
   /* 15. Проверка ширины поперечных ребер, п. 8.5.9
		if (flag_check[14]) {
		  if (data_check->edge_width == 0) {
			#ifdef EMBRAC
			 rc = Application->MessageBox(L"Для выполнения проверки ширины поперечных ребер необходимо задать ширину ребер",L"Изгибаемые элементы",
				 MB_OK | MB_ICONERROR);
			#else
			 rc = Application->MessageBox("Для выполнения проверки ширины поперечных ребер необходимо задать ширину ребер","Изгибаемые элементы",
				 MB_OK | MB_ICONERROR);
			#endif
			 return rc;
		  }
		  if (data_check->type_edge == 0) {   // одностороннее ребро
			krit[14] = (h_/24 + 40)/data_check->edge_width;
		  }
		  else
			krit[14] = (h_/30 + 25)/data_check->edge_width;
		  nnel_krit[14] = n_elem_rep;

		}
		*/
   //-----------------------------------------------------
   // 16. Проверка толщины поперечных ребер, п. 7.3.3
   /*
		if (flag_check[15]) {
		  if (data_check->edge_thick == 0) {
			#ifdef EMBRAC
			 rc = Application->MessageBox(L"Для выполнения проверки толщины поперечных ребер необходимо задать толщину ребер",L"",
				 MB_OK | MB_ICONERROR);
			#else
			 rc = Application->MessageBox("Для выполнения проверки толщины поперечных ребер необходимо задать толщину ребер","",
				 MB_OK | MB_ICONERROR);
			#endif
			 return rc;

		  }
		  krit[15] = 2*data_check->edge_width*sqrt(Ry/Ey)/data_check->edge_thick;
		  nnel_krit[15] = n_elem_rep;
		}
	*/
   //-----------------------------------------------------
   /* 17. Проверка устойчивости поперечных ребер жесткости в местах приложения сосредоточенных сил, п. 8.5.10.
		if (flag_check[16] && data_check->Local_F_ != 0.0) {
		  double Ar, Izz, i_zz, lambda_, fi_;
		  double krit_51;
		  COMMON_SECT sect_edge;
		  GEOM_PARAM_SECT param_sect_edge;
		  FI_E_PARAM Fi_e_param_e;

		  if (data_check->index_local == 0) {  // нагрузка приложена к внешнему поясу
			Ar = (data_check->edge_thick*data_check->edge_width)*(data_check->type_edge + 1) + 2*0.65*t_*t_*sqrt(Ey/Ry);
			Izz = (data_check->type_edge + 1)*pow(data_check->edge_thick, 3)*data_check->edge_width/12 +
				pow(0.65*t_*sqrt(Ey/Ry), 3)*t_/12;
			i_zz = sqrt(Izz/Ar);
			lambda_ = sqrt(Ry/Ey)*h_/i_zz;
			sect_edge.dvutavr.h1 = t_;
			sect_edge.dvutavr.b1 = 2*0.65*t_*t_*sqrt(Ey/Ry);
			sect_edge.dvutavr.h = data_check->edge_width;
			sect_edge.dvutavr.b =data_check->edge_thick;
			sect_edge.dvutavr.n_group = -1;

			if (data_check->type_edge==0) { // одностороннее ребро
			  sect_edge.dvutavr.h2 = 0;
			  sect_edge.dvutavr.b2 = 0;

			  Get_param_sect_comm(DVUTAVR, &(sect_edge), &param_sect_edge);
			// вид потери устойчивости и тип сечения TAVR или прямоугольник
			// Внецентренно-сжатый элемент, устойчивость из плоскости действия момента
			  Get_fi_e(TAVR_UP, &(sect_edge), data_check->Local_F_*(data_check->edge_width + t_)/2, data_check->Local_F_, 0,
					   h_, &param_sect_edge, Ry, Ey, &Fi_e_param_e);
			  MAXNNEL(krit[16], data_check->Local_F_/(Fi_e_param_e.fi_e*Ar*Ry*data_check->gamma_c), 16);
			}
			else {    // парное ребро
			  sect_edge.dvutavr.h2 = t_;
			  sect_edge.dvutavr.b2 = 2*0.65*t_*t_*sqrt(Ey/Ry);
			 // Центрально-сжатый элемент
			 // Коэффициент устойчивости при центральном сжатии
			  fi_ = Fun_fi_713(RECTANCULAR, lambda_);
			  MAXNNEL(krit[16], data_check->Local_F_/(fi_*Ar*Ry*data_check->gamma_c), 16);
			}
		  }
		}
		*/

		for (int j=0; j<25; j++) {
		  if (krit[j] > krit_bend_max) {
			krit_bend_max = krit[j];
			RSU_bend_max = n_elem;
		  }
		}
		memcpy((char*)&(Sect_Elem_Group[0].com_sect.dvutavr), (char*) &Sect_Elem_Copy, sizeof(SECT_DVUTAVR));
	  }

	  if (krit[12] >= 1 && data_check->type_edge >= 0) {   // подобрать сечение ребер
		  double step_max, lambda_b, lambda_ub;
		  if (lambda_w >= 3.2)
			  step_max = 2*h_;
		  else
			  step_max = 2.5*h_;
		  if (index_105==0) {
			if (sig_1 <0 ) {  // сжат верхний пояс
			  if (!data_check->flag_cont_ext) {
				lambda_b = (data_check->step_ext[n_elem]/bef_1)*sqrt(Ry/Ey);
				lambda_ub = 0.35+0.0032*bef_1/tef_1+(0.76-0.02*bef_1/tef_1)*bef_1/param_sect.Hp;  // Формула 71
				if (lambda_b <= lambda_ub)
				  step_max = 3*h_;
			  }
			}
			if (sig_2 <0 ) {  // сжат нижний пояс
			  if (!data_check->flag_cont_int) {
				lambda_b = (data_check->step_int[n_elem]/bef_2)*sqrt(Ry/Ey);
				lambda_ub = 0.35+0.0032*bef_2/tef_2+(0.76-0.02*bef_2/tef_2)*bef_2/param_sect.Hp;  // Формула 71
				if (lambda_b <= lambda_ub)
				  step_max = 3*h_;
			  }
			}
		  }

		Cp->edge_param[1][0] = edge_param[1][0] =Round(step_max, 0);    // шаг
		if (data_check->type_edge==0) {
		   Cp->edge_param[1][1] = edge_param[1][1] = (hef/24 + 40); // ширина одностороннего
		}
		else {
		   Cp->edge_param[1][1] = edge_param[1][1] = (hef/30 + 25); // ширина парного
		}
		Cp->edge_param[1][2] = edge_param[1][2] = 2*Cp->edge_param[1][1]*sqrt(Ry/Ey); // ширина парного
	  }
	  n_elem = ListElem_RSU[RSU_bend_max];
		  Cp->num_elem[3] = n_elem;
			Cp->hw = h_;
			Cp->hef = hef;
			Cp->RSU[2][0] = Elem_RSU[RSU_bend_max][0];
			Cp->RSU[2][2] = Elem_RSU[RSU_bend_max][2];
			Cp->RSU[2][3] = Elem_RSU[RSU_bend_max][3];
			Cp->RSU[2][4] = Elem_RSU[RSU_bend_max][4];
			Cp->RSU[2][5] = Elem_RSU[RSU_bend_max][5];
			Cp->RSU[2][6] = M_c*1e-6;
			strcpy(Cp->Steel, MaterPropU_prof.title);
			Cp->Ryn = steel_param.Ryn;
			Cp->bef = bef_1;
			Cp->Ry = Ry;
			Cp->Ryw = Ryw;
			Cp->Rs = Rsw;
			Cp->lambdaX = lambdaX[n_elem];
			Cp->lambdaY = lambdaY[n_elem];
			Cp->lambda_x = lambda_x[n_elem];
			Cp->lambda_y = lambda_y[n_elem];
			Cp->lambda_w = lambda_w;
			Cp->lambda_uw = lambda_uw;
			Cp->lambda_f1 = lambda_f1;
			Cp->lambda_f2 = lambda_f2;
			Cp->lambdaBF1 = Lambda_f1Y;
			Cp->lambda_bf1 = lambda_f1Y;
			Cp->lambdaBF2 = Lambda_f2Y;
			Cp->lambda_bf2 = lambda_f2Y;
			Cp->fi_x = fi_x[n_elem];
			Cp->fi_y = fi_y[n_elem];
			Cp->Wc = Wc;
			Cp->Wt = Wt;
			Cp->Wx_min = Wx_min;
			Cp->Wy_min = Wy_min;
			memcpy(&(Cp->Sect_Elem), &(Sect_Elem_Group[0]), sizeof(DATA_SECT_SCAD));
			memcpy(&(Cp->param_sect), &(param_sect), sizeof(GEOM_PARAM_SECT));
			memcpy(&(Cp->param_netto), &(param_netto), sizeof(GEOM_PARAM_SECT));
			Cp->fi_e = Fi_e_param.fi_e;
			Cp->fi_b = Fi_y_param.fi_b;
			Cp->fi_y = Fi_y_param.fi_y;   // Fi_y_param.fi_y = fi_y
			Cp->cfi_y = Fi_y_param.fi_y*Fi_y_param.c_;
			Cp->m_ef = Fi_e_param.m_ef;
			Cp->lambda_b1 = (data_check->step_ext[n_elem]/bef_1)*sqrt(Ry/Ey);
			Cp->lambda_b2 = (data_check->step_int[n_elem]/bef_2)*sqrt(Ry/Ey);
			//Cp->mx = m_x;
			Cp->m_exc = m_exc;
			Cp->Ad = Ad;
			//Cp->alfa = alfa_sig;
			//Cp->sigma_max = sig_max;
			//Cp->tau_max = tau_max;
			Cp->cx_ = cx_;
			Cp->cy_ = cy_;
			Cp->n_ = n_;
			double h_sect = Sect_Elem_Group[ngroup].com_sect.dvutavr.h + Sect_Elem_Group[ngroup].com_sect.dvutavr.h1 +
					 Sect_Elem_Group[ngroup].com_sect.dvutavr.h2;
			double b_sect = Sect_Elem_Group[ngroup].com_sect.dvutavr.b1;
			Cp->hsect = h_sect;
			Cp->bsect = b_sect;

			// Проверка поясных швов
			if (flag_check[21] && data_check->index_nf >=0) {
			   double krit_21 = CheckWeld_CV(data_check, Ry, 0, NRSU-1, fi_x, Checked_weld, &n_elem_rep);
			   MAXNNEL(krit[21], krit_21, 21);
			}

			memcpy((char*)&Data_check_U, (char*)data_check, sizeof(DATA_CHECK_U));

			return 0;


 }













