Файл: А.Г. Новиньков Разработка и применение функций пользователя при автоматизации проверок несущей способности стальныхконструкций.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.06.2024
Просмотров: 24
Скачиваний: 0
Министерство образования Российской Федерации Кузбасский государственный технический университет Кафедра строительных конструкций
Разработка и применение функций пользователя при автоматизации проверок несущей способности стальных конструкций
Методические указания к выполнению лабораторных работ по курсу ”Основы работы на ПК” для студентов направления 550100
«Строительство»
Составители: А.Г. Новиньков В.П. Силенко
Утверждены на заседании кафедры Протокол N6 от 22.03.01
Рекомендованы к печати методической комиссией направления 550100 Протокол N6 от 16.04.01
Электронная версия хранится в библиотеке главного корпуса КузГТУ
Кемерово 2001
1
Введение
Библиотеки встроенных функций системы Mathcad насчитывают несколько сотен стандартных математических функций общего назначения. Однако инженер очень часто испытывает потребность в наличии специализированных функций, предназначенных для автоматизации расчетов в узком классе задач проектирования. Система Mathcad имеет возможность расширения доступных функций за счет создания так называемых функций пользователя. Создание функций пользователя подробно рассматривается в рамках курса "Основы работы на персональном компьютере". Настоящие методические указания предназначены для оказания помощи в создании и использовании некоторых таких функций на примере библиотеки встроенных функций по расчету стальных конструкций. Справочный материал настоящих указаний может быть использован при выполнении курсового проектирования в курсах "Металлические конструкции" и "Новые прогрессивные конструкции", а также при разработке дипломных проектов.
Использование возможностей программирования в системе Mathcad
Вычисление коэффициента продольного изгиба центрально - сжатого стержня φ
СНиП II-23-81* «Стальные конструкции» требует выполнять проверку устойчивости центрально-сжатого сплошностенчатого стержня по формуле
ϕNA ≤ R y γ c ,
где N – сжимающая сила;
φ - коэффициент продольного изгиба; A – площадь сечения;
Ry – расчетное сопротивление стали; γс – коэффициент условий работы.
2
В свою очередь коэффициент продольного изгиба ϕ либо вычисляется по формулам 8, 9, 10 [1], либо определяется линейной интерполяцией значений таблицы 72 [1]. Данный коэффициент является функцией двух параметров – гибкости стержня λ и расчетного сопротивления стали Ry. Процедура вычисления ϕ легко поддается алгоритмизации и может быть реализована в виде функции пользователя системы Mathcad (см. с. 11).
Аргументы функции: λ - гибкость стержня, Ry – расчетное сопротивление стали.
Возвращаемое значение – коэффициент продольного изгиба ϕ. При создании собственных функций пользователя обязательно
следует предусмотреть обработку ввода ошибочных аргументов. В противном случае при организации проверки устойчивости в теле цикла невозможно выявить ошибки, связанные с использованием некорректных исходных данных. Например, если бы в данном примере не контролировалась положительность значения λ, то при λ=-10 функция вернула бы значение φ=0, с последующим аварийным остановом при вычислении напряжений (деление на ноль).
Вычисление коэффициента продольного изгиба внецентренносжатого (сжато-изгибаемого) сплошностенчатого
стержня φe (табл.74) [1]
Для проверки несущей способности сжато-изгибаемого стержня в плоскости действия изгибающего момента требуется определить коэффициент φe. Данный коэффициент зависит от приведенного относительного эксцентриситета mef, условной гибкости стержня λ и представляет собой табличную функцию (табл. 74 [1]).
Линейная интерполяция значений данной таблицы также может быть реализована в виде функции пользователя.
Аргументы функции: λef – условная гибкость стержня, mef – приведенный относительный эксцентриситет.
Возвращаемое значение – коэффициент продольного изгиба ϕe для внецентренно-сжатого сплошностенчатого стержня, вычисляемый в соответствии с табл.74 [1].
Данные из табл.74 хранятся в файлах 74v.prn, 74h.prn и 74.prn и требуют предварительного считывания в текущий документ. Файл 74v.prn содержит матрицу-строку условных гибкостей. Перевод
3
матрицы-строки в вектор-столбец осуществляется с помощью операции транспонирования матрицы. Файл 74h.prn содержит матрицустроку значений приведенных относительных эксцентриситетов, и данная матрица также требует транспонирования. В файле 74.prn хранятся сами значения коэффициентов продольного изгиба. Все файлы записаны в текстовом формате, не содержащем служебные символы. Отметим, что табл.74 может быть записана в формате электронной таблицы Excel. В этом случае доступ к данным из электронной таблицы осуществляется через меню Insert =>
Component.
В целях экономии места в приведенной функции не приводится блок обработки ошибок. Кроме того, функция в представленном варианте возвращает ошибку при попытке обращения к ней с аргументом λef=0,5. Предлагаем самостоятельно доработать алгоритм и устранить данный недостаток.
λ |
|
ef_tabl |
:= |
READPRN |
("d:\74v.prn" |
|
)T |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
ef_tabl |
:= |
READPRN |
("d:\74h.prn" |
|
)T |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
φ |
e_tabl |
:= |
READPRN |
("d:\74.prn" |
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
φe74 (λ ef ,m ef ):= |
|
|
i ← 0 |
|
|
|
|
< λ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
while λ |
ef_tabl |
i |
ef |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
i ← i + 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
φ1 ← linterp |
|
|
|
|
|
|
|
|
|
|
|
T |
i−1 |
|
||||
|
|
|
|
|
|
|
m ef_tabl |
, |
|
φe_tabl |
|
|
|
,m ef |
|||||||||||
|
|
|
|
|
|
|
φ2 ← linterp |
|
|
|
|
|
|
|
|
|
|
|
T |
i |
|
|
|||
|
|
|
|
|
|
|
m ef_tabl |
, |
|
φe_tabl |
|
|
,m ef |
||||||||||||
|
|
|
|
|
|
|
|
|
|
λ |
ef_tabl |
i−1 |
|
|
|
φ |
1 |
|
|
|
|
||||
|
|
|
|
|
|
|
φ ← linterp |
|
|
|
, |
|
|
|
,λ |
ef |
|
||||||||
|
|
|
|
|
|
|
λ ef_tabl |
|
|
|
φ2 |
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
φ ← 0.001 |
φ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4
Система Mathcad имеет возможность создавать функции пользователя на языках C или C++ в виде DLL-файлов (динамически компонуемых библиотек). Такие внешние C-функции полностью интегрируются в Mathcad, и для конечного пользователя между ними и стандартными функциями нет никакой разницы. Описание интерфейса DLL подробно изложено в [2, 3]. Использование C-функций имеет свои достоинства и недостатки.
К числу несомненных достоинств следует отнести:
•Резкое повышение быстродействия. Этот критерий является решающим, например, при организации многократно вложенных циклов (компоновка сечения методом перебора, поиск глобального минимума целевой функции и т.п.).
•Функция «видна» для пользователя как стандартная функция системы Mathcad с доступом через диалоговое окно выпадающего меню Insert => Function.
•Появляется возможность доступа ко многим функциям
операционной системы Windows. Недостатки также существенны:
•Теряется возможность передачи в функцию в качестве аргумента имени другой функции. Например, a(b(x),c).
•Пользовательские C-функции теряют возможность использования встроенных функций системы Mathcad. Например, в пользовательской функции нельзя реализовать решение системы линейных алгебраических уравнений с помощью встроенной функции lsolve().
•Нельзя передать в функцию в качестве аргумента строковую
переменную.
На кафедре строительных конструкций некоторые часто используемые проверки несущей способности стальных конструкций реализованы в виде DLL-файлов системы Mathcad.
Доступ к функциям осуществляется через выпадающее меню
Insert => Function. В окне прокрутки Function Category (Категория функций) выбирается категория СНиП II-23-81*. В поле Function Name (Название функции) появляются имена функций, используемых при проверке несущей способности стальных конструкций. Список доступных функций определяется требованиями учебного процесса и может меняться. Примерный вид диалогового окна приведен на рисунке
5
Вид диалогового окна Insert Function при использовании функций пользователя
Все приводимые ниже функции поставляются по принципу «как есть» и прошли ограниченное тестирование. Авторы не гарантируют
отсутствие ошибок и не несут ответственность, если таковые имеются.
Перечень доступных функций пользователя
fi(lambda, Ry) – возвращает коэффициент продольного изгиба для центрально-сжатого стержня в соответствии с табл.72 [1].
Аргументы функции: lambda – гибкость стержня,
Ry – расчетное сопротивление стали.
fe74(lef, mef) – возвращает коэффициент ϕe для проверки устойчивости внецентренно-сжатых (сжато-изгибаемых) сплошностенчатых стержней в плоскости действия изгибающего момента в соответствии с табл.74 [1].
Аргументы функции:
lef – условная гибкость стержня,
mef – приведенный относительный эксцентриситет.
6
fe75(lef, mef) – возвращает коэффициент ϕe для проверки устойчивости внецентренно-сжатых (сжато-изгибаемых) сквозных стержней в плоскости действия изгибающего момента в соответствии с табл.75 [1].
Аргументы функции:
lef – условная приведенная гибкость стержня, mef – относительный эксцентриситет.
fib0(v1, v2, Ry) – возвращает коэффициент ϕb (коэффициент балочного изгиба) для проверки общей устойчивости двутавровых балок составного сечения, имеющих две оси симметрии. Определяется по Приложению 7*, п.1* [1].
Аргументы функции:
v1[] – вектор из пяти значений, содержащий параметры сечения и расчетную длину балки. V11 – высота сечения балки, v12 – толщина стенки, v13 – ширина полки, v14 – толщина полки, v15 – расчетная длина балки.
v2[] – вектор из трех значений, содержащий описание нагрузки и ряд дополнительных параметров. V21 – количество закреплений сжатого пояса в пролете, v22 – код нагрузки (0 – сосредоточенная, 1 – равномерно распределенная, 2 – сосредоточенная в четверти пролета при одном раскреплении в середине пролета), v23 – код нагруженного пояса (0 – верхний, 1- нижний).
Ry – расчетное сопротивление стали.
fib1(v1, v2, Ry) – возвращает коэффициент ϕb (коэффициент балочного изгиба) для проверки общей устойчивости прокатных двутавровых балок, имеющих две оси симметрии. Определяется по Приложению 7*, п.1* [1].
Аргументы функции:
v1[] – вектор из пяти значений, содержащий параметры сечения и расчетную длину балки. v11 – высота сечения балки, v12 – момент инерции Ix, v13 – момент инерции Iy, v14 – момент инерции при кручении It, v15 – расчетная длина балки.
v2[] – вектор из трех значений, содержащий описание нагрузки и ряд дополнительных параметров. v21 – количество закреплений сжатого пояса в пролете, v22 – код нагрузки (0 – сосредоточенная, 1 – равномерно распределенная, 2 – сосредоточенная в четверти пролета
7
при одном раскреплении в середине пролета), v23 – код нагруженного пояса (0 – верхний, 1- нижний).
Ry – расчетное сопротивление стали.
fib2(v1, v2, Ry) – возвращает коэффициент ϕb (коэффициент балочного изгиба) для проверки общей устойчивости двутавровых балок составного сечения, имеющих одну ось симметрии. Определяется по Приложению 7*, п.2* [1].
Аргументы функции:
v1[] – вектор из семи значений, содержащий параметры сечения и расчетную длину балки. v11 – высота сечения балки, v12 – толщина стенки, v13 – ширина более развитого пояса, v14 – толщина более развитого пояса, v15 – ширина другого пояса, v16 – толщина другого пояса, v17 – расчетная длина балки.
v2[] – вектор из трех значений, содержащий описание нагрузки, ее место приложения и код сжатого пояса. v21 – код нагрузки (0 – сосредоточенная в середине пролета, 1 – равномерно распределенная, 2
– чистый изгиб), v22 – код места приложения нагрузки (0 – к верхнему поясу, 1- к нижнему поясу), v23 – код более развитого пояса (0 – верхний, 1 – нижний).
Ry – расчетное сопротивление стали.
c1(v1, v2, v3, Ry) – коэффициент, требуемый при проверке устойчивости внецентренно-сжатого двутаврового или таврового сплошностенчатого стержня из плоскости действия изгибающего момента в соответствии с п.5.30 и 5.31 [1]. Тавровое сечение может состоять из спаренных уголков. При расчете двутавровых стержней изгибающий момент действует в плоскости стенки.
Аргументы функции:
v1[] – вектор из шести значений, содержащий параметры геометрии сечения. v11 – высота сечения стержня, v12 – толщина стенки, v13 – ширина более развитого пояса, v14 – толщина более развитого пояса, v15 – ширина другого пояса, v16 – толщина другого пояса. Тавровое сечение рассматривается как частный случай двутаврового с нулевыми значениями ширины и толщины соответствующей полки, т.е. v15= v16 = 0.
v2[] – вектор из двух значений; содержит значения внутренних усилий в расчетном сечении. v21 – изгибающий момент, v22 –
8
продольная сила. Продольная сжимающая сила всегда принимается со знаком «+». Изгибающий момент считается положительным, если он догружает более развитый пояс.
v3[] – вектор из двух значений; содержит расчетные длины стержня. v31 – расчетная длина в плоскости действия изгибающего момента, v32 – расчетная длина из плоскости действия изгибающего момента.
Ry – расчетное сопротивление стали.
Примечание. Для сечений, имеющих одну ось симметрии и относительный эксцентриситет 5,0<mx<10,0, коэффициент ϕb, определяемый по формулам 58 и 59 [1], вычисляется как для случая чистого изгиба с нагрузкой, приложенной к более развитому поясу.
Обработка ошибок
Большинство перечисленных выше встроенных функций имеют блоки обработки ошибок. Вывод сообщения об ошибке может осуществляться двумя способами: через стандартное сообщение Mathcad об ошибке либо с помощью диалогового окна сообщений.
Пример стандартного сообщения системы Mathcad
При попытке вычислить коэффициент продольного изгиба с помощью функции fe74( lef, mef) при значении относительного эксцентриситета mef=21,0 Mathcad вернет сообщение об ошибке
"Аргумент вне диапазона таблицы":
9
Пример вывода предупреждений с помощью окна сообщений
При попытке вычислить коэффициент c(v1,v2,v3,Ry) для несимметричного сечения функция пользователя вызовет окно предупреждений:
После закрытия окна предупреждений последует стандартное сообщение системы Mathcad об ошибках "Во время вычислений
получено значение переменной, не охватываемое разделом или таблицей СНиП":