//--------------------------------------------------------------------------
// Внецентренно-растянутые (растянуто-изгибаемые) трубы
if (data_check->index_type == TENSION_BENDING) {

      FI_Y_PARAM Fi_y_param;
      FI_E_PARAM Fi_e_param;
      FI_E_PARAM Fi_eY_param;
      double sigma_loc;
	  double lef;
      double alfa_w, lambda_ux, lambda_uy, Qfic;
      double excentr;
	  double m_x;  // Эксцентриситет для потери устойчивости из плоскости
	  double m_exc;   // Эксцентриситет для потери устойчивости в плоскости (m)
      double sig_1, sig_2;
      double sig_1w, sig_2w;
      double sig_1wY, sig_2wY;
	  double lambda_uw; // наибольшая условная гибкость стенки
	  double lambda_uf; // наибольшая условная гибкость поясов
	  double tau_m, tau_y;
      double hd, Ad, delta_fi, Ar, lambda_uw20;
      bool flag_check[30];
	  double krit_1, krit_2;
      double Af1, Nf1, Af2, Nf2;
      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;
	  double length, lambda, i_f;
      int j_, m, k, n_RSU, list_RSU[10];
      double x_;
      int i_current, n_elem; // текущий номер элемента
      int n_elem_rep; // текущий номер элемента
      int i;
	  char stroka[120];
      double n_, cx_, cy_, beta;
      double sig_N, sig_M, sig_ext, sig_int, sig_M_y, sig_sum;
      double krit_0;
      double NatMmax, Mc_at;
      double N_at6, c_at6, fy_at6, M_at6, Mc_at6, Ar_at6;
      double N_at5, fy_at5, M_at5, Ar_at5;
	  double c_at5, fe_at5, lambda_uw_at5;
      double Qy;
      CHECK_ELEM_PARAM_U *Cp;
      CHECK_ELEM_PARAM_CB_U *Cp_cb;
      double m_excY, excentrY, lambda_uwY, lambda_uw20Y;
      double hdY, AdY, ArY, Wcy, Wty, k_y;
	  double alfa_sig;   // (sig1-sig2)/sig1;
	  double Q_1, tau_max, sig_max;

      Cp = &(Check_param);
      Cp_cb = &(Check_param_cb);

    // Зануление критериев
    for (i=0; i<data_check->num_krit; i++) {
      krit[i] = -1;
      nnel_krit[i] = -1;
      flag_check[i] = data_check->Checked[i];
    }
    // Вычисление 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 Nmax = 0;
    double alfa_yf1_max = 0;
    double alfa_yf2_max = 0;
    Cp->sigma_max = 0;
    Cp->tau_max = 0;
    Cp->n_RSU = 3;
    Cp->alfa_f = Af/(t_*h_);
    i_current = -1;
	krit_0 = 0;
    Cp->hef1 = 0;
    Cp->hw1 = 0;
    //--------------------------------------------------------------------------
    // коэффициент потери устойчивости при центральном сжатии для поясов
	//fi_f1 = Round(Fun_fi_713(RECTANCULAR, lambda_f1Y), 2);
	//fi_f2 = Round(Fun_fi_713(RECTANCULAR, lambda_f2Y), 2);

	index_105 = 1;  // Начальное значение для группы элементов

    for(m=0; m<2; m++) {
	  for (i = 0; i<NRSU; i++) {
        n_elem = ListElem_RSU[i];
		n_elem_rep = n_elem;
		if (!CheckElem[i][4])
			continue;

        N_ = Elem_RSU[i][0]*1000;
        Q_ = Elem_RSU[i][3]*1000;
        Qy = Elem_RSU[i][5]*1000;
		M_ = Elem_RSU[i][2]*1e6;
		M_y = Elem_RSU[i][4]*1e6;

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

       // sprintf(stroka,"M_=%8.1f", Elem_RSU[i][2]);
       // InfMessage("Comp-Bend="+(AnsiString)stroka);

        if (fi_y[n_elem] < fi_x[n_elem])
          lambda_cent = lambda_y[n_elem];
        else
         lambda_cent = lambda_x[n_elem];

	 //   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 = M_;

        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;

        // Минимальное и максимальное напряжение в стенке от действия момента M_
		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);
        // Минимальное и максимальное напряжение в стенке от действия момента M_y
        sig_1 = N_/param_sect.Ar + M_y*(param_sect.Yct - tef_1 - param_sect.Rad)/param_sect.Iyy;
        sig_2 = N_/param_sect.Ar - M_y*(param_sect.Wsect - param_sect.Yct - tef_2 - param_sect.Rad)/param_sect.Iyy;
		sig_1wY = MIN(sig_1, sig_2);
        sig_2wY = MAX(sig_1, sig_2);

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

		if (N_ != 0) {
          excentr = ABS(M_/N_);
          m_exc = excentr*param_sect.Ar/Wc;  // для устойчивости в плоскости момента

          excentr = ABS(M_c/N_);
          m_x = excentr*param_sect.Ar/Wc;  // для устойчивости из плоскости момента
		}
        else {
          m_x = 20;
          m_exc = 20;
        }
        if (N_ != 0) {
          excentrY = ABS(M_y/N_);
		  m_excY = excentr*param_sect.Ar/WcY;  // для устойчивости в плоскости момента M_y
		}
        else {
          m_excY = 20;
        }

        // Вычисление fi_e - устойчивость в плоскости действия момента
		Get_fi_e(RECT_TUBE, &(section_tube), M_, N_, 0,
                   data_check->length_XZ[n_elem], &param_sect, Ry, Ey, &Fi_e_param);

        // Вычисление fi_e - устойчивость в плоскости действия момента M_y
        Get_fi_e(RECT_TUBE, &(section_tube), M_y, N_, 0,
                   data_check->length_YZ[n_elem], &param_sect, Ry, Ey, &Fi_eY_param);

        // Вычисление fi_b
        double fi_b = Get_fi_b_centr(RECT_TUBE, &(section_tube), M_c, N_,
						data_check->length_YZ[n_elem], data_check->step_ext[n_elem], data_check->step_int[n_elem],
                        &param_sect, Ry, Ey);

        // Вычисление fi_e и fi_b для изгибаемых элементов
		Get_c_fi_y(RECT_TUBE, &(section_tube), M_c, 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);
        }
        // Вычисление k_y
		if (lambdaX[n_elem]/lambda_ux <= alfa_x || lambdaY[n_elem]/lambda_uy <= alfa_y)
          k_y = 1.0;
        else {
          fi_m = MIN(Fi_eY_param.fi_e, Fi_y_param.c_*Fi_y_param.fi_y);
          if ((ABS(N_)) <= 1e-1)
             k_y = 1.25;
          else
			 k_y = MIN(sqrt(fi_m*param_sect.Ar*Ry/(ABS(N_))), 1.25);
        }
        // Вычисление lambda_uw для плоскости XZ
        // lambda_uw при mx=20 по п. 8.5.8
        lambda_uw20 = Fun_lambda_uw20(M_, Q_, Ry, Ry, Ey, Rs, 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);

		// Вычисление lambda_uwY для плоскости XY
		// lambda_uw при mx=20 по п. 8.5.8
        lambda_uw20Y = Fun_lambda_uw20(M_y, Q_y, Ry, Ry, Ey, Rs, bef, t_, AfY, data_check->gamma_c);
        // Среднее касательное напряжение
        tau_m = (ABS(Q_y))/(b_*t_);
        delta_fi = Fi_y_param.c_*Fi_y_param.fi_y - Fi_eY_param.fi_e;
        // Предельная гибкость по табл. 22

        lambda_uwY = Fun_lambda_uw_cent_bend(type_sect, lambda_y[n_elem], m_excY, sig_1wY, sig_2wY, tau_m, delta_fi,
                    Ry, data_check->gamma_c, lambda_uw20Y);

        #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 = MIN(hef, 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 - (hef - hd)*t_;

		hdY = MIN(bef, t_*(lambda_uwY - (lambda_wY/lambda_uwY - 1)*(lambda_uwY - 1.2 - 0.15*(MIN(lambda_y[n_elem], 3.5))))*sqrt(Ey/Ry));
		// Редуцированная площадь
        AdY = param_sect.Ar - (bef - hdY)*t_;

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

            tau_m = (ABS(Q_))/(t_*h_);
            r_ = 1.0;
            alfa = Fun_alfa_18(lambda_w, tau_m/Rs);

            // симметричное сечение
            krit_8_5_8 = (ABS(M_))/(Ry*data_check->gamma_c*hef*hef*t_*(r_*bef_1*tef_1/(h_*t_) + alfa));
          }
		//-----------------------------------------------------------------
        // Проверка местной устойчивости сжатого пояса, п. 8.5.18.
          {
            double lambda_f, lambda_uf, sig_f1, sig_f2, s1, s2;
            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)));
            s1 = MIN(sig_f1, sig_f2);
            s2 = MAX(sig_f1, sig_f2);
            alfa_sig = (s1 - s2)/s1;
            if (sig_f1 < 0 ) {
              lambda_uf = 0.5*sqrt(Ry/(ABS(sig_f1)));
			  krit_8_5_18 = lambda_f/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_f/lambda_uf);
            }
          }
		  tau_m = (ABS(Q_))/(2*t_*h_);
		  tau_y = 0;
          sig_N = (ABS(N_))/param_netto.Ar;

          // По умолчанию пластика не допускается, должна использоваться ф. 106
          index_105 = 0;
          // Условия применимости ф. 105 (index_105 = 1)
          // Условие п. 9.1.1
          if (steel_param.Ryn <= 440 && data_check->index_class != 1 &&
              tau_m < 0.5*Rs && !data_check->flag_dynamic_load &&
              sig_N > 0.1*Ry) {

                index_105 = 1;
          }
          // Если sig_N <= 0.1*Ry
          if (steel_param.Ryn <= 440 && data_check->index_class != 1 &&
              tau_m < 0.5*Rs && !data_check->flag_dynamic_load &&
              sig_N <= 0.1*Ry) {
                // Если выполняются условия п. 8.5.8 и 8.5.18
              if (krit_8_5_8 <= 1.0 && krit_8_5_18 <=1.0)

                index_105 = 1;
          }
          //--------------------------------------------------------------------------------
          // Применение ф. 105
		  if (index_105==1) {  // Формула 105
             double alfa_f;

			  beta = 1;
              // Получить значение коэффициентов n, cx, cy по табл Е.1
              Get_n_cx_cy(0, Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), &n_, &cx_, &cy_);

              sig_N = (ABS(N_))/param_netto.Ar;
              sig_M = (ABS(M_))/(cx_*beta*Wx_min);
              sig_M_y =(ABS(M_y))/(cy_*Wy_min);

              krit_105 = pow(sig_N/(Ry*data_check->gamma_c), n_) + sig_M/(Ry*data_check->gamma_c) +
              sig_M_y/(Ry*data_check->gamma_c) ;
			  if (krit[0] < krit_105) {
                krit[0] = krit_105;
				Cp->n_pow = n_;
				Cp->beta = beta;
				Cp->cx = cx_;
				Cp->cy = cy_;
				Cp->N_105 = ABS(N_);
				nnel_krit[0] = n_elem_rep;
              }

              if (krit[0] > krit_0) {
                krit_0 = krit[0];
                #ifdef INFMESSAGE_1
                InfMessage("Формула 105: n_elem="+IntToStr(n_elem)+", N ="+FloatToStr(Round(N_/1000, 1))+
                           ", M ="+FloatToStr(Round(M_/1e6, 1))+
                           ", M_y ="+FloatToStr(Round(M_y/1e6, 1))+ "n_="+FloatToStr(Round(n_, 2))+
                          "cx_="+FloatToStr(Round(cx_, 2))+ "cy_="+FloatToStr(Round(cy_, 2)));
                InfMessage("sig_N ="+FloatToStr(Round(sig_N,1))+", sig_M ="+FloatToStr(Round(sig_M,1))+
                     ", sig_M_y ="+FloatToStr(Round(sig_M_y,1)));
                InfMessage("krit_0 =" + FloatToStr(Round(krit_0, 2)));
				#endif
              }
          }
		  else {
              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)));
              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 (krit[0] < krit_106) {
				krit[0] = krit_106;
				Cp->N_ = ABS(N_);
				nnel_krit[0] = n_elem_rep;
              }

			  index_105 = 0;
              if (krit[0] > krit_0) {
				krit_0 = krit[0];
                #ifdef INFMESSAGE_1
                InfMessage("Формула 106: n_elem="+IntToStr(n_elem)+", N ="+FloatToStr(Round(N_/1000, 1))+", M ="+FloatToStr(Round(M_/1e6, 1))+
                     ", M_y ="+FloatToStr(Round(M_y/1e6, 1)));
                InfMessage("sig_N ="+FloatToStr(Round(sig_N,1))+", sig_ext ="+FloatToStr(Round(sig_ext,1))+
                     ", sig_int ="+FloatToStr(Round(sig_int,1)));
                InfMessage("krit_0 =" + FloatToStr(Round(krit_0, 2)));
				#endif
              }
          }
		  if (m==0 && N_ > Nmax) {
			Nmax = 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 (m==0 && (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 (N_ >= Nmax) {

			Nmax = 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;

            Cp_cb->nelem = n_elem_rep;
            Cp_cb->hw = h_;
			Cp_cb->hef = hef;
			Cp_cb->bef = bef_1;
            Cp_cb->lambdaX = lambdaX[n_elem];
            Cp_cb->lambdaY = lambdaY[n_elem];
            Cp_cb->lambda_x = lambda_x[n_elem];
			Cp_cb->lambda_y = lambda_y[n_elem];
			Cp_cb->lambda_f = lambda_f;
			Cp_cb->lambda_w = lambda_w;
			Cp_cb->lambda_uw = lambda_uw;
			Cp_cb->lambda_uf = lambda_uf;
			Cp_cb->lambda_f1 = 0;
            Cp_cb->lambda_f2 = 0;
			//Cp_cb->lambdaBF1 = Lambda_f1Y;
			//Cp_cb->lambda_bf1 = lambda_f1Y;
			//Cp_cb->lambdaBF2 = Lambda_f2Y;
			//Cp_cb->lambda_bf2 = lambda_f2Y;
            Cp_cb->fi_x = fi_x[n_elem];
            Cp_cb->fi_y = fi_y[n_elem];
            Cp_cb->Wc = Wc;
            Cp_cb->Wt = Wt;
			Cp_cb->Wx_min = Wx_min;
			Cp_cb->Wy_min = Wy_min;
			Cp->A_netto = param_sect.Ar;
			memcpy(&(Cp_cb->Sect_Elem), &(Sect_Elem_Group[0]), sizeof(DATA_SECT_SCAD));
            memcpy(&(Cp_cb->param_sect), &(param_sect), sizeof(GEOM_PARAM_SECT));
            memcpy(&(Cp_cb->param_netto), &(param_netto), sizeof(GEOM_PARAM_SECT));
            Cp_cb->fi_e = Fi_e_param.fi_e;
            Cp_cb->fi_b = Fi_y_param.fi_b;
			Cp_cb->fi_y = Fi_y_param.fi_y;   // Fi_y_param.fi_y = fi_y
			Cp_cb->cfi_y = Fi_y_param.fi_y*Fi_y_param.c_;
			Cp_cb->m_ef = Fi_e_param.m_ef;
			Cp_cb->lambda_b1 = (data_check->step_ext[n_elem]/bef_1)*sqrt(Ry/Ey);
			Cp_cb->lambda_b2 = (data_check->step_int[n_elem]/bef_2)*sqrt(Ry/Ey);
            Cp_cb->mx = m_x;
            Cp_cb->m_exc = m_exc;
            Cp_cb->Ad = Ad;
            Cp_cb->alfa = alfa_sig;
			Cp_cb->sigma_max = sig_max;
			Cp_cb->tau_max = tau_max;
			Cp_cb->cx_ = cx_;
			Cp_cb->cy_ = cy_;
            Cp_cb->n_ = n_;
          }
		  if (m==0 && (ABS(M_)) > Mmax) {
            Mmax = ABS(M_);
            NatMmax = N_;
   			Cp->Mx = M_;
			Cp->My = M_y;
			Cp->Qy = Q_;
			Cp->Qx = Q_y;
			Mc_at = M_c;
			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->Ry = Ry;
			Cp->Ryw = Ry;
			Cp->Rs = Rs;
            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_f = lambda_f;
			Cp->lambda_f1 = 0;
			Cp->lambda_uw = lambda_uw;
			Cp->lambda_uf = lambda_uf;
			Cp->lambda_f2 = 0;
			//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->tw = thick_prof;
			Cp->tf = thick_prof;
			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_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_;
          }
		  Cp->index_105 = Cp_cb->index_105 = index_105;
		  Cp->Ryn = steel_param.Ryn;
		  Cp->hsect = h_;
		  Cp->bsect = b_;
		  Cp->diametr = h_;
		  Cp->bef = bef;
		  Cp->hef = hef;
		  Cp->Ry = Ry;

		  continue;
		}
	//------------------------------------------------------
	// 2. Проверка стенки на действие поперечной силы Qz, п. 8.2.1, ф. (42)",
		if (flag_check[1]) {

		  //Qfic = GetQfic(Ey, Ry, N_, fi_x[n_elem]);        // - используется коэффициент fi_x, полученный для центрального сжатия
		  //Q_1 = MAX((ABS(Q_)), Qfic);

		  tau_max = Q_*param_netto.Sx[0]/(param_netto.Izz*2*t_);
		  double krit_1 = tau_max/(Rs*data_check->gamma_c);

   		  if (krit_1 > krit[1]) {
			Cp->Qy = Q_1;
			Cp->Sx = param_netto.Sx[0];
			Cp->Iy = param_sect.Iyy;
			Cp->Ix = param_sect.Izz;
			Cp->tw = t_;
		  }
		  MAXNNEL(krit[1], krit_1, 1);
		}
  //------------------------------------------------------
		// 3. Проверка стенки на действие поперечной силы Qy, п. 8.2.1, ф. (42)",
		if (flag_check[2]) {

		  //Qfic = GetQfic(Ey, Ry, N_, fi_x[n_elem]);        // - используется коэффициент fi_x, полученный для центрального сжатия
		  //Q_1 = MAX((ABS(Qy)), Qfic);

		  tau_max = Q_*param_netto.Sy[0]/(param_netto.Iyy*2*t_);

		  MAXNNEL(krit[2], tau_max/(Rs*data_check->gamma_c), 2);
		}
		// 4. Расчет на прочность стенки не укрепленной ребрами жесткости, при действии местного напряжения,
		if (flag_check[3]) {
		//    а также в опорных сечениях, п. 8.2.2, ф. (46)
		   if (krit[3] < sigma_loc/(Ry*data_check->gamma_c)) {
			 krit[3] = sigma_loc/(Ry*data_check->gamma_c);
			 nnel_krit[3] = n_elem_rep;
		   }
		}
		// 5. Расчет на прочность стенки при одновременном действии нормальной силы, момента и поперечной силы, п. 8.2.1 ф. (44)
		if (flag_check[4]) {
		  double sig_x1, sig_x2, sig_y1, sig_y2, tau_xy0, tau_xy1, tau_xy2, krit_4;
		 // знак момента: 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_4 = MAX(0.87*sqrt(sig_x1*sig_x1 - sig_x1*sig_y1 + sig_y1*sig_y1 + 3*tau_xy1*tau_xy1)/(Ry*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*data_check->gamma_c));
		  krit_4 = MAX(krit_4, tau_xy0/(Rs*data_check->gamma_c));
		  MAXNNEL(krit[4], krit_4, 4);

		 // Для момента My
		  sig_x1 = N_/param_netto.Ar - M_y*(param_netto.Yct - tef_1)/param_netto.Iyy;
		  sig_x2 = N_/param_netto.Ar + M_y*(param_netto.Wsect - param_netto.Yct - tef_2)/param_netto.Iyy;
		  // пока sigma_loc приложена только в плоскости XZ
		  switch (data_check->index_local) {
			case 3:
			  sig_y1 = -sigma_loc - data_check->q_ext*1000/(t_);
			  sig_y2 = 0;
			break;
			case 4:
			  sig_y1 = -data_check->q_ext*1000/(t_);
			  sig_y2 = sigma_loc;
			break;
			case 5:
			  sig_y1 = -data_check->q_ext*1000/(t_);
			  sig_y2 = 0;
			break;
			default:
			  sig_y1 = 0;
			  sig_y2 = 0;
		  }

		  //
		  tau_xy0 = (ABS(Qy))*param_netto.Sy[0]/(param_netto.Iyy*t_);
		  tau_xy1 = (ABS(Qy))*param_netto.Sy[1]/(param_netto.Iyy*t_);
		  tau_xy2 = (ABS(Qy))*param_netto.Sy[2]/(param_netto.Iyy*t_);
		  krit_4 = MAX(0.87*sqrt(sig_x1*sig_x1 - sig_x1*sig_y1 + sig_y1*sig_y1 + 3*tau_xy1*tau_xy1)/(Ry*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*data_check->gamma_c));
		  krit_4 = MAX(krit_4, tau_xy0/(Rs*data_check->gamma_c));
		  MAXNNEL(krit[4], krit_4, 4);
		}
	   // 6. Расчет на прочность растянутого волокна, п. 9.1.3, ф.(107)
		if (flag_check[5]) {
		  double Wm, delta;
		  if (steel_param.Ryn > 440) {
			Wm = param_netto.Izz/param_netto.Zct;
			delta = 1 - 0.1*(ABS(N_))*lambda_x[n_elem]*lambda_x[n_elem]/(param_sect.Ar*Ry);
			MAXNNEL(krit[5], (data_check->koeff_material_nadeghn/(Ru*data_check->gamma_c))*
					   (ABS(N_/param_netto.Ar + (ABS(M_))))/(delta*Wm), 4);
		  }
		}
 		// Определение коэффициента 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;
		  // Получить значение коэффициентов n, cx, cy по табл Е.1
		Get_n_cx_cy(0, Sect_Elem_Group[0].type_sect, &(Sect_Elem_Group[0].com_sect), &n_, &cx_, &cy_);

		// 7. Устойчивость при действии момента Mz (в вертикальной плоскости), п. 9.2.10 ф.(120)
		if (flag_check[6]  ) {
		  double delta_x, fi_ey, krit_6, Wm;
		  if ((ABS(M_))>100) {
			if (lambda_w > k_x*lambda_uw) {
				Ar = Ad;
			}
			else
			  Ar = param_sect.Ar;
			delta_x = 1 - 0.1*(ABS(N_))*lambda_x[n_elem]*lambda_x[n_elem]/(param_sect.Ar*Ry);
			fi_ey = Fi_e_param.fi_e;
			Wm = param_netto.Izz/param_netto.Zct;
			krit_6 = ((ABS(N_))/(fi_ey*Ar) + (ABS(M_))/(cx_*delta_x*Wm))/(Ry*data_check->gamma_c);
			MAXNNEL(krit[6], krit_6, 6);
		  }
		}

		if (flag_check[7]) {
		// 8. Устойчивость при действии момента My (в горизонтальной плоскости), п. 9.2.10 ф.(121)
		  double delta_y, fi_ex, krit_7, Wmy;

		  if ((ABS(M_y))>100) {
			if (lambda_wY > k_x*lambda_uwY) {
				ArY = AdY;
			}
			else
				ArY = param_sect.Ar;
			delta_y = 1 - 0.1*(ABS(N_))*lambda_y[n_elem]*lambda_y[n_elem]/(param_sect.Ar*Ry);

			fi_ex = Fi_eY_param.fi_e;
			Wmy = param_netto.Iyy/param_netto.Yct;
			krit_7 = ((ABS(N_))/(fi_ex*Ar) + (ABS(M_y))/(cy_*delta_y*Wmy))/(Ry*data_check->gamma_c);
			MAXNNEL(krit[7], krit_7, 7);
		  }

		}
		if (flag_check[8] ) {
		// 9 Необходимость укрепления стенки поперечными ребрами жесткости п. 7.3.3.
			MAXNNEL(krit[8],lambda_w/2.3, 8);
		}
		if (flag_check[9]) {
		// 10. Проверка устойчивости стенки
		  if (Ar == Ad)
			 krit[9] = MAX(krit[9], 0);
		  else
			 MAXNNEL(krit[9], lambda_w/(k_x*lambda_uw), 9);
		  if (ArY == AdY)
			 krit[9] = MAX(krit[9], 0);
		  else
			 MAXNNEL(krit[9], lambda_wY/(k_y*lambda_uwY), 9);
		}
		if (flag_check[10]) {
		// 11. Проверка местной устойчивости внешнего пояса, п. 9.4.7.
		  double lambda_uf1, lambda_uf20, k_x0, sig_f1;
		  if (sigma_comm[0] < 0) {
			  // Вычисление lambda_uf20
			  sig_f1 = ABS(N_/param_netto.Ar - M_*(param_netto.Zp)/param_netto.Izz);
			  lambda_uf20 = Fun_lambda_uf20(index_105, Ry, sig_f1, lambda_uw20);

			  lambda_uf1 = Fun_lambda_uf_cent_bend(Sect_Elem_Group[0].type_sect, lambda_cent, lambda_x[n_elem], lambda_uf20, m_x, Ry);

			  if ((ABS(N_))/param_netto.Ar<=0.1*Ry)
				k_x0 = 1.0;
			  else
				k_x0 = k_x;
		#ifdef INFMESSAGE
		InfMessage("lambda_f1 = "+FloatToStr(Round(lambda_f1, 3))+", lambda_uf1 = "+FloatToStr(Round(lambda_uf1, 3)));
		InfMessage("krit_16 = "+FloatToStr(Round(lambda_f1/(k_x0*lambda_uf1), 3)));
		#endif
			  MAXNNEL(krit[10], lambda_f/(k_x0*lambda_uf1), 10);
		  }
		  //else
		  //  krit[10] = MAX(krit[10], -1);
		}
		if (flag_check[10]) {
		// 12. Проверка местной устойчивости внутреннего пояса, п. 9.4.7.
		  double lambda_uf2, lambda_uf20, k_x0, sig_f2;

		  if (sigma_comm[2] < 0) {
			  sig_f2 = ABS(N_/param_netto.Ar + M_*(param_netto.Hp - param_netto.Zp)/param_netto.Izz);
			  lambda_uf20 = Fun_lambda_uf20(index_105, Ry, sig_f2, lambda_uw20);
			  lambda_uf2 = Fun_lambda_uf_cent_bend(Sect_Elem_Group[0].type_sect, lambda_cent, lambda_x[n_elem], lambda_uf20, m_x, Ry);
			  if ((ABS(N_))/param_netto.Ar<=0.1*Ry)
				k_x0 = 1.0;
			  else
				k_x0 = k_x;
		#ifdef INFMESSAGE
		InfMessage("lambda_f2 = "+FloatToStr(Round(lambda_f2, 3))+", lambda_uf2 = "+FloatToStr(Round(lambda_uf2, 3)));
		InfMessage("krit_17 = "+FloatToStr(Round(lambda_f2/(k_x0*lambda_uf2), 3)));
		#endif
			  MAXNNEL(krit[10], lambda_f/(k_x0*lambda_uf2), 10);
		  }
		  //else
		  //  krit[11] = MAX(krit[11], -1);
		}

		Cp->k_ = k_;

		if (flag_check[12]) {
		// 12. Проверка предельной гибкости в плоскости момента M_, табл. 32
		  if (krit[12] < lambdaX[n_elem]/(k_*lambda_ux)) {
			 Cp->lambdaX = lambdaX[n_elem];
			 Cp->lambda_ux = lambda_ux;
		  }
		  MAXNNEL(krit[12], lambdaX[n_elem]/(k_*lambda_ux), 12);
		}
		// 18. Проверка предельной гибкости в плоскости момента M_y, табл. 33
		if (flag_check[13]) {  // постоянная высота стенки
		  if (krit[12] < lambdaY[n_elem]/(k_*lambda_uy)) {
			Cp->lambdaY = lambdaY[n_elem];
			Cp->lambda_uy = lambda_uy;
		  }
		  MAXNNEL(krit[13], lambdaY[n_elem]/(k_*lambda_uy), 13);
		}

		if (flag_check[14] || flag_check[15]) {
		  rc = 0;
		  if (!data_check->flag_cont_ext || !data_check->flag_cont_int) {
			if (data_check->Qu_ == 0) {
			  rc = 1;
			}
		  }
		  else {
			if (data_check->q_u_ == 0) {
			  rc = 1;
			}
		  }
		  if (rc>0) {
		  #ifdef EMBRAC
			Application->MessageBox(L"Для выполнения проверок 15 и 16 должны быть заданы предельные значения несущей способности закрепляющих элементов",
										L"Сжато-изгибаемые элементы", MB_OK | MB_ICONERROR);
		  #else
			Application->MessageBox("Для выполнения проверок 15 и 16 должны быть заданы предельные значения несущей способности закрепляющих элементов",
									"Сжато-изгибаемые элементы", MB_OK | MB_ICONERROR);
		  #endif
			return rc;
		  }
		}
		if (flag_check[14]) {
		// 15. Проверка элементов, закрепляющих внешний пояс на Qfic, п. 8.4.5
		  double N_ext, krit_14, fi, lambda_r;
		  if (sigma_comm[0] < 0) {
			N_ext = bef_1*tef_1*Ry + 0.25*t_*h_*Ry;
			lambda_r = (data_check->step_ext[n_elem]/(0.2887*bef_1))*sqrt(Ry/Ey);
			// Вычисление fi - коэффициент устойчивости внешнего пояся в плоскости поясов при центальном сжатии
			fi = Round(Fun_fi_713(RECTANCULAR, lambda_r, 0), 3);

			Qfic = GetQfic(Ey, Ry, N_ext, fi);
			if (!data_check->flag_cont_ext) {
			  krit_14 = Qfic/(data_check->Qu_*1000);
			}
			else {
			  krit_14 = 3*Qfic/(data_check->len_ext*data_check->q_u_*1000);
			}
			MAXNNEL(krit[14], krit_14, 14);
		  }
		  else {
			krit[14] = MAX(krit[14], -1);
		  }
		}
		if (flag_check[15]) {
		// 16. Проверка элементов, закрепляющих внутренний пояс на Qfic, п. 8.4.5
		  double N_int, krit_15, fi, lambda_r;
		  if (sigma_comm[2] < 0) {
			N_int = bef_2*tef_2*Ry + 0.25*t_*h_*Ry;
			lambda_r = (data_check->step_int[n_elem]/(0.2887*bef_2))*sqrt(Ry/Ey);
			// Вычисление fi - коэффициент устойчивости внешнего пояся в плоскости поясов при центальном сжатии
			fi = Round(Fun_fi_713(RECTANCULAR, lambda_r, 0), 3);
			Qfic = GetQfic(Ey, Ry, N_int, fi);
			if (!data_check->flag_cont_int) {
			  krit_15 = Qfic/(data_check->Qu_*1000);
			}
			else {
			  krit_15 = 3*Qfic/(data_check->len_int*data_check->q_u_*1000);
			}
			MAXNNEL(krit[15], krit_15, 15);
		  }
		  else {
			krit[15] = MAX(krit[15], -1);
		  }
		}
	  }
	}


 }








