Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Учет граничных условий



 

 

Граничные условия делятся на естественные и главные. В качестве естественных граничных условий выступают внешние силы, которые входят в правую часть уравнений равновесия. Для формирования вектора нагрузки организуем цикл с обходом узлов рамы в координатной матрице и добавим в его ячейки силы из четвертого, пятого и шестого столбцов таблицы в соответствии с номерами обобщенных перемещений. Кроме того в столбец обобщенных сил необходимо добавить вклад от распределенных сил, указанных в топологической матрице для каждого элемента, приведенный по выражению (8) к глобальным осям координат.

Главные граничные условия – это условия закрепления конструкции. При наложении условий закрепления, то есть уменьшении количества степе­ней свободы системы, уравнения не вычеркивают, а заменяют фиктивными для сохранения нумерации в матрицах. Один из способов состоит в обнулении всех элементов строки, кроме диагонального для данного элемента и обнуление соответствующего элемента столбца нагрузки.

Если перемещения в закрепленных узлах не равны нулю, то их действительные значения, умноженные на диагональный элемент матрицы жесткости, помещают в соответствующую строку вектора нагрузки.

Когда в матрице узлов в столбцах 7,8,9 стоят (-1) – это означает закрепление данного узла по соответствующему направлению: x,y,φ.

 

for (int i = 0; i < f1.n; i++)

{

//Наложение главных граничных условий для неподвижных опор

if (Convert.ToInt32(f1.MatrCoor[i, 6]) < 0)

{

for (int j = 0; j < f1.n * 3; j++)

{

K1[3 * i, j] = 0;

}

K1[3 * i, 3 * i] = K[3 * i, 3 * i];

P[3 * i] = 0;

}

if (Convert.ToInt32(f1.MatrCoor[i, 7]) < 0)

{

for (int j = 0; j < f1.n * 3; j++)

{

K1[3 * i + 1, j] = 0;

}

K1[3 * i + 1, 3 * i + 1] = K[3 * i + 1, 3 * i + 1];

P[3 * i + 1] = 0;

}

if (Convert.ToInt32(f1.MatrCoor[i, 8]) < 0)

{

for (int j = 0; j < f1.n * 3; j++)

{

K1[3 * i + 2, j] = 0;

}

K1[3 * i + 2, 3 * i + 2] = K[3 * i + 2, 3 * i + 2];

P[3 * i + 2] = 0;

}

}

Случай, когда в столбцах 7,8,9 стоят нули, означает отсутствие закрепления.

Если в ячейках этих столбцов стоят положительные целые числа, то это означает, что данное перемещение равно перемещению узла по соответствующему направлению, с номером, указанным в ячейке.

Такое явление возникает при наличии в системе внутренних шарниров, муфт и других видов связей. При этом внешние силы, приложенные в шарнире во всех узлах, прикладывают к одному из узлов, примыкающему к шарниру. Коэффициенты, стоящие вне главной диагонали в матрицы жесткости для других узлов примыкающих к шарниру обнуляются, а на место элемента, соответствующего первому узлу, помещается Диагональный коэффициент этой же строки матрицы приравнивается единице , так, что для обусловленных перемещений уравнения принимают вид

 

,

 

где - перемещение второго (третьего и т. д.) узла в шарнире, - перемещение первого узла в шарнире, уравнение которого не обнулялось и к которому отнесены все узловые силы, приложенные в шарнире по данному направлению:

 

for (int i = 0; i < f1.n; i++)

{

//Наложение главных граничных условий для подвижных соединений

if (Convert.ToInt32(f1.MatrCoor[i, 6]) > 0)

{

int sh = Convert.ToInt32(f1.MatrCoor[i, 6]) - 1;

 

for (int j = 0; j < f1.n * 3; j++)

{

 

K1[3 * sh, j] = K1[3 * sh, j] + K1[3 * i, j];

K1[3 * i, j] = 0;

}

 

P[3 * sh] = P[3 * i] + P[3 * sh];

P[3 * i] = 0;

K1[3 * i, 3 * sh] = -1.0;

K1[3 * i, 3 * i] = 1.0;

}

if (Convert.ToInt32(f1.MatrCoor[i, 7]) > 0)

{

int sh = Convert.ToInt32(f1.MatrCoor[i, 7]) - 1;

 

for (int j = 0; j < f1.n * 3; j++)

{

 

K1[3 * sh + 1, j] = K1[3 * sh + 1, j] + K1[3 * i + 1, j];

K1[3 * i + 1, j] = 0;

}

 

P[3 * sh + 1] = P[3 * i + 1] + P[3 * sh + 1];

P[3 * i + 1] = 0;

K1[3 * i + 1, 3 * sh + 1] = -1.0;

K1[3 * i + 1, 3 * i + 1] = 1.0;

}

if (Convert.ToInt32(f1.MatrCoor[i, 8]) > 0)

{

int sh = Convert.ToInt32(f1.MatrCoor[i, 8]) - 1;

 

for (int j = 0; j < f1.n * 3; j++)

{

 

K1[3 * sh + 2, j] = K1[3 * sh + 2, j] + K1[3 * i + 2, j];

K1[3 * i + 2, j] = 0;

}

 

P[3 * sh + 2] = P[3 * i + 2] + P[3 * sh + 2];

P[3 * i + 2] = 0;

K1[3 * i + 2, 3 * sh + 2] = -1.0;

K1[3 * i + 2, 3 * i + 2] = 1.0;

}

}

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.