12PosobKR2015 (1013897), страница 9
Текст из файла (страница 9)
* если узел лежит на окружности, образующей часть выреза, то закрепляем его
* от перемещения вдоль осей Х и Y (присваиваем признак закрепленич 11).
IF (ABS(X1**2+(Y1-24.0)**2-196.0).LT.1.0) THEN
IXY=IXY+1
NB=NB+1
NFIX(NB)=11
NBC(NB)=I
IF(IPR(21)) WRITE(6,19)I,CORD(2*(I-1)+1),CORD(2*(I-1)+2),NFIX(NB)
ENDIF
* если узел лежит на прямой, образующей часть выреза, то закрепляем его
* от перемещения вдоль осей Х и Y (присваиваем признак закрепленич 11).
IF ((ABS(X1-14.0).LT.0.1).AND.((Y1-24.0).LT.0.1)) THEN
IXY=IXY+1
NB=NB+1
NFIX(NB)=11
NBC(NB)=I
IF(IPR(21))WRITE(6,19) I,CORD(2*(I-1)+1),CORD(2*(I-1)+2),NFIX(NB)
ENDIF
* Если узел лежит на прямой Y=0, закрепляем его
* от перемещения вдоль оси Y (присваиваем признак закрепленич 1).
IF ((Y1.LT.0.1).AND.(X1.GT.14.0)) THEN
IY=IY+1
NB=NB+1
NFIX(NB)=1
NBC(NB)=I
IF(IPR(21)) WRITE(6,19)I,CORD(2*(I-1)+1),CORD(2*(I-1)+2),NFIX(NB)
ENDIF
* Если узел лежит на прямой Х=0, закрепляем его
* от перемещения вдоль оси Х (присваиваем признак закрепленич 10).
IF ((X1.LT.0.1).AND.(Y1.GT.38.0)) THEN
IX=IX+1
NB=NB+1
NFIX(NB)=10
NBC(NB)=I
IF(IPR(21)) WRITE(6,19)I,CORD(2*(I-1)+1),CORD(2*(I-1)+2),NFIX(NB)
ENDIF
56 CONTINUE
IF(IPR(21)) PRINT *,"Число узлов, закрепленных по оси Y=", IY
IF(IPR(21)) PRINT *," Число узлов, закрепленных по оси X=", IX
IF(IPR(21)) PRINT *," Число узлов, закрепленных по осям Х и Y=", IXY
IF(IPR(21)) PRINT *,"Общее число закрепленных узлов NFIX=",NB
18 FORMAT(' Граничные условия/' Узел X Y Закрепления ')
19 FORMAT(' ',I4,' ',F7.2,' ',F7.2,4Х,I2)
NN=NB
RETURN
END
* ==================================================================
* конец кода подпрограммы Bound
* ==================================================================
* Конец файла Bound
Строки WRITE(6,19) I, CORD(2*(I-1)+1), CORD(2*(I-1)+2), NFIX(NB) являются обязательными, так как с их помощью формируется файл с результатами. С помощью этих строк выводится информация только по закрепленным узлам.
В правильности закрепления узлов можно удостовериться визуально после просмотра графического вывода оезультатов решении задачи при большем числе узлов и конечных элементов, например, при NRC=5 (рис. 39).
В текстовом файле результатов информация о закреплениях узлов будет выведена в следующем виде:
*****Start BOUND (реализация граничных условий)
Граничные условия
Узел X Y Закрепления
1 .00 54.50 10
2 .00 60.00 10
3 .00 49.00 10
4 .00 43.50 10
5 .00 38.00 11
10 2.78 37.71 11
15 5.36 36.93 11
20 7.73 35.66 11
31 9.90 33.90 11
42 11.66 31.73 11
53 12.93 29.36 11
63 13.71 26.78 11
72 14.00 24.00 11
72 14.00 24.00 11
78 14.00 18.00 11
79 14.00 12.00 11
80 14.00 6.00 11
81 14.00 .00 11
93 18.35 .00 1
104 22.69 .00 1
114 27.03 .00 1
122 31.37 .00 1
128 38.53 .00 1
132 45.69 .00 1
135 52.85 .00 1
137 60.00 .00 1
Число узлов, закрепленных по оси Y= 8
Число узлов, закрепленных по оси X= 4
Число узлов, закрепленных по осям Х и Y= 14
Общее число закрепленных узлов NFIX= 26
*****Finish BOUND
2.6. Реализация внешних воздействий.
Заключительным этапом ввода исходных данных является занесение информации о приложенных к пластине нагрузках в файле Force. for.
Сила действует в узле перпендикулярно стороне, к которой она приложена. Сила – это вектор. Вектор имеет две составляющие: вдоль оси Х и вдоль оси Y. Следовательно, составляющие ветора должны быть такими, чтобы результирующий вектор был перпендикулярен стороне приложения силы.
Составляющие вектора сил в САЕ Sigma хранятся в массиве R. Структура массива R – массива значений составляющих сил в узлах аналогична по структуре массиву CORD, только вместо координат в нем указываются значения составляющих векторов сил по оси Х и Y. Как в Bound закрепленные узлы отыскивались по их координатам, так и в подпрограмме Force нагруженные узлы отыскиваются тоже по их координатам.
Если приложение сосредоточенной силы к узлу не вызывает никаких трудностей (надо отыскать узел с заданными координатами и присвоить определенным элементам массива R значения составляющих этой силы, которая уже известна из задания), то распределение по узлам непрерывной нагрузки требует специального рассмотрения.
И первой задачей является нахождение значения силы, действующей в данном узле.
Так как в МКЭ силы можно прикладывать только в узлах, то распределённые внешние нагрузки надо привести к узловым силам. При этом необходимо, чтобы силы, приложенные в узлах, находящихся в зоне приложения распределённой нагрузки, создавали в целом эквивалентно такое же воздействие, что и теоретическая распределённая нагрузка. Понятно, что непрерывно-распределенная нагрузка отличается от дискретно-распределенной нагрузки. Но тут можно воспользоваться ещё одной формулировкой принципа Сен-Венана, а именно: если систему сил, действующую на небольшой участок упругого тела, заменить другой системой сил, имеющей одинаковую с первой равнодействующую, то вдали от области действия этих систем сил результат их воздействия будет одинаковым.
Основная сложность при задании неравномерно-распределенной нагрузки, это обоснование алгоритма, распределяющего эту нагрузку по узлам.
Существует много подходов к распределению сил от неравномерной нагрузки по узлам и, в частности, исходят из следующего принципа: узловые силы эквивалентны внешним распределённым нагрузкам, если имеет место равенство их работ на возможных перемещениях.
Простейшее соблюдение этого принципа приводит к следующей схеме – к узлу прикладывается сила, равная интегралу от функции нагрузки в пределах от середин расстояний от данного узла до двух соседних нагруженных узлов, если все три узла лежат на одной прямой. В том случае, если данный узел имеет только один соседний нагруженный (нагрузка распространяется только до данного узла), то сила, приходящаяся на данный узел равна интегралу от функции нагрузки в пределах от данного узла до середины расстояния до другого соседнего нагруженного узла.
Графически это можно представить (рис. 40) заштрихованными площадями для узла, имеющего два соседних нагруженных узла, и
для узла, имеющего только один соседний нагруженный узел.
Для вычисления площадей применяют методы приближённого вычисления интегралов, основанные на замене интеграла конечной суммой. Для вычисления
промежуток от
до
разбивается на
равных частей, и для точек деления
вычисляются значения
интегрируемой функции
. Затем обычно пользуются одной из трёх формул, полагая
: формулой трапеций, формулой средних прямоугольников и формулой Симсона.
Все три формулы тем точнее, чем больше .
Следует только учесть, что всегда желательно вычислять площади с одной и той же степенью точности вне зависимости от длины расстояния между узлами. Так как все эти методы предполагают деление интервала интегрирования на частей, рекомендуется установить это число частей изначально достаточно большим.
Впрочем, многое зависит от вида функции. Например, для линейной функции сила, приложенная к конкретному узлу, чаще всего рассчитывается, как площадь трапеции образованной стороной и двумя значениями
, находящимися на половине расстояния от предыдущей до последующей точки. Именно такой метод реализован в трёх примерах, реализованных в Sigma.
Разнесение линейной распределенной нагрузки демонстрируется на рис. 41.
;
;
;
……………………………………
……………………………………
;
.
Рис. 41
После нахождения сил, действующих в узлах, остается вычислить только их составляющие вдоль осей Х и Y и занести в массив R. Собственно в этом и заключается назначение подпрограммы Force.
Но при реализации возникает достаточное количество трудностей, связанных главным образом с определением положения данного узла относительно начала координат, в которых записана функция нагрузки.
В рассматриваемом примере рис. 20, рис 42 распределенная по наклонныой стороне пластины нагрузка записана в местной системе координат, для которой
– локальная координата, меняется вдоль наклонной стороны от
в верхней точке этой наклонной стороны до конца наклонной стороны. Очевидно, что после нахождения (по их координатам) номеров узлов 49,59,68,77,89,100,110 и т.д., лежащих на наклонной стороне необходимо их расположить в некотором массиве в порядке удаления этих узлов от начала местной системы координат формулы нагрузки. Аналогично, вдоль верхней стороны нагрузка
, имеет согласно условию начало локальной системы координат
в правой крайней точке горизонтальной стороны и изменяется влево вдоль этой стороны до середины её, т.е. до значения
. Очевидно, что для того, чтобы правильно подсчитать силы, действующие на узлы 2,7,12,17,21,22,23,24 и т.д. их надо расположить в каком-то массиве в порядке удаления от нулевой точки местной системы координат, в которых записана формула нагрузки. Для этого приходится применять методы сортировки из которых наиболее распространенным является метод пузырька.
Рассмотрим необходимость сортировки на примере.
При NRC=3 результаты расчета будут следующими (рис. 43):

Рис. 43
Ограничимся только одной нагрузкой – нагрузкой на верхнюю горизонтальную сторону длиной 40см.
Функция нагрузки по этой стороне q2 = +600 , где
-аргумент, изменяющийся от
=0 в крайней правой точке нагруженной горизонтальной стороны до
=40 в левой точке этой же стороны. Т.е., от узла 16 к узлу 2 (против направления координаты Х). График этой функции приведён ниже.
Чтобы подсчитать силу, действующую на любой узел, скажем 7, надо знать значения функции в любой точке между точками находящимися на середине расстояний между узлами 5 и 7 и узлами 7 и 8. Для упрощения будем подсчитывать силу очень грубо: найдем значения функции в этих точках и подсчитаем площадь трапеции. Ключевой в наших рассуждениях является фраза: «найдем значения функции в этих точках».
Сложность заключается в том, что координата узлов по Х в массиве CORD отсчитывается слева – направо, а функция нагрузки записана справа-налево.