   //--------------------------------------------------------------------------
   // Центрально-сжатые
   //--------------------------------------------------------------------------

   if (data_check->index_type == CENTR_COMPRESSION) {
	  double Ad, Ar, hd, k_x, k_y;
	  double Ad_[100];
	  double k_;
	  double alfa, lambda_ux, lambda_uy, Qfic;
	  double lambda_uw[100]; // наибольшая условная гибкость стенки
	  double lambda_uf[100]; // наибольшая условная гибкость поясов
	  double lambda_f;
	  int k, list_RSU[10];
	  CHECK_ELEM_PARAM_U *Cp;
	  int n_elem;
	  int n_elem_rep; // текущий номер элемента
	  double Nmin;

	  Cp = &(Check_param);

	  // Зануление критериев
	  for (i=0; i<data_check->num_krit; i++) {
		krit[i] = -1;
		nnel_krit[i] = -1;
	  }
	  // Коэффициент устойчивости при центральном сжатии
	  //fi_ = Fun_fi_713(Sect_Elem_Group[ngroup].type_sect, lambda_y);
	  // Значение hd
	  Nmin = 1e6;
	  double krit_comp_max = 0;
	  int RSU_comp_max;

	  step_edge = 1e6;

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

	  // Условные гибкости стенки и поясов
		double lambda_r = MAX(lambda_x[n_elem], lambda_y[n_elem]);
	  // Значение условной предельной гибкости стенки при центальном сжатии
		lambda_uw[n_elem] = Fun_lambda_uw_cent(Sect_Elem_Group[ngroup].type_sect, lambda_r);
	  // Значение условной предельной гибкости в плоскости поясов при центральном сжатии
		lambda_uf[n_elem] = Fun_lambda_uf_cent(Sect_Elem_Group[ngroup].type_sect, lambda_r);

		h_ = Sect_Elem_Group[ngroup].com_sect.dvutavr.h;
		hef = h_ - 2*param_sect.Rad;

		if (lambda_w/lambda_uw[n_elem] <=1.0)
		  Ad_[n_elem] = Ad = param_sect.Ar;
		else {
		  hd = t_*(lambda_uw[n_elem] - (lambda_w/lambda_uw[n_elem] - 1)*(lambda_uw[n_elem] - 1.2 - 0.15*(MIN(lambda_x[n_elem], 3.5))))*sqrt(Ey/Ry);
		  hd = MAX(hd, h_);

		  Ad_[n_elem] = Ad = param_sect.Ar - (h_ - hd)*t_;    // ф. 31
		}

		N_ = Elem_RSU[i][0]*1000;
		//if (N_ > 0)
		//  continue;
        Q_ = Elem_RSU[i][3]*1000;
		M_ = Elem_RSU[i][2]*1e6;
        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;

        sigma_beam_comm(&param_sect, Forces, sigma_comm);
		// Вычисление k_x по п. 2 табл. 2.2.2 ТЗ
		// табл. 32.
        alfa = (ABS(N_))/(fi_x[n_elem]*param_sect.Ar*Ry*data_check->gamma_c);
		alfa = MAX(1e-5, alfa);
        lambda_ux = data_check->Limit_lambda1 - data_check->Limit_lambda2*alfa;
		lambda_ux = MAX(1, lambda_ux);
		if (lambdaX[n_elem]/lambda_ux <= alfa)
		  k_x = 1.0;
		else {
		  k_x = MIN(sqrt(fi_x[n_elem]*param_sect.Ar*Ry/(ABS(N_))), 1.25);
		}

		alfa = (ABS(N_))/(fi_y[n_elem]*param_sect.Ar*Ry*data_check->gamma_c);
		alfa = MAX(1e-5, alfa);
		lambda_uy = data_check->Limit_lambda1 - data_check->Limit_lambda2*alfa;
		lambda_uy = MAX(1, lambda_uy);
		if (lambdaY[n_elem]/lambda_uy <= alfa)
		  k_y = 1.0;
		else {
		  k_y = MIN(sqrt(fi_y[n_elem]*param_sect.Ar*Ry/(ABS(N_))), 1.25);
		}

		Cp->A_netto = param_netto.Ar;
		Cp->Ar = param_sect.Ar;
		// 1. ------------------------------------------------------
		if (data_check->Checked[0]) {
		  double Ryn, krit_0;
		// 1. Расчет на прочность, п.7.1.1. ф.(5)
		  if (steel_param.Ryn <= 440)
			Ryn = Ry;
		  else
			Ryn = steel_param.Ru/data_check->koeff_material_nadeghn;
		  krit_0 = (ABS(N_))/(param_netto.Ar*Ryn*data_check->gamma_c);
		  //MAXNNEL(krit[0], krit_0, 0);
		  if (krit[0] < krit_0) {
			  krit[0] = krit_0;
			  Cp->N_ = ABS(N_);
			  nnel_krit[0] = n_elem_rep;
		  }
		}
		// Определение коэффициента 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;
		// 2. ------------------------------------------------------
		if (data_check->Checked[1]) {
		  double krit_1;
		// 2. Расчет на устойчивость в плоскости меньшей жесткости, п. 7.1.3, 7.3.5, 7.3.6 ф.(7)
		  if (lambda_w > k_y*lambda_uw[n_elem] )
			Ar = Ad;
		  else
			Ar = param_sect.Ar;

		  krit_1 = (ABS(N_))/(fi_y[n_elem]*Ar*Ry*data_check->gamma_c);
		  MAXNNEL(krit[1], krit_1, 1);
		}
		if (data_check->Checked[2]) {
		// 3. Расчет на устойчивость в плоскости стенки, п. 7.1.3, 7.3.5, 7.3.6 ф.(7)
		  double krit_2;
		  if (lambda_w > k_x*lambda_uw[n_elem] )
			Ar = Ad;
		  else
			Ar = param_sect.Ar;

		  krit_2 = (ABS(N_))/(fi_x[n_elem]*Ar*Ry*data_check->gamma_c);
		  MAXNNEL(krit[2], krit_2, 2);
		}
		if (data_check->Checked[3]) {
		// 4. Проверка местной устойчивости стенки, п. 7.3.2, 7.3.6, 7.3.11
		  double krit_3;

		  if (Ar == param_sect.Ar)
			krit_3 = lambda_w/(k_x*lambda_uw[n_elem]);
		  else {
			krit_3 = lambda_w/(2*lambda_uw[n_elem]);
			k_x = 2;
		  }
		  if (krit[3] < krit_3) {
			Cp->lambda_uw = lambda_uw[n_elem];
			Cp->k_x = k_x;
		  }

		  MAXNNEL(krit[3], Round(krit_3, 2), 3);
		}
		if (data_check->Checked[4] ) {
		// 5. Проверка необходимости поперечных ребрер, п. 7.3.3
		  if (!data_check->flag_step_edge) {   // проверяется либо необходимость ребер
			if (lambda_w >= 2.3 || krit[3]>1.0) {
				 int n_edge;
				 n_edge = ceil(data_check->length[n_elem]/(3*hef));
				 data_check->edge_step = step_edge = MIN(step_edge, Round(floor(data_check->length[n_elem]/n_edge), -2));
				 MAXNNEL(krit[4], 1.0, 4)
			}
			else {
				 MAXNNEL(krit[4], -1,  4);
			}
		  }
		  else {   // проверяется шаг ребер
			if (lambda_w >= 2.3) {
			  MAXNNEL(krit[4], data_check->edge_step/(3*hef), 4);
			}
			else {
			  MAXNNEL(krit[4], -1,  4);
			}
		  }
		}
		if (data_check->Checked[5]) {
		// 6. Проверка шага поперечных ребер, п. 7.3.3 - не активна
		  if (data_check->flag_step_edge && lambda_w >= 2.3) {
			MAXNNEL(krit[5], data_check->edge_step/(3*hef), 5);
		  }
		}
        if (data_check->Checked[6]) {
		// 7. Проверка ширины поперечных ребер, п. 7.3.3
		  if (data_check->type_edge == 0) {
			MAXNNEL(krit[6], (hef/20 + 50)/data_check->edge_width, 6);
          }
		  else
			MAXNNEL(krit[6], (hef/30 + 40)/data_check->edge_width, 6);
		}
		if (data_check->Checked[7]) {
		// 8. Проверка ширины поперечных ребер, п. 7.3.3
			MAXNNEL(krit[7], 2*data_check->edge_width*sqrt(Ry/Ey)/data_check->edge_thick, 7);
		}
        if (data_check->Checked[8]) {
          double krit_8;
		 // 9. Проверка местной устойчивости внешнего пояса, п. 7.3.8, табл. 10
          if (sigma_comm[0] < 0) {
			krit_8 = lambda_f1/(k_y*lambda_uf[n_elem]);
			if (krit[8]<krit_8) {
			   Cp->lambda_uf = lambda_uf[n_elem];
			   Cp->k_y = k_y;
			}

			MAXNNEL(krit[8], krit_8, 8);
		  }
		  else
			krit[8] = MAX(krit[8], -1);
		}
		if (data_check->Checked[9]) {
		  double krit_9;
		// 10. Проверка местной устойчивости внутреннего пояса, п. 7.3.8, табл. 10
		  if (sigma_comm[2] < 0) {
			krit_9 = lambda_f2/(k_y*lambda_uf[n_elem]);
			if (krit[9]<krit_9) {
			   Cp->lambda_uf = lambda_uf[n_elem];
			   Cp->k_y = k_y;
			}
			MAXNNEL(krit[9], krit_9, 9);
		  }
		  else
			krit[9] = MAX(krit[9], -1);
		}
		if (data_check->Checked[10]) {
		// 11. Проверка предельной гибкости в плоскости XY, табл.32.
		  if (krit[10] < lambdaY[n_elem]/(k_*lambda_uy)) {
			Cp->lambda_uy = lambda_uy;
			Cp->lambdaY = lambdaY[n_elem];
		  }
			MAXNNEL(krit[10], lambdaY[n_elem]/(k_*lambda_uy), 10);
		}
		if (data_check->Checked[11]) {
		// 12. Проверка предельной гибкости в плоскости стенки (XZ) , табл.32.
		  if (krit[11] < lambdaX[n_elem]/(k_*lambda_ux)) {
			Cp->lambda_ux = lambda_ux;
			Cp->lambdaX = lambdaX[n_elem];
		  }

		  MAXNNEL(krit[11], lambdaX[n_elem]/(k_*lambda_ux), 11);
		}
		krit[12] = -1;
		krit[13] = -1;
		krit[14] = -1;
		#ifdef  DEBUG
		  int i;
		  InfMessage("n_group = " + IntToStr(Sect_Elem_Group[ngroup].com_sect.dvutavr.n_group)+", "+
					 "n_profil = " + IntToStr(Sect_Elem_Group[ngroup].com_sect.dvutavr.n_profil));
		  for (i = 0; i < 15; i++) {
			InfMessage("krit_"+IntToStr(i)+"="+FloatToStr(Round(krit[i], 3)));
		  }
		#endif
		for (int j=0; j<15; j++) {
		  if (krit[j] > krit_comp_max) {
			krit_comp_max = krit[j];
			RSU_comp_max = n_elem;
		  }
		}
	}
	  if (lambda_w >= 2.3 && data_check->type_edge >= 0) {   // подобрать сечение ребер
		double step_max = 2.5*h_;

		Cp->edge_param[0][0] = edge_param[0][0] = Round(step_max, 0);    // шаг
		if (data_check->type_edge==0) {
		   Cp->edge_param[0][1] = edge_param[0][1] = (h_/20 + 50); // ширина одностороннего
		}
		else {
		   Cp->edge_param[0][1] = edge_param[0][1] = (h_/30 + 40); // ширина парного
		}
		Cp->edge_param[0][2] = edge_param[0][2] = 2*Cp->edge_param[0][1]*sqrt(Ry/Ey); // ширина парного
	  }
		Cp->n_RSU = NRSU;

	  n_elem = ListElem_RSU[RSU_comp_max];
		  Cp->RSU[1][0] = Elem_RSU[RSU_comp_max][0];
		  Cp->num_elem[1] = n_elem;
		  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->hsect = h_sect;
		  Cp->bsect = b_sect;
		  Cp->k_ = k_x;
		  Cp->a_step = data_check->edge_step;
		  //Cp->Rs = Rs;
		  Cp->lambda_x = lambda_x[n_elem];
		  Cp->lambda_y = lambda_y[n_elem];
		  Cp->lambda_w = lambda_w;
		  Cp->lambda_f = lambda_f1;
		  Cp->lambda_f1 = lambda_f1;
		  Cp->lambda_f2 = lambda_f2;
		  Cp->fi_x = fi_x[n_elem];
		  Cp->fi_y = fi_y[n_elem];

		  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->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->Ad = Ad;
		  Cp->hef = hef;
		  Cp->alfa_f = Af/(t_*h_);
		  Cp->hw = h_;
	memcpy((char*)&Data_check_U, (char*)data_check, sizeof(DATA_CHECK_U));
  }

