Demo entry 6686982

Pipe

   

Submitted by anonymous on Dec 26, 2017 at 02:44
Language: C++. Code size: 2.8 kB.

depth_base = 2;                 //глубина до основания траншеи 
width_base = 2;                 //ширина основания
width_top = 3;                  //ширина вершины

size_grid_glob = 0.1;           //задаем глобальный желаемый размер сетки



int KeSum=0; //суммарное кол-во элементов
int Nnode=0; //суммарное кол-во узлов

double sizeY = 0;//размер по У - один для всех
double sizeX = 0;//размер по Х на вершине
double sizeXVar = 0;
int YNomberElem = 0;//кол-во элементов по У - один для всех
int XNomberElem = 0;//кол-во элементов по Х считается на вершине - один для всех
//вычислим кол-во элементов и размеры
New_size_edge(depth_base, &sizeY, &YNomberElem);
New_size_edge(width_top, &sizeX, &XNomberElem);
//cout << "size X: " << sizeX << " sizeY: " << sizeY << endl;
//подсчет кол-ва элементов
KeSum = YNomberElem*XNomberElem;
//подсчет кол-ва узлов
Nnode = (YNomberElem + 1)*(XNomberElem + 1);

// создание двумерного динамического массива
// массив связывает номер элемента и номера узлов 
// обход идет против часовой стрелки начиная с положительно четверти
// [номер элемента][номер узала в ГСК соответствующий 1-му узлу в ЛСК][-//- 2-му узлу в ЛСК][-//- 3-му узлу в ЛСК][-//- 4-му узлу в ЛСК]

int **Nelem_node = new int*[KeSum];
for (i = 0; i < KeSum; i++)
{
	Nelem_node[i] = new int[5];    //массив связи элементов и узлов в ГСК
}

//обнуление массива 
for (i = 0; i < KeSum; i++)
{
	for (j = 0; j < 5; j++)
	{
		Nelem_node[i][j] = 0;
	}
	Nelem_node[i][0] = i + 1;
}

for (i = 0; i < YNomberElem ; i++)
{
	for (j = 0; j < XNomberElem ; j++)
	{

		Nelem_node[i*XNomberElem + j][1] = (XNomberElem + 1)*(i + 1) + (j + 1) + 1;
		Nelem_node[i*XNomberElem + j][2] = (XNomberElem + 1)*(i + 1) + (j + 1);
		Nelem_node[i*XNomberElem + j][3] = (XNomberElem + 1)*i + (j + 1);
		Nelem_node[i*XNomberElem + j][4] = (XNomberElem + 1)*i + (j + 1)+1;
	}
}

//for (i = 0; i < KeSum; i++)
//{
//	cout << "nomer elementa: " << i << " 1 uzel: " << Nelem_node[i][1] << " 2 uzel: " << Nelem_node[i][2] << " 3 uzel: " << Nelem_node[i][3] << " 4 uzel: " << Nelem_node[i][4] << endl;
//}
//Создание динамического массива связывающего номера узлов и их координат в ГСК по Х и У
//Элементы массива: [номер узла][координата по Х][координата по Y]
double **NnodeXY = new double*[Nnode];
for (i = 0; i < Nnode; i++)
{
	NnodeXY[i] = new double[3];
}
//обнуление массива
for (i = 0; i < Nnode; i++)
{
	for (j = 0; j < 3; j++)
	{
		NnodeXY[i][j] = 0;
	}
	NnodeXY[i][0] = i + 1;
}

for (i = 0; i < YNomberElem+1; i++)
{
	sizeXVar = (width_base + ((width_top - width_base)*i*sizeY / depth_base))/XNomberElem;
	for (j = 0; j < XNomberElem+1; j++)
	{
		NnodeXY[i*(XNomberElem + 1) + j][1] = j*sizeXVar;
		NnodeXY[i*(XNomberElem + 1) + j][2] = i*sizeY;
	}
}

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).