МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего
образования
«МОСКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
по направлению 09.03.01 Информатика и вычислительная техника
Образовательная программа (профиль)
«Интеграция и программирование в САПР»
ДОПУЩЕНА К ЗАЩИТЕ
Руководитель образовательной программы
/ А.В. Толстиков, к.т.н., доцент/
И.о. заведующего кафедрой
/ А.Ю. Филиппович/
на тему:
Математическое и программное обеспечение компьютерного анализа ресурса
трубчатых элементов высокотемпературного оборудования
с учетом ползучести конструкционного материала
Нормативный контроль пройден
/
«
/
»
2020 г.
Руководитель ВКР: ________________/ Луганцев Л.Д., д.т.н., профессор
подпись
ФИО, уч. звание и степень
Студент: ________________________/ Остроухова Т.С., группа 161-341
подпись
Москва, 2020
/
ФИО, группа
/
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего
образования
«МОСКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
ЗАДАНИЕ НА ВЫПУСКНУЮ КВАЛИФИКАЦИОННУЮ РАБОТУ
по направлению 09.03.01 Информатика и вычислительная техника
Образовательная программа (профиль)
«Интеграция и программирование в САПР»
ТЕМА ВКР
Математическое и программное обеспечение
компьютерного анализа ресурса трубчатых
элементов высокотемпературного оборудования
с
учетом
ползучести
конструкционного
материала
ПРАКТИЧЕСКИЙ РЕЗУЛЬТАТ
Компьютерный анализ текущего состояния и
Назначение
ресурса трубчатых элементов в условиях
силового и температурного воздействия
Численный анализ параметров состояния
Основные функции
трубчатого элемента на протяжении жизненного
цикла, расчетная оценка располагаемого и
остаточного ресурса
Embarcadero RAD Studio, SQLite Studio
Используемые технологии и
платформы
ВЫПОЛНЕНИЕ РАБОТЫ
Решаемые задачи
Состав технической документации
Состав графической части
Разработка метода и алгоритма текущего
состояния изделия, расчетная оценка ресурса
конструкции,
реализация
полученных
результатов виде программного обеспечения
Методы и средства разработки программного
обеспечения,
руководство
пользователя,
руководство
системного
программиста,
описание программного продукта
Иллюстративные материалы к докладу
ПЛАН РАБОТЫ НАД ВКР
№
п/п
1
2
3
4
5
6
7
8
9
10
11
12
13
ЗАДАЧИ
Поиск, изучение и
анализ научнотехнической
литературы по теме
ВКР
Постановка задачи
Построение
математической
модели скорости
ползучести
Построение
математической
модели процесса
ползучести
трубчатого элемента
Разработка алгоритма
решения задачи
Освоение практики
структурного
программирования
прикладных задач в
системе Embarcadero
RAD Studio
Разработка
модульной структуры
программного
продукта
Разработка
управляющего
программного модуля
Разработка функций
программы с учетом
их взаимосвязей и
способов передачи
управления
Отладка и
тестирование
программы
Разработка
программной
документации
Составление и
оформление
пояснительной
записки к ВКР
Подготовка доклада и
иллюстративных
материалов к защите
ВКР
НЕДЕЛИ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
РУКОВОДИТЕЛЬ ОП:
«__»
2020,
/ Толстиков А.В.
подпись
, к.т.н., доцент /
ФИО, уч. звание и степень
РУКОВОДИТЕЛЬ ВКР:
«__»
2020,
/ Луганцев Л.Д._________, д.т.н., профессор /
подпись
ФИО, уч. звание и степень
СТУДЕНТ:
«__»
2020,
/ Остроухова Т.С._______, группа 161-341 /
подпись
ФИО, группа
АННОТАЦИЯ
Дипломный проект на тему: Математическое и программное обеспечение
компьютерного анализа ресурса трубчатых элементов высокотемпературного
оборудования с учетом ползучести конструкционного материала.
Автор: Остроухова Татьяна Сергеевна, студентка 4 курса. Московский
политехнический университет. Кафедра инфокогнитивных технологий, год
выпуска – 2020 г.
Число страниц пояснительной записки 153, на которых размещены 83
рисунков, 11 таблиц. При написании диплома использовалось 24 источника.
На основе теории течения установившейся ползучести предложена
математическая
модель
высокотемпературного
процесса
ползучести
оборудования.
элементов
Изложены
метод
конструкций
и
алгоритм
компьютерного анализа располагаемого и остаточного ресурса трубчатых
элементов конструкций, работающих в условиях силового и температурного
воздействия.
Численная реализация предложенного метода расчетной оценки ресурса
элементов
конструкций
с
учетом
ползучести
осуществлена
в
виде
программного обеспечения на языке программирования С++ в среде
программирования Embarcadero Rad Studio.
В данной работе представлены: введение, обзор литературы, постановка
задачи, математические модели, метод и алгоритм решения задачи, пример
применения программного продукта.
Разработан комплект документации по эксплуатации программы: методы
и средства разработки программного обеспечения, руководство программиста,
руководство пользователя, описание программного продукта.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ .............................................................................................................. 7
Глава 1 ОБЗОР И АНАЛИЗ НАУЧНО-ТЕХНИЧЕСКОЙ ЛИТЕРАТУРЫ..... 11
Глава 2 ПОСТАНОВКА ЗАДАЧИ ...................................................................... 24
Глава 3 МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ КИНЕТИКИ
УСТАНОВИВШЕЙСЯ ПОЛЗУЧЕСТИ .............................................................. 26
Глава 4 МАТЕМАТИЧЕСКАЯ МОДЕЛЬ ВЯЗКОГОУПРУГОГО
ДЕФОРМИРОВАНИЯ ТРУБЧАТЫХ ЭЛЕМЕНТОВ ....................................... 39
Глава 5 МЕТОД И АЛГОРИТМ ЧИСЛЕННОГО АНАЛИЗА ПАРАМЕТРОВ
СОСТОЯНИЯ И РЕСУРСА ТРУБЧАТЫХ ЭЛЕМЕНТОВ .............................. 47
Глава 6 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ МЕТОДА РЕШЕНИЯ ЗАДАЧИ. 53
6.1 Методы и средства разработки программного продукта ............................ 53
6.2 Описание программного продукта ................................................................ 62
6.3 Руководство системного программиста........................................................ 76
6.4 Руководство пользователя .............................................................................. 80
Глава 7 ПРИМЕР ПРИМЕНЕНИЯ ПРОГРАММНОГО ПРОДУКТА............. 91
ЗАКЛЮЧЕНИЕ ..................................................................................................... 97
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ........................................... 98
ПРИЛОЖЕНИЕ 1 СЛОВАРЬ ТЕРМИНОВ ..................................................... 100
ПРИЛОЖЕНИЕ 2 ЛИСТИНГ ПРОГРАММНОГО КОДА ............................. 103
ПРИЛОЖЕНИЕ 3 МЕТОД НАПРАВЛЕННОГО СКАНИРОВАНИЯ .......... 151
ВВЕДЕНИЕ
В настоящее время значительная часть оборудования в химической,
нефтехимической,
нефтеперерабатывающей
промышленности
работает
высокотемпературному
при
и
высоких
оборудованию
относятся
смежных
отраслях
температурах.
нагревательные
К
печи,
реакционные печи (печи водородного риформинга, печи процессов пиролиза,
печи процессов замедленного коксования), футерованные реакторы различных
процессов нефтепереработки и нефтехимии, топки, инсенираторы процессов
утилизации серы, утилизации аммиака, элементы установок каталитического
крекинга. Например, тепловые электростанции используют пар, который нагрет
до 500-560 °С, а в некоторых случаях - до 650 °С. Стационарные газовые
турбины и воздухонагреватели работают при температуре более 700 °С.
Наиболее высокие рабочие температуры в химических установках достигают
1000 °С и более.
Обеспечение ресурса и надежности оборудования – одна из ключевых
задач современности, которая решается на всем протяжении работы
конструкций и представляет собой совокупность научно-методических и
организационно-технических
мероприятий.
Высoкие
экономические
показатели производства можно получить только при достижении наилучших
показателей работоспособности и надежности оборудования как на стадии
проектирования, а также на стадиях изготовления и эксплуатации.
Непрерывное увеличение рабочих параметров машин и аппаратов при
одновременном понижении их материалоемкости приводит к существенному
увеличению уровня напряженного состояния и возникновению в элементах
конструкций необратимых пластических деформаций, изменяющихся во
времени
—
деформаций
ползучести
конструкционного
материала.
Повреждение изделия в условиях ползучести сводится к развитию
трещинообразования,
разрыхления
материала.
Трещинообразование
начинается на самых ранних этапах деформации и связано с ростом
имеющихся
и
возникновением
новых
7
микродефектов.
Постепенно
развивающиеся процессы ползучести могут привести к внезапным отказам, а
поврежденность материала элементов в составе конструкций может быть не
всегда выявлена с помощью методов неразрушающего контроля.
Практическая
работоспособности
невозможность
и
остаточного
оперативного
ресурса
изделий
исследования
неразрушающими
средствами контроля определяет актуальность разработки методов численного
анализа процессов ползучести конструкционного материала, основанных на
положениях механики вязкоупругой сплошной среды.
Для обоснованной оценки ресурса элементов высокотемпературного
оборудования необходимы надежные методы расчета, предусматривающие
детальное и последовательное во времени исследование кинетики напряженнодеформированного состояния изделий с учетом истории нагружения на основе
математических моделей высокого уровня.
Эффективное решение трудоемких задач, направленных на обоснование
работоспособности
элементов
конструкций
в
высокотемпературном
оборудовании с учетом определенных условий эксплуатации, так же
достоверная оценка ресурса элементов возможны лишь с применением
компьютерной техники, а также современных пакетов средств и методов
программирования. В связи с этим возникает необходимость разработки
математических моделей, методов и алгоритмов решения задач, направленных
на обоснование работоспособности и ресурса элементов оборудования.
Численная реализация методов расчета является актуальной задачей, для
решения которой необходимо создание математического и программного
обеспечения. При решении задачи компьютерного анализа работы трубчатых
элементов конструкций необходимо рассматривать все этапы исследования:
построение математической модели, разработку метода и алгоритма
численного
анализа,
разработку
математического
и
программного
обеспечения, численный расчет и анализ результатов как звенья единой цепи
и принимать во внимание связи между ними. Только при таком условии можно
получить оперативное решение задачи.
8
Тонкостенные трубчатые элементы являются важным конструктивным
элементом широкого ряда высокотемпературного оборудования в различных
отраслях промышленности. По условиям эксплуатации оборудования
трубчатые элементы предназначены для работы примерно до 100 тысяч часов,
работающие при температурах до 1100 ºС, давлений до 10 МПа.
Работоспособность и надёжность оборудования во многом определяется
несущей способностью и ресурсом трубчатых элементов, испытывающих в
процессе
эксплуатации
Обоснование
значительные
работоспособности
высокотемпературного
термомеханические
и
ресурса
оборудования
является
воздействия.
трубчатых
актуальной
элементов
научно-
технической задачей. В связи с вышеизложенным настоящая работа
направлена на решение этой задачи.
Целями работы являются:
Разработка метода и алгоритма численного анализа показателей
состояния, располагаемого и остаточного ресурса трубчатых элементов
высокотемпературного оборудования с учетом истории нагружения на основе
математического моделирования кинетики вязкоупругого деформирования
изделий.
Разработка программного обеспечения компьютерного мониторинга
показателей состояния и остаточного ресурса трубчатых элементов на всем
протяжении жизненного цикла.
Исследование характерных особенностей работы рассматриваемых
изделий методами численного эксперимента.
В первом разделе данной работы приведен литературный обзор и анализ
публикаций.
Во втором разделе изложена постановка задачи о ползучести
тонкостенного трубчатого элемента, который нагружен внутренним давлением,
а также осевым усилием и находящегося под воздействием температурной
нагрузки.
9
Третий раздел содержит обоснование выбора математической модели
скорости ползучести.
Четвертый раздел содержит вывод уравнений состояния конструкции в
процессе вязкоупругого деформирования.
Пятый раздел посвящен разработке алгоритма расчета напряженнодеформированного состояния трубчатых элементов высокотемпературного
оборудования.
В шестом разделе приведено описание разработанного программного
обеспечения, а также рассматривается разработка комплекта документации по
эксплуатации программы: методы и средства разработки программного
продукта,
описание
программного
продукта,
программиста и руководство пользователя.
10
руководство
системного
Глава 1 ОБЗОР И АНАЛИЗ НАУЧНО-ТЕХНИЧЕСКОЙ ЛИТЕРАТУРЫ
Высокотемпературное оборудование широко применяется в химической,
нефтехимической,
нефтеперерабатывающей
и
других
отраслях
промышленности. Поскольку элементы конструкций работают при очень
высоких температурах (800-1000°С), а также в условиях действия постоянного
напряжения в конструкционном материале элементов со временем развиваются
необратимые деформации, что понимается под ползучестью [1].
В 1826 году французским механиком и инженером А. Навье было
впервые отмечено явление, которое в последствии получило название
ползучесть. В статье Навье были приведены результаты испытаний некоторых
материалов, но отсутствовали измерения ползучести. В дальнейшем другой
выдающийся ученый Л. Вика опубликовал свои испытаний и получил кривые
ползучести.
На начало 20-ого века приходятся исследования различных материалов, в
том числе и исследования металлов и сплавов, стекол и резин на ползучесть. С
развитием техники, с ползучестью столкнулись в разных областях, например,
заметили ползучесть лопаток, дисков в газовых и паровых турбинах, в
конструкциях трубчатых печей, также ракет и реактивных двигателей. В связи
с этой проблемой требовались конструкционные материалы, из которых
изготовленные детали выдерживали бы нагрузки длительное время при
повышенных температурах. К приемеру, жаропрочные стали применяются на
электрических станциях, при перекачке нефти и нефтепродуктов, природного
газа, гидрогенизации горючево и т.д. Некоторые жаропрочные стали достигают
рабочих температур более 1500°C. Длительное время считалось, что ползучесть
имеет возможность происходить лишь при повышенных температурах,
впрочем, ползучесть развивается и при довольно низких температурах, так, к
примеру, ползучесть кадмия возникает при 269 °С, а в железе при 169 °С.
Принято различать три стадии (участка) кривой ползучести.
11
Рис. 1.1 Кривые ползучести при напряжениях 3 2 1
Цифра I показывает участок неустановившейся ползучести, при
убывании скорости деформации, который называется первыой стадией
ползучести.
На
втором
участке
скорость
деформации
прибегает
к
минимальному значению, в промежутке времени (t ∈ [t1, t2]) скорость
деформации ползучести не изменяется,
p const
Это стадия называется установившейся ползучестью. Третий участок
соответствует увеличению скорости ползучести, интенсивному накоплению
микроповрежденности
в
материале,
и
он
заканчивается
физическим
разрушением испытуемого образца (точка разрушения на рис. 1.1 обозначена
символом ∗). Этот участок называется стадией ускоренной ползучести или
третьей стадией ползучести. Разбиение кривой ползучести на три участка в
значительной мере носит условный характер.
Рядом авторов предложено описание первых участков кривой ползучести
с помощью аналитических выражений
c f ( ) (t ) F ( )t
где функции f ( ) и F ( ) , характеризующие первую и вторую стадии
ползучести соответственно, могут быть выражены различными зависимостями.
Наиболее часто используют степенные зависимости:
f ( ) B1 n1
12
F ( ) B2 n2
где постоянные B1 , B2 , n1 , n2 зависят от температуры.
Переход к третьей стадии ползучести, который характеризуется
нарастающими скоростями и связан с возникновением пор и трещин в металле,
приводит к уменьшению эффективного сечения образца и к разупрочнению
металла вследствие изменения структуры [1]. В связи с этим работа материала
на этом участке считается недопустимой. При незначительных напряжениях в
определенных временных интервалах третья стадия ползучести может
отсутствовать [4]. Однако в некоторых случаях ее продолжительность может
достигать более 50%, от времени до разрушения, а ускорение ползучести, за
исключением участка, непосредственно предшествующего разрушению, может
быть небольшим. Это позволяет при необходимости включать в ресурс детали
частично работу материала в условиях третьей стадии ползучести.
Повреждение материала в условиях ползучести сводится к развитию
трещинообразования, разрыхления. Трещинообразование начинается на самых
ранних этапах деформации и связано с ростом имеющихся и возникновением
новых микродефектов.
Расчеты деталей на ползучесть в основном базируются на результатах
экспериментальных исследований ползучести при одноосном растяжении,
причем
большее внимание
вызывают
1-ая и 2-ая стадии,
так
как
при
эксплуатации деталей не допускается потеря устойчивости или развитие
трещин. На стадии III возникают большие деформации и процесс протекает при
возрастающих напряжениях. Исследование 3-ей стадии выполняют, как
правило, в связи с анализом процесса разрушения деталей.
При одноосном растяжении в большинстве случаев рассматриваются
процессы изменения во времени деформаций при постоянном напряжении
(последействие или собственно ползучесть) и напряжений при постоянной
деформации (релаксация).
13
Наиболее экспериментально подтвержденной в этих случаях является
степенная зависимость минимальной скорости деформации ползучести от
напряжения [1]
vc min vc* min / *
n
где * — произвольная величина напряжения, за которую могут быть приняты,
например, предел пропорциональности или текучести материала или любое
*
число, например 10 или 100 МПа; vc min — минимальная скорость деформации
ползучести при напряжении
* . Параметр vc*min и показатель степени п для
материала изделия зависят от температуры;
Большинство решений задач расчета на ползучесть при одноосном
растяжении выполнено на основе этой зависимости. Она достаточно хорошо
согласуется с экспериментальными данными и удобна для использования в
расчетах. Зависимость величины
vc* min
от температуры может быть
представлена в виде [2]
vc* min
Ae
H
RT
где A — постоянная для конструкционного материала при напряжении * ; Т
— абсолютная температура; R — газовая постоянная; H — энергия активации
ползучести. Под последней понимается энергия элемента тела, превышение
которой приводит к смещению элемента и в результате — к деформации.
В общем случае ползучести изменение деформаций сопровождается
изменением напряжений. Связь между деформацией, напряжением, скоростью
их изменения и временем в случае одноосного растяжения устанавливают
технические теории ползучести, которые на основании опытных данных дают
возможность получить описание процесса деформирования материала при
изменении во времени напряжений и деформаций. Существуют следующие
теории ползучести: старения, упрочнения и течения.
14
Согласно теории старения предполагается, что при заданной температуре
между деформацией, напряжением и временем существует определенная
зависимость
1 , , 0 .
Это предположение равносильно допущению о существовании при
заданной температуре поверхности в системе координат , , . Рассекая эту
поверхность плоскостями, перпендикулярными к осям , и , получаем
соответственно графики ползучести при постоянном напряжении (рис. 1.2),
графики релаксации напряжений при постоянной деформации (рис. 1.3).
Рис. 1.2 Графики ползучести
Рис. 1.3 Графики релаксации
Теория старения была предложена Содербергом [3]. Обобщение, ее
анализ и приведенная выше трактовка даны Ю. Н. Работновым [4].
Аналитические зависимости деформации ползучести от напряжения и
времени согласно теории старения, можно разбить на две группы [1], первая из
которых имеет вид
с Q ,
(1.1 )
вторая зависимость:
с Q1 Q2 ,
где Q , Q1 , Q2 – функции напряжения и температуры, и – функции
времени и температуры.
15
Если принять, что Q – степенная функция напряжения, то выражение
(1.1) принимает вид
с / * .
n
Теория старения не может описать ступенчатое нагружение, так как
согласно этой теории, в момент изменения напряжения деформация ползучести
должны иметь разрыв, что, очевидно, невозможно.
Теория течения была предложена Давенпортом [5]. Она получила
довольно большое распространение благодаря работам Л. М. Качанова [6].
Согласно теории течения предполагается, что при заданной температуре
между скоростью деформации ползучести, напряжением и временем
существует определенная зависимость:
2 vc , , 0 .
Это предположение равносильно допущению о существовании поверхности в
координатах vc , , .
Наиболее распространенной аналитической зависимостью скорости
деформации ползучести от напряжения и времени является зависимость
следующего вида:
vc / * B ,
n
(1.2)
где п — коэффициент для конструкционного материала, зависящий от
температуры; В — функция времени и температуры.
Удквист [7] предложил схематизировать кривую ползучести прямой в
соответствии с уравнением
0 vc ,
(1.3 )
причем автором принято, что
0 / 0 ; vc / c ,
n
n0
где 0 , c , n0 , n – функции температуры для конструкционного материала.
16
Обобщая уравнение схематизированной кривой ползучести (1.3) на
случай переменных во времени напряжений и деформаций, шведский ученый
Удквист предложил вариант теории течения в следующем виде
n
0
d
vc
d 0
*
n
Отличие этой теории от теории течения (1.2) заключается в том, что в ней
при постоянном напряжении скорость деформации принимается постоянной, а
упругая деформация в этом случае объединена с деформацией, возникшей в
первой стадии ползучести, причем принята также степенная зависимость
суммы этих деформаций от напряжения.
Согласно теории упрочнения предполагается, что при заданной
температуре
между
деформацией
ползучести,
скоростью
деформации
ползучести и напряжением существует зависимость
3 с , vc , 0 .
Это
предположение
равносильно
допущению
(1.4)
о
существовании
поверхности в координатах с , vc , . В уравнении (1.4) время в явном виде не
содержится.
Теория упрочнения была предложена Людвиком [8], Надаи [9] и
Давенпортом [5]. Дальнейшее развитие ее принадлежит Ю. Н. Работнову [4].
Аналитическая зависимость между скоростью деформации ползучести,
деформацией ползучести и напряжением обычно представляется в виде
vc c f ,
(1.4)
причем предполагается, что f 0 0 . Для функции f были предложены
следующие выражения:
f / * ,
w
f a exp / b 1 ,
f g exp / c ,
17
(1.5)
(1.6)
(1.7)
где , , w, a, b, g, c — коэффициенты для конструкционного материала,
зависящие от температуры. Очевидно, что выражение (1.7) несправедливо при
малых напряжениях и при 0 , так как в этом случае f 0 0 .
И.В. Стасенко [10] предложил формулировку теории упрочнения, которая
позволяет более точно, чем уравнение (1.4), описать вторую стадию ползучести
и избежать бесконечно большой скорости деформации ползучести в начальный
момент времени, как это следует из зависимости (1.4).
Формулировка теории упрочнения, несколько отличная от уравнения
(1.4), была предложена И.И. Труниным [11]. На основании физических
соображений он принял, что
vc AT p m p 0 c
n
H 0 c r c
exp
,
RT
(1.8)
где p, m, n, c, r – постоянные для рассматриваемого конструкционного
материала; H 0 – эффективная энергия активации в ненагруженном теле; p 0
– мгновенная пластическая деформация; T – абсолютная температура; R –
газовая постоянная. Используя соотношение (1.8) легко получить уравнения
кривых ползучести при постоянном напряжении и кривых релаксации при
постоянной релаксации.
Многочисленные
экспериментальные
исследования
ползучести
широкого ряда конструкционных материалов показывают, что скорость
установившейся ползучести существенно зависит от уровня напряженного
состояния изделия. Относительно малое возрастание напряжения вызывает
значительное увеличение скорости ползучести. Рядом авторов предлагались
различные зависимости скорости ползучести от напряжения.
Одной из наиболее проверенных экспериментально является степенная
зависимость, предложенная Бейли [12]:
c ( ) A ( / * )n
(1.9)
где * – произвольная величина напряжения, за которую могут быть приняты,
например, предел пропорциональности или предел текучести материала; А –
18
постоянная для данного конструкционного материала. Показатель n для сталей
колеблется в пределах 3 – 8 [4]. Формула (1.9) отражает случай диффузионной
ползучести, характерной для высоких температур и небольших напряжений
[13].
Вместо
степенной
зависимости
(1.9)
часто
используют
экспоненциальную зависимость [4]:
c ( ) k e
(1.10)
Недостаток формулы (1.10) состоит в том, что ее нельзя применять при
маленьких напряжениях, она даёт отличную от нуля скорость ползучести при
0.
Однако при больших напряжeниях она находится в очень хорошем
согласии с экспериментальными данными [13]. Формула (1.10) отражает случай
дислокационной
(сдвиговой)
ползучести,
которая
происходит
при
относительно небольшой температуре и высоких напряжениях.
При повышении температуры скорость установившейся ползучести
увеличивается. Данные эксперимента показывают, что ползучесть это
термически активируемый процесс [2], а скорость установившейся ползучести
связана с температурой экспоненциальной зависимостью
H
vc T B exp
,
R T
(1.11)
где ΔH – энергия активации процесса, контролирующего скорость ползучести,
Дж/моль; R = 8,314 Дж/(моль·К) – универсальная
газовая
постоянная; Т –
абсолютная температура, К; B – постоянная для заданного конструкционного
материала.
Зависимость скорости деформации ползучести от температуры (1.11)
указывает на то, что процессы, которые контролируют скорость ползучести,
связаны с микропроцессами на атомном уровне [2]. Величина энергии
активации ΔH меняется в зависимости от условий нагружения, преобладания
того или иного механизма ползучести. Зависимость (1.11) справедлива только
при данном структурном состоянии материала.
19
Наряду с моделью температурной зависимости (1.11) рядом авторов [4,
14] предложена несколько иная зависимость в предположении, что величина
энергии активации ΔH зависит от напряжения. В результате температурная
модель приводится к виду
где
Q0 –
энергия
Q γ
vc T B exp 0
R T
,
активации процесса,
Дж/моль;
(1.12)
– структурно-
чувствительный коэффициент, Дж/(моль·МПа).
Температурная зависимость типа (1.12) проверялась на широком ряде
конструкционных
материалов
С.Н.
Журковым
[15–17].
Результаты
проведённых экспериментов показали, что соотношение (1.12) справедливо в
широком диапазоне изменения температуры.
В технических теориях ползучести предполагается, что упрочнение
считается изотропным. Проведенные эксперименты на ползучесть широкого
ряда
материалов
указывают
на
существенно
анизотропный
характер
упрочнения в условиях ползучести. Учет деформационной анизотропии может
быть произведен путем разделения тензора напряжений на тензоры активных
напряжений и остаточных микронапряжений [1]. Согласно общим положениям
теории ползучести с анизотропным упрочнением при сложных напряженных
состояниях компоненты скорости деформаций ползучести пропорциональны
девиаторам напряжений:
vijc
3sij
2i
vic ,
где sij ij 0 – компоненты девиатора напряжений;
1
3
0 11 22 33 – среднее напряжение;
i
3
sij sij – интенсивность напряжений;
2
vic f i , T – интенсивность скорости деформаций ползучести.
20
(1.13)
Интенсивность
скорости
деформации
ползучести
является
произведением двух функций:
vic GQ ,
(1.14)
одна из которых G G i – функция интенсивности напряжений, а вторая
Q Q T – функция температуры.
Функция G i может быть принята в форме степенной зависимости
(1.9):
G i A ( i / * )n .
Функцию
Q Q T
можно принять в форме экспоненциальной
зависимости (1.11) или (1.12).
В результате можно получить следующие зависимости для численного
анализа интенсивности скорости деформаций установившейся ползучести:
n
H
vic A i / т exp
,
RT
(1.15)
n
Q γ
vic A i / т exp 0
.
R T
(1.16)
Формулы (1.15) и (1.16) можно рассматривать как математические
модели интенсивности скорости деформации установившейся ползучести.
Параметры моделей C, n, Q0 , γ являются постоянными величинами для
заданного конструкционного материала и определяются по результатам
экспериментальных исследований.
По проблеме расчета прочности тонкостенных трубчатых элементов
высокотемпературного оборудования, работающих в условиях ползучести,
число публикаций ограничено. В работах [18–20] рассматривается задача о
моделировании процесса ползучести и надежности реакционных труб средней
толщины, применяемых в печах конверсии углеводородных газов. На основе
теории
течения
установившейся
ползучести
21
исследуется
кинетика
вязкоупругого деформирования изделий как случайного процесса. Для решения
задачи о вероятности безотказной работы изделия применяется шаговый метод.
Основная трудность при численной реализации шаговых методов расчета
связана с принципиальной необходимостью оценки погрешности вычислений.
Шаговые методы в ряде случаев оказываются неустойчивыми – малая ошибка
(методическая, округления или заложенная в исходных данных увеличивается
с ростом аргумента. Оценка и учет методической погрешности затруднены, и
вопросы о сходимости численного решения и величине накопленной
погрешности остаются открытыми. Попытки уточнения средних на этапе
нагружения расчетных значений параметров методом последовательных
приближений могут привести к неустойчивому счету [1].
Таким образом, проблема создания наиболее точных методов численного
анализа вязкоупругого деформирования элементов высокотемпературного
оборудования на основе математических моделей высокого уровня остается
актуальной. Важное практическое значение имеет задача численной разработки
методов расчета и оптимизации конструкций, связанная с созданием
устойчивых и экономичных алгоритмов, математического и программного
обеспечения для отраслевых систем автоматизированного проектирования.
Разработка метода численного анализа показателей состояния трубчатых
элементов высокотемпературного оборудования связана с необходимостью
обоснованного
формирования
математических
моделей
скорости
установившейся ползучести конструкционного материала с последующим
определением
численных
значений
параметров
моделей
на
основе
экспериментальных данных. Наиболее перспективными для решения этой
задачи представляются математические модели (1.15) и (1.16), основанные на
теории течения установившейся ползучести.
В качестве научной основы при реализации методологического подхода
к решению проблемы обоснования несущей способности и ресурса элементов
высокотемпературного
оборудования
принимаем
теорию
течения
установившейся ползучести, а также известные теоретические положения
22
механики деформируемого твердого тела и закономерности вязкоупругого
деформирования и разрушения.
23
Глава 2 ПОСТАНОВКА ЗАДАЧИ
Рассматривается трубчатый элемент, представляющий собой круговую
тонкостенную цилиндрическую оболочку (рис. 2.1).
Рис. 2.1 Трубчатый элемент
Конструктивные параметры рассматриваемого изделия: наружный
диаметр – Dн, мм, длина – L, мм, толщина стенки – h, мм. Параметры силовой
нагрузки: внутреннее давление – q, МПа, а также равномерно распределенное
по торцу оболочки осевое усилие, равнодействующая которого равна P, Н.
Трубчатый элемент нагрет до температуры T, ℃.
Параметры конструкционного материала: модуль упругости E, МПа,
коэффициент Пуассона , температурный коэффициент теплового расширения
, 1/К, предел текучести при нормальной температуре т0 , МПа.
Температурное поле полагаем осесимметричным и постоянным по длине
цилиндра. Силовые нагрузки и температура во времени не изменяются.
Трубчатый элемент работает в условиях установившейся ползучести в
упругой стадии – интенсивность напряжений не превосходит предела
текучести.
Параметры
напряженно-деформированного
состояния
и
геометрические размеры изделия изменяются с течением времени в силу
необратимых деформаций ползучести.
Ставятся следующие задачи:
– формирование математической модели кинетики установившейся
ползучести конструкционного материала на основе экспериментальных
24
данных;
–
разработка
деформирования
математической
трубчатого
модели
элемента
на
процесса
основе
вязкоупругого
теории
течения
установившейся ползучести;
– разработка метода и алгоритма численного анализа параметров
напряженно-деформированного состояния изделия на протяжении жизненного
цикла;
–
разработка численного метода и алгоритма расчетной оценки
располагаемого и остаточного ресурса трубчатых элементов;
– реализация разработанных методов и алгоритмов в виде программного
обеспечения, ориентированного на использование в отраслевых САПР.
25
Глава 3 МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ КИНЕТИКИ
УСТАНОВИВШЕЙСЯ ПОЛЗУЧЕСТИ
Наиболее распространенной аналитической зависимостью скорости
деформации установившейся ползучести от напряжения и температуры при
одноосном напряженно-деформированном состоянии является зависимость
следующего вида:
vс ( , T ) A
/ т0
n
e
H
RT
,
(3.1)
где A, ч-1, n – характеристики конструкционного материала (параметры
математической модели ползучести); – действующее напряжение, МПа; т0
– предел текучести конструкционного материала при нормальной температуре,
МПа; H – энергия активации процесса, контролирующего
ползучести,
Дж/моль;
скорость
R = 8,314 – универсальная газовая постоянная,
Дж/(моль·К); T – абсолютная температура, К.
Величина
энергии
активации
H изменяется
в
зависимости
от
преобладания того или иного механизма ползучести и условий нагружения.
Поскольку ползучесть определяется термически активируемыми процессами,
то действующее напряжение снижает потенциальный барьер сопротивления
деформации. Зависимость энергии активации ΔH от напряжения учитывается
соотношением [4, 14]:
H Q0 γ / т0 .
Здесь Q0 – энергия активации процесса, Дж/моль;
– структурно-
чувствительный коэффициент, Дж/(моль·МПа), т0 – предел текучести
материала при нормальной температуре, МПа.
Таким образом, уточненная аналитическая зависимость скорости
деформации установившейся ползучести от напряжения и температуры при
одноосном напряженно-деформированном состоянии принимает следующий
вид:
26
vс A
/ т0
n
Q0 γ / т0
exp
,
R
T
273
(3.2)
где A (ч-1), n – характеристики конструкционного материала (параметры
математической модели ползучести); – действующее напряжение, МПа; R
– универсальная газовая постоянная; T – температура изделия, °С.
Зависимости (3.1) и (3.2) можно рассматривать как математические
модели скорости деформации установившейся ползучести при одноосном
напряженно-деформированном состоянии.
Параметрами математических моделей (3.1) и (3.2) являются величины:
A, n, ΔH – для модели (3.1);
A, n, Q0 , – для модели (3.2).
Ставится задача определения параметров математических моделей (3.1) и
(3.2) на основе экспериментальных данных для жаропрочных сталей
следующих марок:
сталь 45Х25Н20С (зарубежный аналог NK-40),
сталь 45Х25Н35БС (зарубежный аналог Manaurite XM).
Эти стали получили широкое применение для изготовления трубчатых
элементов высокотемпературного оборудования в нашей стране и за рубежом.
В табл. 3.1 и 3.2 приведены данные [21, 22] о химическом составе и
механических свойствах исследуемых конструкционных материалов.
Таблица 3.1 – Химический состав конструкционных материалов
Материал
45Х25Н20С
(НК-40)
45Х25Н35БС
(Manaurite XM)
Содержание элементов, %
C
Cr
Ni
Si
Mn
Nb
S
0,350,45
23,027,0
19,022,0
max
1,75
max
1,5
нет
max
0,03
0,350,50
23,028,0
33,038,0
1,002,00
1,001,50
1,001,50
max
0,03
27
Таблица 3.2 – Механические свойства конструкционных материалов при 20 °С
Материал
Предел
текучести,
МПа
Предел
прочности,
МПа
45Х25Н20С
(НК-40)
240
min 450
45Х25Н35БС
(Manaurite XM)
245
Относительное
удлинение, %
Относительное
сужение, %
min 10
450
min 10
8
6
В табл. 3.3 и 3.4 представлены экспериментальные данные [22, 23] о
скорости деформации установившейся ползучести исследуемых материалов
при различных значениях напряжений и температуры.
Таблица 3.3 – Экспериментальные данные о скорости деформации
установившейся ползучести стали 45Х25Н20С
Температура, ˚С
Напряжение, МПа, вызывающее указанную скорость
установившейся ползучести, ч-1
vс 1·10-4
vс 1·10-5
vс 1·10-6
815
81,36
65,50
47,23
870
68,26
51,02
34,48
930
55,16
39,30
23,10
980
43,78
27,10
14,13
1040
32,75
18,48
7,24
Таблица 3.4 – Экспериментальные данные о скорости деформации
установившейся ползучести стали 45Х25Н35БС
Температура, ˚С
Напряжение, МПа, вызывающее указанную скорость
установившейся ползучести, ч-1
vс 1·10-7
vс 1·10-4
vс 1·10-5
vс 1·10-6
950
1000
48,0
35,0
34,0
25,0
24,0
18,0
16,8
12,0
1050
24,0
18,0
13,4
9,4
Для решения задачи определения параметров математических моделей
(3.1) и (3.2) применяем метод наименьших квадратов [24]. Согласно этому
методу для заданной функциональной зависимости
y f x; a0 , a1, ..., an
28
параметры a0 , a1, ..., an определяются из условия, чтобы сумма квадратов
отклонений экспериментальных величин yk ,
k 1,
2, ..., N от расчетных
f xk ; a0 , a1, ..., an , т.е. величина
N
S yk f xk ; a0 , a1, ..., an
2
(3.3)
k 1
принимала наименьшее значение.
Условие (3.3) сохраняется и для определения параметров функций
нескольких переменных. Например, для функции z f x, y; a0 , a1, ..., an от
двух переменных x и y параметры a0 , a1, ..., an определяются из условия
минимума суммы
N
S zk f xk , yk ; a0 , a1, ..., an .
2
(3.4)
k 1
Следуя
методу
наименьших
квадратов,
параметры
A,
n,
H
математической модели (3.1) определяем из условия минимума суммы
квадратов
относительных
отклонений
расчетных
величин
скорости
деформаций ползучести vcj A, n, H , полученных по уравнению (3.1), от
э
экспериментальных данных vcj
(табл. 3.1)
2
vcjэ vcj A, n, H
S1
.
э
v
j 1
cj
N
Параметры A, n, Q0 ,
(3.5)
математической модели (3.2) определяем из
условия минимума суммы квадратов относительных отклонений расчетных
величин скорости деформаций ползучести vcj A, n, Q0 , , полученных по
уравнению (3.2), от экспериментальных данных vcjэ (табл. 3.2)
2
vcjэ vcj A, n, Q0 ,
S2
.
э
v
j 1
cj
N
29
(3.6)
Задачу поиска оптимальных параметров сводим к решению ряда
оптимизационных параметрических задач. В качестве целевых функций
принимаем:
– для математической модели (3.1):
2
v A, n, H
1 A, n, H 1 cj
;
э
v
j 1
cj
N
(3.7)
– для математической модели (3.2):
2
vcj A, n, Q0 , γ
2 A, n, Q0 , γ 1
,
э
v
j 1
cj
N
где vcj A, n, H и vcj A, n, Q0 , γ –
(3.8)
скорости деформаций ползучести,
вычисляемые соответственно по формулам (3.1) и (3.2); vcjэ – данные
физического эксперимента в точках j 1, 2, ... , N . Для стали 45Х25Н20С
(табл. 3.1) общее число исследуемых точек N N1 15 , для стали 45Х25Н35БС
(табл. 3.2) число исследуемых точек N N2 12 .
На
управляемые
параметры
целевых
функций
1 A, n, H
и
2 A, n, Q0 , γ накладываем прямые ограничения
A 0 , n 0 , H 0 — для функции 1 A, n, H ,
A 0 , n 0 , Q0 0 , γ 0 — для функции 2 A, n, Q0 , γ ,
определяя тем самым области поиска оптимальных решений 1 и 2 для
целевых функций 1 и 2 .
Рассматриваемые задачи параметрической оптимизации заключаются в
поиске оптимальных значений управляемых параметров целевых функций
1 A, n, H и 2 A, n, Q0 , γ соответственно в областях 1 и
2 , и
минимальных значений целевых функций.
Численное решение задачи параметрической оптимизации учитывает
многократное вычисление значений целевой функции в процессе поиска
30
экстремума. В задачах оптимизации под испытанием системы понимают
вычисление значений целевой функции и функций ограничений в заданной
точке области поиска, т.е. однократное получение всей информации для
фиксированного набора управляемых параметров (однократный анализ или
расчет системы).
Решение сформулированных задач параметрической оптимизации
выполняли методом направленного сканирования, который основан на
применении равномерно распределенных в пространстве управляемых
параметров последовательностей пробных точек, ведущих от начальной точки
поиска в окрестность точки минимума целевой функции (см. Приложение 3).
Поиск минимума целевой функции вели поэтапно, сужая на каждом этапе
исследования область поиска.
Применительно к стали 45Х25Н20С целевые функции 1 A, n, H и
2 A, n, Q0 , γ формировали с использованием экспериментальных данных
табл. 3.3.
На заключительном этапе поиска оптимальных управляющих параметров
целевой функции 1 A, n, H исследовали пространство управляемых
параметров
11011 A 11014 ,
1 n 10 ,
1105 H 1106 .
Число испытаний при поиске минимума функции 1 A, n, H на этом
этапе составило 220 1 = 1048575.
В результате численного анализа определены оптимальные значения
управляемых
параметров
целевой
функции
1 A, n, H
для
стали
45Х25Н20С:
A 8,825 1013 ,
n 4,989 ,
H 3, 418 105 .
(3.9)
Минимальное значение целевой функции 1 A, n, H при оптимальных
параметрах (3.9) составляет 1min = 3,168.
31
В табл. 3.5 результаты расчета скорости установившейся ползучести для
стали 45Х25Н20С по математической модели (3.1) сопоставляются с данными
физического эксперимента (табл. 3.3).
Таблица 3.5 – Сопоставление результатов численного и физического
экспериментов для стали 45Х25Н20С (математическая модель (3.1))
№ п/п
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Т, град С
815
815
815
870
870
870
930
930
930
980
980
980
1040
1040
1040
S, МПа
47,23
65,5
81,36
34,47
51,02
68,26
23,1
39,3
55,16
14,13
27,1
43,78
7,24
18,48
32,75
Vc*10^6
1,03
5,27
15,54
1,32
9,33
39,89
1,08
15,26
82,83
0,36
9,34
102,28
0,06
6,2
107,65
Vcэ*10^6
1
10
100
1
10
100
1
10
100
1
10
100
1
10
100
На заключительном этапе поиска оптимальных управляющих параметров
целевой функции
2 A, n, Q0 , γ
для стали 45Х25Н20С исследовали
пространство управляемых параметров
1 109 A 11012 ,
1 n 10 ,
1 105 Q0 1 106 , 1 105 γ 1 106 .
Число испытаний при поиске минимума функции 2 A, n, Q0 , γ на этом
этапе составило 220 1.
В результате численного анализа определены оптимальные значения
управляемых параметров целевой функции
2 A, n, Q0 , γ
для стали
45Х25Н20С:
A 4, 233 1011 ,
n 1,537 ,
Q0 3,923 105 , γ 2,418 105 .
32
(3.10)
Минимальное
значение
целевой
2 A, n, Q0 , γ
функции
при
оптимальных параметрах (3.10) составляет 2 min = 0,179.
В табл. 3.6 результаты расчета скорости установившейся ползучести для
стали 45Х25Н20С по математической модели (3.2) сопоставляются с данными
физического эксперимента (табл. 3.3).
Точность математических моделей (3.1) и (3.2) при оптимальных
значениях управляемых параметров для стали 45Х25Н20С оцениваем по
среднему
квадратическому
отклонению
расчетных
величин
скорости
деформаций ползучести от экспериментальных данных.
Среднее
квадратическое
отклонение
расчетных
величин
от
экспериментальных данных для математической модели (3.1) вычисляем по
формуле
2
где vcj A, n, H –
уравнению (3.1);
j 1, 2, ... , N1
относительного
vcjэ
э
1 N1 vcj A, n, H vcj
С
,
N1 j 1
vcjэ
(3.11)
скорости деформаций ползучести, вычисленные по
– данные физического эксперимента в точках
э
1 N1 vcj A, n, H vcj
(табл. 3.3); C
– среднее значение
N1 j 1
vcjэ
отклонения
расчетных
величин
скорости
деформаций
ползучести от экспериментальных данных.
Таблица 3.6 – Сопоставление результатов численного и физического
экспериментов для стали 45Х25Н20С (математическая модель (3.2))
№ п/п
1
2
3
4
5
6
7
Т, град С
815
815
815
870
870
870
930
S, МПа
47,23
65,5
81,36
34,47
51,02
68,26
23,1
33
Vc*10^6
0,98
12,40
101,2
0,98
10,32
100,40
1,10
Vcэ*10^6
1
10
100
1
10
100
1
8
9
10
11
12
13
14
15
Среднее
930
930
980
980
980
1040
1040
1040
квадратическое
39,3
55,16
14,13
27,1
43,78
7,24
18,48
32,75
12,70
105,65
0,94
9,0
94,42
0,94
11,18
100,59
отклонение
расчетных
10
100
1
10
100
1
10
100
величин
от
экспериментальных данных для математической модели (3.2) вычисляем по
формуле
2
э
1 N 2 vcj A, n, Q0 , γ vcj
С
,
N 2 j 1
vcjэ
(3.12)
где vcj A, n, Q0 , γ – скорости деформаций ползучести по уравнению (3.1); vcjэ
– данные физического эксперимента в точках
j 1, 2, ... , N2
(табл. 3.3);
э
1 N2 vcj A, n, Q0 , γ vcj
– среднее значение относительного отклонения
C
N 2 j 1
vcjэ
расчетных величин скорости деформаций ползучести от экспериментальных
данных.
Среднее
квадратическое отклонение результатов расчета
по от
экспериментальных данных для стали 45Х25Н20С составляет:
– для математической модели (3.1) 0,2989 ;
– для математической модели (3.2)
0,0777 .
Полученные результаты показывают, что применительно к стали
45Х25Н20С математическая модель (3.2) обладает существенно более высокой
точностью по сравнению с математической моделью (3.1) и может быть
рекомендована для практических расчетов.
34
Применительно к стали 45Х25Н35БС целевые функции 1 A, n, H и
2 A, n, Q0 , γ формировали с использованием экспериментальных данных
табл. 3.4.
На заключительном этапе поиска оптимальных управляющих параметров
целевой функции 1 A, n, H исследовали пространство управляемых
параметров
11021 A 11024 ,
1 n 10 ,
1105 H 1106 .
Число испытаний при поиске минимума функции 1 A, n, H на этом
этапе составило 220 1.
В результате численного анализа определены оптимальные значения
управляемых
параметров
целевой
функции
1 A, n, H
для
стали
45Х25Н35БС:
A 4,267 10 23 ,
n 6,662 ,
H 5,378 105 .
(3.13)
Минимальное значение целевой функции 1 A, n, H при оптимальных
параметрах (3.11) составляет 1min = 0,353.
В табл. 3.7 результаты расчета скорости установившейся ползучести для
стали 45Х25Н35БС по математической модели (3.1) сопоставляются с данными
физического эксперимента (табл. 3.4).
Таблица 3.7 – Сопоставление результатов численного и физического
экспериментов для стали 45Х25Н35БС (математическая модель (3.1))
№ п/п
1
2
3
4
5
6
7
Т, град С
950
950
950
950
1000
1000
1000
S, МПа
16,8
24
34
48
12
18
25
35
Vc*10^6
0,08
0,87
8,83
87,81
0,07
1,02
9,09
Vcэ*10^6
0,1
1
10
100
0,1
1
10
8
9
10
11
12
1000
1050
1050
1050
1050
35
9,4
13,4
18
26
85,49
0,09
0,97
6,95
80,52
100
0,1
1
10
100
На заключительном этапе поиска оптимальных управляющих параметров
целевой функции 2 A, n, Q0 , γ для стали 45Х25Н35БС исследовали
пространство управляемых параметров
11023 A 11025 ,
1 n 10 ,
1 105 Q0 1 106 , 1 104 γ 1 105 .
Число испытаний при поиске минимума функции 2 A, n, Q0 , γ на этом
этапе составило 220 1.
В результате численного анализа определены оптимальные значения
управляемых параметров целевой функции
2 A, n, Q0 , γ
для стали
45Х25Н35БС:
A 4,498 10 23 ,
Минимальное
n 6,655 ,
значение
γ 710,8 .
Q0 5,371 105 ,
целевой
функции
(3.14)
2 A, n, Q0 , γ
при
оптимальных параметрах (3.14) составляет 2 min = 0,146.
В табл. 3.8 результаты расчета скорости установившейся ползучести для
стали 45Х25Н35БС по математической модели (3.2) сопоставляются с данными
физического эксперимента (табл. 3.4).
Таблица 3.8 – Сопоставление результатов численного и физического
экспериментов для стали 45Х25Н35БС (математическая модель (3.2))
№ п/п
1
2
3
4
5
6
7
8
Т, град С
950
950
950
950
1000
1000
1000
1000
S, МПа
16,8
24
34
48
12
18
25
35
36
Vc*10^6
0,09
1,00
10,21
101,68
0,08
1,17
10,47
98,54
Vcэ*10^6
0,1
1
10
100
0,1
1
10
100
9
10
11
12
1050
1050
1050
1050
9,4
13,4
18
26
0,11
1,12
7,99
92,52
0,1
1
10
100
Точность математических моделей (3.1) и (3.2) при оптимальных
значениях управляемых параметров для стали 45Х25Н35БС оцениваем по
среднему
квадратическому
отклонению
расчетных
величин
скорости
деформаций ползучести от экспериментальных данных
2
э
1 N vcj A, n, Q0 , γ vcj
С
,
N j 1
vcjэ
(3.15)
где vcj A, n, Q0 , γ –
скорости деформаций ползучести, вычисленные по
vcjэ
– данные физического эксперимента в точках
уравнению (3.1);
j 1, 2, ... , N =12 (табл. 3.4);
э
1 N vcj A, n, Q0 , γ vcj
C
N j 1
vcjэ
–
среднее
значение относительного отклонения расчетных величин скорости деформаций
ползучести от экспериментальных данных.
Среднее
квадратическое отклонение результатов расчета
по от
экспериментальных данных для стали 45Х25Н35БС составляет:
– по математической модели (3.1) 0,0904 ;
– по математической модели (3.2)
0,0717 .
Результаты численного анализа показывают, что математическая модель
(3.2) применительно к стали 45Х25Н35БС обладает более высокой точностью
и может быть рекомендована для практических расчетов.
На основании полученных результатов принимаем для использования в
дальнейших исследованиях математическую модель (3.2) с параметрами:
– для стали 45Х25Н20С:
A 4,233 1011 ,
n 1,537 ,
Q0 3,923 105 ,
37
γ 2,418 105 ;
– для стали 45Х25Н35БС:
A 1,451 1024 ,
n 6,673 ,
Q0 5,544 105 , γ 1,568 104 .
Следует отметить, что указанные значения параметров математической
модели (3.2) согласно экспериментальным данным (табл. 3.3 и 3.4)
действительны для следующих значений параметров термомеханической
нагрузки:
– для стали 45Х25Н20С:
T = 815 … 1040 °C;
= 7 … 81 МПа;
– для стали 45Х25Н35БС:
T = 950 … 1050 °C;
= 9 … 48 МПа.
38
Глава 4 МАТЕМАТИЧЕСКАЯ МОДЕЛЬ ВЯЗКОГОУПРУГОГО
ДЕФОРМИРОВАНИЯ ТРУБЧАТЫХ ЭЛЕМЕНТОВ
Рассматривается задача об установившейся ползучести трубчатого
элемента, представляющего собой круговую тонкостенную цилиндрическую
оболочку. Расчетная схема рассматриваемого изделия представлена на рис. 4.1.
Рис. 4.1 Расчетная схема трубчатого элемента
Радиус срединной поверхности оболочки – r, толщина стенки – h.
Трубчатый элемент нагружен внутренним давлением q, а также равномерно
распределенной по торцу оболочки осевой нагрузкой, равнодействующая
которой равна P, и нагрет до температуры T. Температурное поле считаем
симметричным и постоянным по длине цилиндра. Заданные силовые нагрузки
q, P и температура нагрева T не изменяются во времени. При этом
геометрические размеры рассматриваемого изделия с течением времени
изменяются в силу необратимых деформаций ползучести. Таким образом,
рассматриваемая задача относится к классу задач расчёта конструкций с
изменяемой геометрией.
При
построении
математической
модели
кинетики
процесса
вязкоупругого деформирования трубчатого элемента вводим параметр времени
, определяющий развитие этого процесса. В качестве главных осей
напряжённо-деформированного
состояния
изделия
выбираем
систему
координат s, t, r соответственно в меридиональном (осевом), кольцевом
направлении и радиальном направлениях.
39
Предлагаемая математическая модель содержит три группы уравнений.
Первую группу уравнений составляют уравнения равновесия, которым
должны удовлетворять компоненты напряженного состояния. В нашей задаче
уравнениями
равновесия
являются
уравнения
безмоментной
теории
тонкостенных оболочек – уравнения Лапласа:
s
(4.1)
2 rh s P ,
(4.2)
R1
где
s , t
главные
t
q
,
h
R2
– меридиональное и кольцевое напряжения в оболочке; R1 , R2 . –
радиусы
кривизны
срединной
поверхности
оболочки.
Для
цилиндрической оболочки R1 , R2 r .
Из уравнений (1) и (2) определяются напряжения в трубчатом элементе:
qr
,
h
(4.3)
P
,
2 rh
(4.4)
t
s
Вторую группу уравнений образуют уравнения деформаций:
где
t , r
t
u
,
r
(4.5)
r
du
,
dr
(4.6)
– относительные кольцевая и радиальная деформации;
u –
радиальное перемещение.
Третью группу уравнений составляют уравнения вязкоупругого
деформирования конструкционного материала, связывающие напряжения и
деформации. Эти уравнения определяются обобщенным законом Гука с учетом
деформаций ползучести:
s
1
s t T sc ,
E T
40
где
t
1
s t T tc ,
E T
r
1
s t T rc ,
E T
(4.7)
T – температурная
– коэффициент теплового расширения;
деформация; sc , tc , rc – деформации ползучести в направлении главных осей
напряженно-деформированного состояния. Радиальные напряжения r в
соответствии со статической гипотезой Кирхгофа-Лява для тонкостенных
оболочек принимаем равными нулю.
В уравнениях (1) – (7) геометрические параметры изделия r и h, а также
параметры напряженно-деформированного состояния s , t , s , t , r , sc ,
tc , rc , u являются функциями времени .
Рассмотрим деформации ползучести трубчатого элемента в момент
времени . Кольцевая деформация ползучести в момент времени
tc
u
,
r0
где r0 – величина радиуса срединной поверхности оболочки при 0 .
Следовательно, радиус срединной поверхности оболочки в текущий
момент времени
r r0 r0 tc = r0 1 tc .
(4.8)
Радиальная деформация ползучести в момент времени
rc
h h0
,
h0
где h0 – толщина оболочки при 0 .
Следовательно, толщина оболочки в текущий момент времени
h h0 1 rc .
41
(4.9)
Найдем скорости изменения во времени геометрических параметров
изделия. С этой целью продифференцируем по времени уравнения (8) и (9):
r r0 tc ,
(4.10)
h h0 rc .
(4.11)
Точкой обозначено дифференцирование по времени .
Найдем скорость изменения во времени кольцевых напряжений в
трубчатом элементе. С этой целью продифференцируем по времени
уравнение (4.3):
t
r h
d qr
rh hr qr r h
q
t .
d h
h r h
h2
r h
(4.12)
Из уравнений (4.8) и (4.10) следует, что
r
1
.
tc
r
1 tc
Разлагая дробь
(4.13)
1
c
в
ряд
по
степеням
, получим:
t
1 tc
1
1 tc tc
c
1 t
2
tc
3
...
(4.14)
Ввиду малости деформаций tc по сравнению с единицей соотношение (4.14) с
точностью до малых высшего порядка можно представить в следующем виде:
1
1 tc .
c
1 t
(4.15)
Таким образом, соотношение (4.13) можно записать в виде
r
tc 1 tc .
r
Аналогичное выражение можно получить для слагаемого
(4.12).
Из уравнений (4.9) и (4.11) вытекает:
42
(4.16)
h
в уравнении
h
h
1
.
rc
h
1 rc
Разлагая дробь
(4.17)
1
в ряд по степеням tc , получим:
c
1 r
1
1 rc rc
c
1 r
2
c
r
3
...
(4.18)
Ввиду малости деформаций rc по сравнению с единицей соотношение (4.18) с
точностью до малых высшего порядка можно представить в следующем виде:
1
1 rc .
c
1 r
(4.19)
В результате соотношение (4.17) примет вид
h
rc 1 rc .
h
(4.20)
Подставляя выражения (4.16) и (4.20) в уравнение (4.12) и пренебрегая
малыми величинами высшего порядка, получим:
t t tc rc .
4.21)
Найдем скорость изменения во времени меридиональных (осевых)
напряжений в трубчатом элементе. С этой целью продифференцируем по
времени уравнение (4.4):
s
r h
d P
P rh rh
P r h
2 2
s .
d 2 rh
2 r h
2 rh r h
r h
(4.22)
Подставляя в уравнение (4.22) выражения (4.16) и (4.20) и пренебрегая
малыми величинами высших порядков, получим:
s s tc rc .
Согласно
общим
положениям
теории
(4.23)
течения
установившейся
ползучести при сложных напряженных состояниях компоненты скорости
ползучести пропорциональны девиаторам напряжений:
43
vcj
3s j
2 i
vic , j s, t , r ,
(4.24)
где s j j 0 – компоненты девиатора напряжений; 0
1
s t r –
3
среднее напряжение;
i
1
2
s t 2 t r 2 r s 2
– интенсивность напряжений;
vic f i , T – интенсивность скорости деформаций ползучести.
При r = 0:
среднее напряжение 0 s t / 3 ;
интенсивность напряжений i s2 s t t2 ;
компоненты девиатора напряжений: ss s 0 ,
или
ss 2 s t / 3 ,
st 2 t s / 3 ,
st t 0 ,
sr 0 ;
s z s t / 3 .
Зависимость (4.24) совпадает с экспериментальной зависимостью
v0c v0c 0 , T , которую получают при испытаниях образцов конструкционного
материала при простом растяжении (см. раздел 3).
Таким образом, из уравнений (4.24) вытекают следующие соотношения:
3vic
ss ,
2 i
(4.25)
3vic
st ,
2 i
(4.26)
3vic
sr .
2 i
(4.27)
vsc sc
vtc
tc
vrc rc
При
построении
математической
модели
кинетики
процесса
вязкоупругого деформирования трубчатого элемента полагаем, что в
начальный момент времени 0 известны начальные конструктивные параметры
исследуемого изделия, параметры напряженно-деформированного состояния,
44
параметры силовой нагрузки, температура. Определены также физикомеханические параметры конструкционного материала, структура и параметры
математической модели скорости установившейся ползучести vic f i , T .
В
качестве
основных
параметров,
характеризующих
состояние
трубчатого элемента в текущий момент времени τ принимаем радиус
срединной поверхности элемента r толщину стенки h , меридиональное
напряжение s , кольцевое напряжение t , компоненты скорости
ползучести cs , tc , cr . Полагаем, что в начальный момент времени
τ0 известны начальные значения основных параметров r0 , h0 , 0s ,
0t , cs0 ,
tc0 , cr 0 .
Принимая во внимание уравнения (4.10), (4.11), (4.23), (4.21), (4.25) –
(4.27)
получим
замкнутую
систему
дифференциальных
уравнений
относительно основных параметров состояния трубчатого элемента:
dr
3vic
r0
st ,
d
2 i
dh
3vic
h0
sr ,
d
2 i
d s
3vic
s
st sr ,
d
2 i
d t
3vic
t
st sr ,
d
2 i
d sc 3vic
ss ,
d
2 i
d tc 3vic
st ,
d
2 i
d rc 3vic
sr .
d
2 i
с начальными условиями при 0 :
45
(4.28)
r 0 r0 ,
h 0 h0 ,
s 0 0s
P
,
2r0h0
t 0 t0
cs 0 cs 0 , tc 0 tc0 , cr 0 cr 0 .
qr0
,
h0
(4.29)
Систему дифференциальных уравнений (4.28) с начальными условиями
(4.29)
можно
вязкоупругого
рассматривать
деформирования
как
математическую
трубчатого
установившейся ползучести.
46
модель
элемента
в
кинетики
условиях
Глава 5 МЕТОД И АЛГОРИТМ ЧИСЛЕННОГО АНАЛИЗА
ПАРАМЕТРОВ СОСТОЯНИЯ И РЕСУРСА ТРУБЧАТЫХ ЭЛЕМЕНТОВ
В соответствии с результатами предыдущего раздела задача о кинетике
вязкоупругого деформирования трубчатого элемента на интервале времени
0 ,
сводится к решению задачи Коши для системы дифференциальных
уравнений (4.28) с начальными условиями (4.29).
Численное решение задачи Коши на интервале
методом
Рунге-Кутта.
Вводим
в
рассмотрение
X r h s t cs tc cr
Т
,
0 ,
выполняем
вектор
состояния
составленный
из
основных параметров состояния трубчатого элемента r , h , s ,
σt ,
cs , tc , cr ( Т – символ транспонирования). Систему
уравнений (4.28) запишем в векторной форме:
dX
F , X ,
d
(5.1)
где X – вектор состояния; F f1 f 2 , ... , f7 – вектор, составленный
T
из функций правой части системы дифференциальных уравнений (4.28):
3vic
3vic
3vic
f1 = r0
st , f 2 = h0
sr , f3 = s
st sr ,
2 i
2 i
2 i
f4 = t
3vic
3vic
3vic
f
f
,
=
,
=
s
s
st ,
s
t r 5
6
s
2 i
2 i
2 i
f7 =
3vic
sr .
2 i
В соответствии с методом Рунге-Кутта делим интервал 0 , на заданное
число n шагов интегрирования с шагом
47
0
(рис. 5.1).
n
Рис. 5.1 Схема деления интервала интегрирования на шаги интегрирования
В начальной точке интервала
X 0 r0 h0 s 0 t 0 cs 0 tc0 cr 0
Т
0 ,
формируем вектор состояния
в соответствии с заданными начальными
условиями (4.29). В каждой последующей точке вектор состояния находим по
формуле
X m1 X m K1 2K2 2K3 K 4
,
6
m 0, n 1 ,
(5.18)
где K1 , K2 , K3 , K4 – векторы, определяемые по алгоритму:
K1 F m , X m ,
K 2 F m , X m K1 ,
2
2
K 3 F m , X m K 2 ,
2
2
(5.19)
K 4 F m , X m K 3 .
Таким образом, задавая начальный вектор X 0 в начальной точке 0 ,
находим по алгоритму (5.18) – (5.19) векторы состояния X1 , X 2 , …, X n1 , X n
48
во всех узловых точках интервала интегрирования
0 , ,
получая в
результате численного анализа полное описание кинетики вязкоупругого
деформирования трубчатого элемента.
Степень
повреждения
конструкции
в
процессе
вязкоупругого
деформирования оцениваем величиной параметра
ic
,
c
i доп
(5.20)
где
ic
2
3
cs
tc
2
tc
cz
2
cz
cs
2
(5.21)
– интенсивность накопленной деформации ползучести;
ic доп
–
предельно допустимая величина интенсивности накопленной
деформации ползучести.
Для неповрежденной конструкции = 0. Предельное состояние
достигается при = 1.
В качестве предельно допустимой величины интенсивности деформаций
ползучести принимают величину ic доп = 0,03 – 0,05. При таких значениях ic
существенно
возрастает
вероятность
возникновения
трещин
в
конструкционном материале.
Остаточный ресурс изделия характеризуется временным интервалом
0 , τk ,
где 0 – момент времени, соответствующий началу численного
анализа, τk – момент времени, когда изделие достигает предельного состояния,
и выполняются условия ic k = ic доп и = 1. Полагаем, что в начальный
момент времени 0 изделие имеет свою историю нагружения, начальный
вектор состояния X 0 r0 h0 s 0 t 0 cs 0 tc0 cr 0 известен.
Т
Для определения остаточного ресурса изделия применяем шаговый
метод.
Задаем
параметры
термомеханического
49
воздействия:
величину
внутреннего давления
q, осевое усилие P , температуру T. Вычисляем
начальное повреждение 0 по алгоритму
ic 0
2
3
2
2
cs 0 tc 0 tc 0 cz 0 cz 0 cs 0
ic
.
c
i доп
2
(5.22)
Вводим в рассмотрение целевую функцию 1 и вычисляем
ее начальное значение 0 0 1. Задаем величину шага по времени .
На первом временно́м интервале
0 , 0 τ
методом Рунге-Кутта
выполняем решение задачи Коши для системы дифференциальных уравнений
(4.28) – (4.29) на интервале интегрирования
0 , 0 τ .
В результате
численного решения задачи Коши получим вектор состояния X 1 X 0 в
конечной точке 0 этого интервала.
Фиксируем этот вектор, вычисляем по алгоритму (5.22) поврежденность
исследуемой конструкции
1 0 , находим значение целевой
функции 1 0 1 1 . Затем проверяем условие работоспособности
конструкции
1 0 . Если условие работоспособности выполняется,
переходим ко второму этапу расчета.
На втором временно́м интервале решение задачи Коши для системы
дифференциальных уравнений (4.28) – (4.29) выполняем на интервале
интегрирования 0 , 0 2 . В качестве начального вектора на этом
этапе принимаем вектор состояния X1 , полученный на первом этапе расчета.
В результате численного решения задачи Коши на втором временном интервале
получим вектор состояния X 2 X 0 2 в конечной точке 0 2
второго интервала интегрирования.
50
Фиксируем этот вектор, затем вычисляем по алгоритму (5.22) степень
повреждения исследуемой конструкции 2 0 2 и значение целевой
функции
2 0 2 2 1 .
Далее
проверяем
условие
работоспособности конструкции 2 0 . Если это условие выполняется,
переходим к расчету третьего временно́го интервала и т.д.
Решение задач Коши прекращаем, когда на очередном k-м временно́м
интервале 0 k 1 , 0 k условие работоспособности изделия будет
нарушено: k 0 k 0 . Это означает, что в точке τk , принадлежащей
интервалу 0 k 1 0 k целевая функция обращается в нуль.
Рисунок 5.2 иллюстрирует вычислительный процесс поиска корня целевой
функции .
Рис. 5.2 Схема вычислительного процесса поиска корня целевой
функции
Для
поиска
корня
τk
целевой
функции
на
интервале
0 k 1 , 0 k с заданной степенью точности применяем метод
дихотомии.
На заключительном этапе алгоритма выполняем решение задачи Коши
для системы дифференциальных уравнений (4.28) – (4.29) на интервале
51
интегрирования 0 k 1 , k . В результате этого решения получим
вектор состояния
X k r h s t cs tc cr
Т
для предельного
k
состояния конструкции.
Таким образом, в результате численной реализации предложенного
алгоритма находим:
– остаточный ресурс изделия τk .
– векторы состояния X1 , X 2 , …, X k 1 , X k и параметры повреждения
1 , 2 , …, k1 , k конструкции в узловых точках временно́й оси на
протяжении жизненного цикла изделия.
Располагаемый
ресурс
неповрежденного
изделия
определяем по
аналогичному алгоритму для начального момента времени 0 0 ,
начального вектора состояния X 0 r0 h0 s 0 t 0 cs 0 tc0 cr 0 .
Т
52
и
Глава 6 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ МЕТОДА РЕШЕНИЯ
ЗАДАЧИ
6.1 Методы и средства разработки программного продукта
6.1.1 Обоснование выбора языка программирования и среды разработки
Для разработки программного продукта «Resource Tube» был выбран
язык программирования C++. В настоящий момент он является одним из
популярных и востребованных языков программирования, который содержит
средства создания различных программных продуктов, от низкоуровневых
утилит
и
драйверов
до
самого разного предназначения.
сложных
Дoступны
программных
компиляторы
комплексов
для
большого
количества платформ, на языке C++ разрабатывают программы для самых
различных платформ и систем.
Поддерживаются
структурное
различные
методологии
программирования,
программирование,
включая
объектно-ориентированное
программирование, которое поддерживает наследование, благодаря чему есть
возможность объявить новый тип данных.
Для разработки программного продукта была выбрана среда Embarcadero
Rad Studio Community. Данная
разработки
программного
система
является
обеспечения.
Она
удобной
средой
предоставляет
для
мощные
компоненты VCL для Windows 10 и обеспечивает разработку на FMX для
Windows. RAD Studio поддерживает C++. RAD Studio содержит широкий набор
дополнительных средств, помогающих реализовывать разные возможности.
Например, FastReport VCL RAD Edition и FastReport FireMonkey Embarcadero
Edition от компании Fast Reports, пакеты средств, которые предназначены для
быстрого проектирования и формирование отчетов. TeeChart Standard от
компании Steema, пакет компонентов, который позволяет быстрое и простое
создание диаграмм. Средство разработки LiveBindings, которое позволяет
связывать элементы интерфейса с источниками данных. RAD Studio имеет
возможность подключения баз данных.
53
Для разработки программы были использованы: math.h - заголовочный
файл стандартной библиотеки языка программирования, разработанный для
выполнения простых математических функций, stdlib.h -
заголовочный
файл стандартной библиотеки языка Си, который содержит в себе функции,
занимающиеся выделением памяти, преобразованием типов, sstream.h заголовочный файл с классами, функциями и переменными для организации
работы со строками.
Программный продукт «Resource Tube» состоит из 7 модулей: fmuTitle,
fmuHead, UCalc, ULib, fmuTables, fmuDiagram, fmuDelete. На рис. 6.1
представлен снимок экран из среды разработки, на данном рисунке показана
форма fmHead.
Рис. 6.1 Разработка интерфейса в среде Embarcadero Rad Studio
Интерфейс программы разработан с помощью встроенных в систему
компонентов: (рис. 6.2) ComboBox, Edit, Image, GroupBox, Button, Label,
GrippanelLayout, Layout, Splitter, Grid, StringGrid.
54
Рис. 6.2 Используемые компоненты для разработки интерфейса
Для
полного
функционирования
программного
продукт
также
использовались дополнительные программные пакеты средств (рис.6.3),
которые устанавливаются непосредственно из среды программирования
(рис.6.4).
Рис. 6.3 Дополнительные используемые пакеты программных средств
Рис. 6.4 Установка дополнительных программных пакетов
55
Для построения графиков использовался пакет TeeChart, компонент
TChart (рис.6.5), для создания отчетов пакет FastReport (рис.6.6), с
компонентами: TfrxDBDataset, TfrxReport (рис.6.7).
Рис. 6.5 Дополнительный компонент TChart для создания графиков
Рис. 6.6 Загрузка Fast Report FMX из Getit Package Manager
56
Рис. 6.7 Дополнительный компонент TfrxReport для создания отчетов
Для хранения производимых расчетов, а также для добавления новых
материалов в разработанном программном продукте была создана база данных
ParamModel в менеджере баз данных SQLiteStudio (рис. 6.8)
Рис. 6.8 База данных ParamModel, созданная в SQLiteStudio
Были созданы две таблицы в базе данных ParamModel (рис.6.8):
DataCalc, для хранения истории численных расчетов (рис.6.9)
57
Param, для хранения параметров математической модели, материала
(рис.5.10)
Рис. 6.9 Таблица базы данных DataCalc
Рис. 6.10 Таблица базы данных Param
Для создания отчёта при помощи компонента TfrxReport необходимы
данные, получаемые из таблицы DataCalc, которые фильтруются с помощью
стандартного компонента DateEdit (рис.6.11) в обработчике события OnChange,
фрагмент кода приведен ниже:
Отрывок листинга 6.1 – Функция фильтра поиска в базе данных
58
Рис. 6.11 Компонент DateEdit для поиска по дате
Для добавления руководства пользователя в программу был добавлен
компонент WebBrowser (рис.6.12), в котором указывает ссылка на веб страницу,
на которой хранится руководство пользователя к программному продукту
«Resource Tube».
Рис. 6.12 Компонент WebBrowser для отображения руководства пользователя
Для проверки интернет-соединения, в обработчике события нажатия на
кнопку «Помощь», используется следующий код:
Отрывок листинга 6.2 – Функция проверки интернет-соединения
59
Для изменения стиля интерфейса в программном продукте был использован
компонент StyleBook, для создания стиля необходимо загрузить стиль,
загрузить стили можно из Getit Package Manager (рис.6.4), на рисунке 6.13
представлен компонент с загруженным стилем.
Рис. 6.13 Компонент WebBrowser для отображения руководства пользователя
Для
добавления
БД
в
программу
используются
компоненты
FDConnection, FDTables (рис.6.14). В обработчик события OnShow главной
формы добавляем подключение базы данных, ниже представлен код:
Отрывок листинга 6.3 – Подключение базы данных
60
Рис. 6.14 Компоненты для базы данных
В
LiveBinding
Designer
добавляем
связи
между
таблицами
и
компонентами, для добавления и отображения данных таблицы. На рис.6.15
представлены связи для таблицы Param, на рис.6.16 представлены связи для
таблицы DataCalc.
Рис. 6.15 Связи таблицы Param между компонентами
61
Рис. 6.16 Связи таблицы DataCalc между компонентами
6.2 Описание программного продукта
6.2.1 Общие сведения
Программный продукт предназначен для автоматизированного расчета
показателей состояния и остаточного ресурса трубчатых элементов на всем
протяжении жизненного цикла, в условиях ползучести. Программный продукт
может эксплуатироваться на химико-технологических предприятиях.
6.2.2 Функциональное назначение
Программный продукт должен предоставлять возможность пользователю
производить расчет трубчатых элементов и рассчитывать их ресурс, а также
предоставлять результаты в виде таблиц и графиков по заданным параметрам.
6.2.3 Описание логической структуры
Программный продукт «Resource Tube» состоит из 7 модулей: fmuTitle,
fmuHead, UCalc, ULib, fmuTables, fmuDiagram, fmuDelete. Структурная схема
представлена на рис.6.17.
62
Рис. 6.17 Структурная схема программы
Модуль fmuTitle
Реализует описание окна приветствия «Ползучесть трубчатых элементов
высокотемпературного оборудования» и элемента управления этого окна
(таймер). Данный модуль содержит следующие функции:
void __fastcall tmTimer (TObject *Sender) – функция обработки события
компонента TTimer.
Модуль fmuDelete
Реализует удаление данных из базы данных. Данный модуль содержит
следующие функции:
void __fastcall buOkClick (TObject *Sender) – функция обработки события
нажатия на кнопку «ОК». При нажатии выполняется закрытие формы.
Модуль fmuHead
Модуль реализует описание основго рабочего окна программы. Реализует
функции отображения компонентов, обработки данных, вывода данных.
Данный модуль содержит следующие функции:
void __fastcall InitDataClick (TObject *Sender) – функция инициализации
исходных параметров, которые вводятся в главном окне и при нажатии на
63
кнопку;
void __fastcall mCalcClick (TObject *Sender) – функция запуска алгоритма
расчета;
void __fastcall mTablClick (TObject *Sender) – функция обработки
события нажатия на кнопку меню «Таблицы»;
void __fastcall mDiagrmClick (TObject *Sender) – функция обработки
события нажатия на кнопку меню «Графики»;
void __fastcall FormClose (TObject *Sender, TCloseAction &Action) –
функция обработки события закрытия главного рабочего окна;
void __fastcall FormCloseQuery (TObject *Sender, bool &CanClose) –
функция обработки события закрытия главного рабочего окна;
void __fastcall mExitClick (TObject *Sender) – функция обработки события
нажатия на кнопку меню «Выход»;
void __fastcall mAboutClick (TObject *Sender) – функция вызывает окно
«О программе»;
void __fastcall buOkClick (TObject *Sender) – функция обработки
события нажатия на кнопку «ОК»;
void __fastcall buCancelClick (TObject *Sender) – функция обработки
события нажатия на кнопку «Отмена»;
Модуль UCalc
Реализует функции алгоритма численного анализа. Данный модуль
содержит следующие функции:
void COUNT () – функция подсчета ресурса конструкции;
void FORM_Y0 () – формирование вектора начальных условий для
системы дифференциальных уравнений;
void SearchInterval (double Tau0, double DTau, double* Y0, double& Tau1,
double& Tau2, double* Y1, double* Y2) – поиск интервала [Tau1, Tau2],
содержащего корень функции F = Omega-1;
void RightMember (double Tau, double* Y, double* DY_DX) – вычисление
правой части системы дифференциальных уравнений;
64
void Omega (double Tau) – вычисление функции F = Omega-1;
void StateParameter (double Tau1, double Tau2, double* Y1, double&
DEFECT, double* Y2) – вычисление параметров состояния изделия в точке Tau2
интервала [Tau1, Tau2].
Модуль ULib
Реализует функции решения математических задач, а также условного
переконвертирования числового значения вещественного типа в строковое
значение. Данный модуль содержит следующие функции:
void RUNGE (double x0, double xk, int xPD, int NP, double* Y0,
procRUNGE F, double* Y) – интегpиpование системы диффеpенциальныx
уpавнений dY/dx=F(x,Y);
void DICHOTOMY (double a, double b, double Eps, FOmega F, double& X,
bool& RESULT) – выполнение функции дихотомия;
void SigmaI_2D (double Sigma1, double Sigma2) – вычисление напряжений
по формуле (2);
void SigmaI_3D (double Sigma1, double Sigma2, double Sigma3) –
вычисление напряжений по формуле (3);
void EPSi (double EPSs, double EPSt, double EPSz) – вычисление
напряжений по формуле (4);
void CONVERT (double A, int LA, int Prec, int Digit) – конвертация
числового значения вещественного типа в строковое значение;
void INTERPOL_COMPACT (int N, int KP, double* Y, double* Y1) –
вычисление промежуточных значений для исходного массива Y: array [0..N]
равноотстоящих узловых точек.
Модуль fmuTable
Реализует описание окна «Таблицы» и элементов управления этого окна
(кнопка и элемент управления представления текстовой информации в виде
таблицы). Данный модуль содержит следующие функции:
65
void __fastcall bUSaveExcelClick (TObject *Sender) – функция нажатия на
кнопку сохранения таблицы в Excel;
void __fastcall FormShow (TObject *Sender) – функция открытия формы;
void __fastcall FormClose (TObject *Sender) – функция закрытия формы;
void __fastcall FormTablResult (TObject *Sender) – формирование
результатов в таблице.
Модуль fmuDiagram
Реализует описание окна «Диаграммы» и элементов управления этого
окна (кнопка и элемент управления представления данных в виде графиков)
Данный модуль содержит следующие функции:
void __fastcall FormShow (TObject *Sender) – функция открытия формы;
void mStressClick (TObject *Sender) – функция обработки события
нажатия на кнопку меню графиков «Напряжения»;
void mDeformClick (TObject *Sender) – функция обработки события
нажатия на кнопку меню графиков «Деформации»;
void mDefectClick (TObject *Sender) – функция обработки события
нажатия на кнопку меню графиков «Повреждение»;
void DrawStress () – функция отрисовки графика напряжений;
void DrawDeform () – функция отрисовки графики деформаций;
void DrawDefect () – функция отрисовки графика повреждений;
void mExitClick (TObject *Sender) – функция обработки события нажатия
на кнопку меню «Выход».
6.2.4 Описание работы программы
Для вызова программы необходимо запустить ярлык (рис.6.18) на
рабочем столе или через меню Windows.
Рис. 6.18 Ярлык программы
66
После выполнения
запуска
программы
откроется
окно
запуска
программы (рис.6.19).
Рис. 6.19 Окно запуска программы
После заставки программы «Resource Tube» откроется главное окно
программы (рис.6.20).
Рис. 6.20 Главное окно программы
Главное окно программы открывается на вкладке «Новое исследование»,
в котором задаются данные для дальнейших расчетов.
В программе
предоставлена возможность сохранения произведенных расчетов и их
просмотра в табличной форме, и в виде графиков.
67
Меню программы содержит управляющие кнопки для перехода в
историю расчетов, результаты расчетов, помощь, смены темы. Также
программа имеет возможность добавления новых материалов в программу, при
нажатии на кнопку добавить «+» (рис.6.21) в основной форме ввода данных
откроется форма добавления материалов (рис.6.22). Встроенные материалы в
программы нельзя удалить из базы данных.
Рис. 6.21 Окно программы добавления материалов
Рис. 6.22 Окно программы добавления материалов
После произведенного расчета на форме (рис.6.20), при желании
пользователь может нажать на кнопку «Посмотреть результат» или сохранить
расчет, нажав на кнопку «Сохранить расчет» и перейти на вкладку «История
расчетов» для просмотра результатов (рис.6.23).
68
Рис. 6.22 История расчетов
Для просмотра результатов расчета из истории расчетов необходимо
нажать на выбранную строку расчета (рис.6.23), слева во вкладках «Таблицы»
(рис.6.24), «Графики» (рис.6.25-27) отобразятся результаты расчета.
Рис. 6.23 История расчетов с выбранным расчетом
69
Рис. 6.24 Таблица с расчетом
Рис. 6.25 График «Напряжения в трубчатом элементе»
70
Рис. 6.26 График «Деформации ползучести в трубчатом элементе»
Рис. 6.27 График «Повреждение изделия»
71
В программе есть возможность передвижения окна результатов расчетов
в удобное положение для пользователя (рис.6.28–29).
Рис. 6.28 Положение окна расчетов
Рис. 6.29 Положение окна расчетов
В программе предусмотрен, с помощью компонента DateEdit (рис.6.30),
поиск по дате расчетов (рис.6.31), и поиск по материалу (рис.6.32). Также есть
возможно сброса фильтров с помощью кнопки «Сбросить» (рис.6.33)
72
Рис. 6.30 Поиск по дате
Рис. 6.31 Результат поиска по дате
Рис. 6.32 Результат поиска по материалу
Рис. 6.33 Сброс фильтров
73
В программе «Resource Tube» можно создать отчет истории по
выбранным фильтрам, для этого необходимо нажать на кнопку «Создать
отчет», после сформируется отчет (рис.6.34).
Рис. 6.34 Созданный отчет
Для просмотра руководства пользователя необходимо нажать на кнопку
«Помощь» в левом нижнем углу, после чего откроется файл с руководством
(рис.6.35).
Рис. 6.35 Руководство пользователя в программе «Resource Tube»
74
6.2.5 Используемые технические средства
Для
работы
программного
продукта
необходимы
следующие
минимальные технические средства:
-
Устройство вывода: монитор с разрешение экрана не менее
800х600.
-
Устройства ввода: клавиатура, мышь.
-
Системный блок с конфигурацией:
-
Процессор: тип не менее Intel Core 2Duo E7300, разрядность x64,
тактовая частота не менее 2.6 ГГц или AMD Athlon II X2 240 не менее 2.8
ГГц.
-
Оперативная память: не менее 2 Гб.
-
Дисковая подсистема: не менее 32 Гб.
Данные технические средства должны быть полностью исправны,
получать бесперебойное питание соответствии с требованиями производителя.
Внешние условия должны соответствовать требованиям производителя.
Для
работы
программного
продукта
необходимы
следующие
программные средства:
-
Операционная система: не ниже Windows 7.
-
Драйвера на все используемые технические средства последней
версии.
-
Офисный пакет приложений: не ниже Microsoft Office 2007.
6.2.6 Входные данные и выходные данные
Входные
данные
вводятся
с
клавиатуры
пользователем
в
соответствующие поля ввода в программе или загружаются из базы данных.
Поля ввода имеют ряд ограничений в зависимости от требуемых типов данных.
При несоблюдении требований, программа сообщает об этом. Выходные
данные выводятся в форматах .xlsx, .bmp или же загружаются в базу данных.
75
6.3 Руководство системного программиста
6.3.1 Назначение и условия
Программный продукт предназначен для автоматизированного расчета
показателей состояния и остаточного ресурса трубчатых элементов на всем
протяжении жизненного цикла, в условиях ползучести. Программный продукт
может эксплуатироваться на химико-технологических предприятиях.
Для
работы
программного
продукта
необходимы
следующие
минимальные технические требования:
-
Устройство вывода: монитор с разрешение экрана не менее
800х600.
-
Устройства ввода: клавиатура, мышь.
-
Системный блок с конфигурацией:
-
Процессор: тип не менее Intel Core 2Duo E7300, разрядность x64,
тактовая частота не менее 2.6 ГГц или AMD Athlon II X2 240 не менее 2.8
ГГц.
-
Оперативная память: не менее 2 Гб.
-
Дисковая подсистема: не менее 32 Гб.
Данные технические средства должны быть полностью исправны,
получать бесперебойное питание соответствии с требованиями производителя.
Внешние условия должны соответствовать требованиям производителя.
Для
работы
программного
продукта
необходимы
следующие
программные средства:
-
Операционная система: не ниже Windows 7.
-
Драйвера на все используемые технические средства последней
версии.
-
Офисный пакет приложений: не ниже Microsoft Office 2007.
6.3.2 Структура программы
Программный продукт «Resource Tube» состоит из 7 модулей: fmuTitle,
fmuHead, UCalc, ULib, fmuTables, fmuDiagram, fmuDelete.
76
-
Модуль fmuTitle реализует описание окна приветствия «Ползучесть
трубчатых элементов высокотемпературного оборудования» и элемента
управления этого окна (таймер).
-
Модуль UCalc реализует функции алгоритма численного анализа.
-
Модуль ULib реализует функции решения математических задач.
-
Модуль fmuHead выполняет функции отображения компонентов,
обработки данных, вывода данных.
-
Модуль fmuTables реализует описание окна «Таблицы» и элементов
управления этого окна (кнопка и элемент управления представления текстовой
информации в виде таблицы).
-
Модуль fmuDiagram реализует описание окна «Диаграммы» и
элементов управления этого окна (кнопки и элемент управления представления
данных в виде графиков)
-
Модуль fmuDelete реализует удаление данных из базы данных.
Модули связаны между собой и выполняют определённые функции. На
рис.6.36 изображена структура программы.
Рис. 6.36 Структура программы
77
6.3.3 Входные и выходные данные
Входные
данные
вводятся
с
клавиатуры
пользователем
в
соответствующие поля ввода в программе или загружаются из базы данных.
Поля ввода имеют ряд ограничений в зависимости от требуемых типов данных.
При несоблюдении требований, программа сообщает об этом.
Выходные данные выводятся в форматах .xlsx, .bmp или же загружаются
в базу данных.
6.3.4 Проверка программы
Для заключения о работоспособности программы можно проверить
следующие функции:
-
Проверка подключения базы данных к программе. Для этого
необходимо запустить программу и нажать кнопку «История исследований» на
панели слева. Результатом должно являться отображение таблицы, которая
содержит данные из базы данных о произведённых расчетах.
-
Сохранение результатов расчета в виде таблиц и изображений. При
проверке необходимо в окне «Новое исследование» ввести значения, далее
нажать на кнопку «Рассчитать» и перейти на вкладку «Посмотреть результаты»,
где можно увидеть результаты расчета, таблица и графики. Для сохранения
таблицы и графиков необходимо нажать на кнопку «Экспортировать в Excel»,
для сохранения таблицы и на кнопку «Сохранить», для сохранения графиков.
Далее должно открыться окно сохранения, где пользователь вводит имя файла
и выбирает путь для сохранения. В результате выполнения функции будут
сохранены файлы с указанным именем и расположением.
6.3.5 Сообщения системного программисту
Сообщение 1
Текст сообщения: Отсутствует интернет-подключение.
Описание сообщения: Сообщение появляется при попытке открытия
руководства пользователя.
78
Решение проблемы: Проверить подключение к интернету, перезагрузить
роутер, перезагрузить компьютер.
Сообщение 2
Текст сообщения: Отсутствует подключение к базе данных.
Описание сообщения: Сообщение появляется при попытке открытия
истории расчетов или добавления новых материалов.
Решение проблемы: Проверить наличие файла с расширением .db в папке
программы, перезапустить компьютер.
Сообщение 3
Текст сообщения: Не удалось сохранить файл.
Описание сообщения: Сообщение появляется при попытке сохранения
таблиц и графиков.
Решение проблемы: Проверить правильность расширения файла,
заполнить поле – имя файла, перезагрузить программу и компьютер.
79
6.4 Руководство пользователя
6.4.1 Назначение и условия применения
Программный продукт предназначен для автоматизированного расчета
показателей состояния и остаточного ресурса трубчатых элементов на всем
протяжении жизненного цикла в условиях ползучести. Программный продукт
может
эксплуатироваться
на
химико-технологических
предприятиях.
Автоматизация расчета показателей состояния трубчатых элементов работает
только при корректном вводе исходных данных и при установленном ПО,
которое необходимо для корректного функционирования программного
продукта.
6.4.2 Подготовка к работе
Дистрибутив состоит из файла *.exe. Загрузка дистрибутива происходит
через сеть Интернет или внешний носитель. Необходимо запустить Setup
Resource Tube для установки программы (рис.6.37).
Рис. 6.37 Ярлык установки программы
После откроется мастер установки Resource Tube (рис.6.38) Необходимо
нажать на кнопку «Далее».
80
Рис. 6.38 Мастер установки программы
Далее будет предложен путь установки, необходимо нажать кнопку
«Далее» (рис.6.39)
Рис. 6.39 Путь установки
81
Далее мастер установки предложит создать ярлык программы на рабочем
столе или в стартовом меню. Пользователь по желанию может согласится,
после нажать на кнопку «Далее» (рис.6.40)
Рис. 6.40 Создание ярлыков
Рис. 6.41 Процесс инсталляции программного продукта
82
После появления следующего окна (рис.6.42) установка программного
продукта окончена, по желанию можно запустить программный продукт сразу
после установки
Рис. 6.42 Установка программы
Для проверки работоспособности программы требуется запустить
программный продукт.
6.4.3 Описание функций по работе с программой
Для работы с программным продуктом необходимо:
-
запустить программу через ярлык на рабочем столе или через меню
в Windows (рис. 6.43);
Рис. 6.43 Ярлык программы
-
ввести необходимые значения в заданные поля ввода (рис. 6.44);
83
Рис. 6.44 Необходимые поля для ввода данных
-
нажать на кнопку «Рассчитать» (рис. 6.45);
Рис. 6.45 Кнопка «Рассчитать»
-
после совершения расчета нажать на кнопку «Посмотреть
результаты» (рис. 6.46);
Рис. 6.47 Кнопка «Посмотреть результаты»
-
вернуться
на вкладку расчета, нажав на кнопку
«Новое
исследование» (рис. 6.48), которая находится на панели слева (рис. 6.49), при
необходимости нажать на кнопку «Сохранить результат» (рис. 6.50);
Рис. 6.48 Кнопка «Новое исследование»
84
Рис. 6.49 Панель с кнопками
Рис. 6.50 Кнопка «Сохранить результат»
-
при необходимости добавления нового материала для расчета
нажать на кнопку «Добавить материал» (рис. 6.51);
Рис. 6.51 Кнопка «Добавить материал»
-
при необходимости удаления материала для расчета нажать на
кнопку «Удалить материал» (рис. 6.52);
Рис. 6.52 Кнопка «Удалить материал»
85
-
для перехода на вкладку с историями исследований нажать на
кнопку «История исследований» (рис. 6.53) выбрать расчет для просмотра
результатов, реализованных в виде таблицы «Параметры состояния изделия в
процессе ползучести» (рис. 6.54) и графиков «Деформации», «Напряжения»,
«Повреждение» (рис. 6.55);
Рис. 6.53 Кнопка «История исследований»
Рис. 6.54 Пример таблицы «Параметры состояния изделия в процессе
ползучести»
Рис. 6.55 Вкладка с результатами в виде графиков
-
при необходимости удаления расчета из истории расчетов нажать
на кнопку «Удалить расчет» (рис. 6.56), которая находится на нижней панели
истории расчетов (рис. 6.57);
Рис. 6.56 Кнопка «Удалить расчет»
Рис. 6.57 Панель истории расчетов
86
-
при необходимости сохранения таблицы «Параметры состояния
изделия в процессе ползучести» нажать на кнопку «Экспортировать в Excel»
(рис. 6.58), выбрать путь сохранения;
Рис. 6.58 Кнопка «Экспортировать в Excel»
-
при
необходимости
сохранения
графиков
«Деформации»,
«Напряжения», «Повреждение» нажать на кнопку «Сохранить» (рис. 6.59),
выбрать путь сохранения;
Рис. 6.59 Кнопка «Сохранить»
-
при
необходимости
открытия
графиков
«Деформации»,
«Напряжения», «Повреждение» в полноэкранном режиме нажать на кнопку
«Увеличить» (рис. 6.60), выбрать путь сохранения;
Рис. 6.60 Кнопка «Увеличить»
-
при необходимости поиска в истории расчетов использовать
фильтр поиска по дате (рис. 6.61) или фильтр поиска по материалам (рис. 6.62);
Рис. 6.61 Фильтр истории расчетов по дате
87
Рис. 6.62 Фильтр истории расчетов по материалу
-
при
необходимости
сброса
фильтров
в
истории
расчетов
использовать кнопку «Сбросить фильтр» (рис. 6.63);
Рис. 6.63 Кнопку «Сбросить фильтр»
-
для создания отчета в истории расчетов нажать на кнопку
«Сохранить отчет» (рис. 6.64), которая находится на нижней панели истории
расчетов (рис. 6.65);
Рис. 6.65 Кнопка «Сохранить отчет»
-
для вызова руководства пользователя нажать на кнопку «Помощь»
(рис. 6.66);
Рис. 6.66 Кнопка «Помощь»
-
при необходимости изменения темы программного продукта
нажать на кнопку «Сменить тему» (рис. 6.67);
Рис. 6.67 Кнопка «Сменить тему»
88
Рис. 6.68 Смена темы программы
-
для завершения работы с программой нажать на кнопку «Закрыть»
(рис. 6.69) и подтвердить закрытие программы.
Рис. 6.69 Кнопка «Закрыть»
6.4.4 Сообщения пользователю
В случае если программа не запускается, обратитесь к администратору.
В случае если программа выдает ошибку «Заполните все значения»,
необходимо убедиться, что заполнены все поля.
В случае если программа выдает ошибку «Невозможно выполнить расчет
при заданных значениях», необходимо убедиться, что все поля заполнены
верно.
В случае если программа выдает ошибку «Отсутствует интернетсоединение», проверьте, подключен ли компьютер к сети Интернет.
В случае если программа выдает ошибку «Выберите данные для расчета»,
проверьте, есть ли данные в таблице «История расчетов».
89
В случае если программа выдает ошибку «Выберите расчет для
сохранения», проверьте, есть ли данные в таблице «Параметры состояния
изделия в процессе ползучести».
90
Глава 7 ПРИМЕР ПРИМЕНЕНИЯ ПРОГРАММНОГО ПРОДУКТА
Программный продукт применялся для расчета ресурса трубчатого
элемента печи по производству метанола.
Рис. 7.1 Трубчатая печь конверсии
Рис. 7.2 Камера трубчатой печи
Ниже приведены исходные данные трубчатого элемента.
91
Конструктивные параметры трубки:
наружный диаметр Dн = 115 мм;
толщина стенки h = 10 мм.
Трубчатый элемент работает при постоянных термосиловых нагрузках.
Давление парогазовой смеси в трубах q = 3,8 МПа, температура Т0 = 1000 ºС,
осевое усилие Р = 0, Н. Допустимую дефомацию принимаем 5%.
Материал
трубчатого
элемента
–
сталь
45Х25Н20С.
Физико-
механические параметры материала: модуль упругости E = 2·105 МПа,
коэффициент Пуассона = 0,3, предел текучести т0 = 240 МПа.
Рис. 7.3 Исходные данные для расчета
После ввода данных и нажатии на кнопку расчета, получаем сообщение
(рис.7.4) о обуспешно произведенном расчете. По результатам численного
анализа располагаемый ресурс конструкции составляет 13 тысяч часов,
трубчатый элемент проработает при данных условия пример 1,5 года (рис.7.4)
Рис. 7.4 Сообщение о произведенном завершении расчета
92
График напряжений в трубчатом элементе изображен на рис.7.5
Рис. 7.5 График напряжений
График деформаций в трубчатом элементе представлен на рис.7.6.
Рис. 7.6 График деформаций
93
График величины поврждений в трубчатом элементе показан на рис.7.7.
Рис. 7.7 График повреждений в трубчатом элементе
В таблицах 7.1, 7.2, 7.3 представлены подробные результаты расчета,
параметры состояния изделия на всем протяжении работы. Табличные
результаты компьютерного анализа, составленные с помощью программы
«Resource Tube».
Таблица 7.1 – Изменение геометрических параметров трубчатого элемента
Шаг по
Срединый
Толщина стенки,
Повреждение
времени,час
радиус, мм
мм
изделия
1000
52.65
9.97
0.0630
2000
52.81
9.95
0.1271
3000
52.96
9.92
0.1924
4000
53.13
9.90
0.2590
5000
53.29
9.87
0.3268
6000
53.46
9.84
0.3960
7000
53.63
9.81
0.4666
8000
53.81
9.79
0.5387
9000
53.99
9.76
0.6123
10000
54.18
9.73
0.6875
11000
54.37
9.70
0.7643
12000
54.57
9.67
0.8430
13000
54.77
9.64
0.9235
13929
54.96
9.61
1.0000
94
Таблица 7.2 – Изменение напряжений в трубчатом элементе
Шаг по
времени,час
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
11000
12000
13000
13929
Осевое
Кольцевое
напряжение, МПа напряжение, МПа
8.19
20.06
8.21
20.17
8.23
20.28
8.25
20.40
8.27
20.52
8.30
20.64
8.32
20.77
8.34
20.90
8.37
21.03
8.39
21.17
8.42
21.31
8.45
21.45
8.47
21.60
8.50
21.74
Интенсивность
напряжений, МПа
17.47
17.57
17.67
17.77
17.88
17.99
18.10
18.22
18.34
18.46
18.59
18.72
18.85
18.98
Таблица 7.3 – Изменение деформаций в трубчатом элементе
Шаг по
времени,час
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
11000
12000
13000
13929
Осевая
деформация
-0.0003
-0.0007
-0.0010
-0.0014
-0.0018
-0.0021
-0.0025
-0.0030
-0.0034
-0.0038
-0.0043
-0.0048
-0.0053
-0.0057
Кольцевая
деформация
0.0029
0.0058
0.0088
0.0118
0.0149
0.0181
0.0214
0.0247
0.0280
0.0315
0.0350
0.0387
0.0424
0.0459
Радиальная
деформация
-0.0025
-0.0051
-0.0078
-0.0105
-0.0132
-0.0160
-0.0188
-0.0217
-0.0247
-0.0277
-0.0307
-0.0339
-0.0371
-0.0402
Интенсивность
деформаций
0.0031
0.0064
0.0096
0.0129
0.0163
0.0198
0.0233
0.0269
0.0306
0.0344
0.0382
0.0421
0.0462
0.0500
В табл.7.1 представлены параметры состояния трубки в течении времени
с шагом в 1000 часов. По результатам видно, что срединный радиус трубчатого
95
элемента увеличился на 2,46 мм, а также толщина стенки уменьшилась на 0,39
мм.
С помощью программного продукта «Resource Tube» можно проводить
всевозможные варианты расчетов трубчатых элементов с различными
геометрическими параметрами, задавая различную нагрузку.
96
ЗАКЛЮЧЕНИЕ
В результате данной работы были разработана математическая модель
процесса вязкоупругого деформирования трубчатого элемента на основе
теории течения установившейся ползучести. Разработан метод и алгоритм
численного анализа параметров напряженно-деформированного состояния
изделия на протяжении жизненного цикла.
Разработано программного обеспечение компьютерного мониторинга
показателей состояния и остаточного ресурса трубчатых элементов на всем
протяжении жизненного цикла.
Реализованный
метод
позволяет
прогнозировать
долговечность
трубчатых элементов, работающих при высоких температурах, и осуществлять
мониторинг напряженно-деформированного состояния и ресурса на всем
протяжении жизненного цикла изделия. Программный продукт может найти
применение в отраслевых САПР. Возможно его автономное использование как
на этапе проектирования для расчетной оценки располагаемого ресурса
элементов конструкций, так и в процессе эксплуатации для оперативного
мониторинга состояния и ресурса оборудования.
97
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Малинин Н.Н. Расчёты на ползучесть элементов машиностроительных
конструкций. М.: Машиностроение, 1981. 221 с.
2. Гарофало Ф. Законы ползучести и длительной прочности металлов и
сплавов. М.: Металлургия, 1968. 304 с.
3. Soderberg C.R. The interpretation of creep tests for machine design //
Transactions of the ASME. 1936. Vol. 58. No. 8, pp. 733–743.
4. Работнов Ю.Н. Ползучесть элементов конструкций. М.: Наука, 1966.
752 с.
5. Davenport C.C. Correlation of creep anв relaxation properties of cooper //
Annales de Chimie et de Physique. 1938. Vol. 5. No. 2, pp. A55–A60.
6. Качанов Л.М. Теория ползучести. М.: Физматгиз. 1960. 455 с.
7. Odqvist F.K.G. Mathematical theory of creep rupture. Oxford: Clarendon
Press. 1974. 200 p.
8. Людвик П. Элементы технологической механики // Расчеты на
прочность. М,: Машиностроение, 1971. Вып. 15. С. 132–166.
9. Надаи А. Пластичность и разрушение твердых тел. М.: Изд. иностр.
лит. Т.1. 1954. С. 647: М.: Мир. Т.2. 1969. С. 863.
10. Стасенко И.В. Модифицированная формулировка теории упрочнения
// Изв. высших учебных заведений. Машиностроение. 1975. № 11. С. 171–173.
11. Трунин И.И. Об одном варианте уравнения состояния при ползучести
// Деформирование и разрушение твердых тел. М.: Изд. МГУ, 1977. С. 83–89.
12. Bailey R.W. Creep of steel under simple and compound stress and the
use of high initial temperature in steam power plant // Transactions Tokyo Sectional
Meeting of the World Power Conference. 1929.
13. Криштал М.А. Миркин И.Л. Ползучесть и разрушение сплавов. М.:
Металлургия, 1966. 191 с.
14. Manson S.S., Haferd A.M. An linear time – temperature relation for
extrapolation of creep and stress rupture date // NASA TN 2890. 1953.
98
15. Журков С.Н., Нарзулаев Б.Н. Временная зависимость длительной
прочности твёрдых тел // Журнал технической физики. 1954. № 24. С. 164–
171.
16. Журков С.Н., Санфирова Т.П. Изучение временной и температурной
зависимости прочности // Физика твёрдого тела. 1960. № 2, вып. 6. С. 1044–
1049.
17. Журков С.Н., Санфирова Т.П. Температурно-временная зависимость
прочности чистых металлов // Докл. АН СССР. 1955. №2. С. 237–240.
18. Коростылёв А.В., Луганцев Л.Д. Моделирование процесса ползучести
реакционных труб печей конверсии углеводородных газов. //
Заводская
лаборатория. Диагностика материалов. 2009. Т. 75, № 11. С. 52-54.
19. Korostylev A.V., Lugantsev L.D. Engineering analysis of the reliability
and working life of methane conversion reaction tubes // Chemical and Petroleum
Engineering. 2009. Vol. 45, no. 5-6. P. 353-356.
20. Коростылев А.В. Инженерный анализ ресурса трубчатых элементов
печей конверсии углеводородов: дис. … канд. техн. наук: 05.02.13. Мос. гос. унт. инж. экологии. Москва. 2009. 157 с.
21. ASTM A 608. Standart specification for centrifugally cast ironchromiumnickel high-alloy tubing for pressure application at high temperatures.
22. Heat-resistant alloys for hydrocarbon processing. // Manoir Industries:
Production catalogue. 2001.
23. Heat resistant alloy HK-40 // Kubota Metal Corporation: Catalogue.
1991.
24.
Румшиский
Л.З.
Математическая
эксперимента. М.: Наука, 1971. 192 с.
99
обработка
результатов
ПРИЛОЖЕНИЕ 1
СЛОВАРЬ ТЕРМИНОВ
В
Вязкость (внутреннее трение) — одно из явлений переноса, свойство
текучих (жидкостей и газов) и твёрдых (металлов, полупроводников,
диэлектриков, ферромагнетиков) тел оказывать сопротивление перемещению
одной их части относительно другой. В результате работа, затрачиваемая на это
перемещение, рассеивается в виде тепла.
Д
Девиатор напряжений — часть тензора напряжений, характеризующая
напряжения, связанные с изменением формы деформируемого тела без
изменения его объема.
Деформация — изменение взаимного положения частиц тела, связанное
с их перемещением, друг относительно друга.
Долговечность — свойство элемента или системы длительно сохранять
работоспособность до наступления предельного состояния при определенных
условиях эксплуатации.
З
Задача Коши (начальная задача) – это задача нахождения частного
решения
дифференциального
уравнения,
удовлетворяющего
заданным
начальным условиям.
Закон Гука – утверждение, устанавливающее прямо пропорциональную
зависимость между деформацией, которая возникает в упругом теле, и силой,
приложенной к данному телу.
И
Изотропия — одинаковость физических свойств во всех направлениях,
инвариантность, симметрия по отношению к выбору направления. Изотропная
среда — такая область пространства, физические свойства которой не зависят
от направления.
100
Н
Неразрушающий контроль — контроль надёжности основных рабочих
свойств и параметров объекта или отдельных его элементов/узлов, не
требующий выведения объекта из работы либо его демонтажа.
Несущая способность — способность выдерживать нагрузку при
поддержании
нормального
функционирования.
Несущая
способность
(механика) — предельная нагрузка конструкции, превышение которой
приводит к пластическим деформациям.
Надежность — свойство объекта сохранять работоспособное состояние
в течение некоторого времени.
О
Остаточный ресурс — суммарная наработка оборудования (в часах,
кубометрах, гектарах, километрах, тоннах, циклах и т. п.) от момента
проведения контроля его технического состояния, до перехода в предельное
состояние.
П
Ползучесть материалов (последействие) — медленная, происходящая с
течением времени, деформация твёрдого тела под воздействием постоянной
нагрузки или механического напряжения. Ползучести в той или иной мере
подвержены все твёрдые тела — как кристаллические, так и аморфные.
Предельное состояние —
дальнейшая
эксплуатация
восстановление
его
это состояние объекта, при котором его
недопустима
работоспособного
или
нецелесообразна,
состояния
невозможно
либо
или
нецелесообразно.
Р
Работоспособность
характеризуемое
—
способностью
техническое
состояние
выполнения
оборудованием
технологических функций.
101
оборудования,
заданных
Т
Тензор напряжений — тензор второго ранга описывает механические
напряжения в произвольной точке нагруженного тела, возникающих в этой
точке при его малых деформация.
У
Упругая деформация — деформация, исчезающая после прекращения
действий на тело внешних сил. При этом тело принимает первоначальные
размеры и форму.
Усталость — процесс постепенного накопления повреждений под
действием переменных напряжений, приводящих к изменению свойств,
образованию трещин, их развитию и разрушению.
102
ПРИЛОЖЕНИЕ 2
ЛИСТИНГ ПРОГРАММНОГО КОДА
#include <fmx.h>
#pragma hdrstop
#include "fmuTitle.h"
#include "fmuHead.h"
//-----------------------------------------------------#pragma package(smart_init)
#pragma resource "*.fmx"
TfmTitle *fmTitle;
//-----------------------------------------------------void __fastcall TfmTitle::OkClick(TObject *Sender)
{
fmHead->Show();
fmTitle->Hide();
}
//-----------------------------------------------------void __fastcall TfmTitle::tmTimer(TObject *Sender)
{
if (pb->Max == pb->Value)
{
tm->Enabled = false;
fmTitle->Hide();
fmHead->Show();
}
else pb->Value++;
}
//-----------------------------------------------------void __fastcall TfmTitle::FormShow(TObject *Sender)
{
tm->Enabled=true;
}
//-----------------------------------------------------#ifndef fmuTitleH
#define fmuTitleH
//-----------------------------------------------------#include <System.Classes.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
#include <FMX.Controls.Presentation.hpp>
#include <FMX.Objects.hpp>
#include <FMX.StdCtrls.hpp>
#include <FMX.Types.hpp>
103
//-----------------------------------------------------class TfmTitle : public TForm
{
__published: // IDE-managed Components
TImage *Image1;
TLabel *Label2;
TButton *Ok;
TProgressBar *pb;
TTimer *tm;
TImage *Image2;
TLabel *Label1;
void __fastcall OkClick(TObject *Sender);
void __fastcall tmTimer(TObject *Sender);
void __fastcall FormShow(TObject *Sender);
private:
// User declarations
public:
// User declarations
__fastcall TfmTitle(TComponent* Owner);
};
//-----------------------------------------------------extern PACKAGE TfmTitle *fmTitle;
//-----------------------------------------------------#endif
fmuHead.cpp
#include <fmx.h>
#pragma hdrstop
#include "fmuHead.h"
#include "UDiagram.h"
#include "fmuTitle.h"
#include "fmuSourceData.h"
#include "UExport.h"
#include "fmuRule.h"
#include "UDel.h"
//-----------------------------------------------------#pragma package(smart_init)
#pragma link "FMX.frxClass"
#pragma link "FMX.frxDBSet"
#pragma resource "*.fmx"
TfmHead *fmHead;
//-----------------------------------------------------__fastcall
TfmHead::TfmHead(TComponent*
Owner)
:
TForm(Owner) {
}
104
//-----------------------------------------------------void
__fastcall
TfmHead::tcInitialDataClick(TObject
*Sender) {
fmSourceData->Show();
}
//-----------------------------------------------------void __fastcall TfmHead::tcDiagClick(TObject *Sender) {
FDiagram->Show();
}
// -------------------------------------------------------------void __fastcall TfmHead::tcExitClick(TObject *Sender) {
fmHead->Close();
}
//-----------------------------------------------------void __fastcall TfmHead::buInitDataClick(TObject *Sender)
{
fmSourceData->Show();
}
//-----------------------------------------------------void __fastcall TfmHead::Button5Click(TObject *Sender) {
fmHead->Close();
}
//-----------------------------------------------------void __fastcall TfmHead::buDiagrmClick(TObject *Sender) {
FDiagram->Show();
}
//-----------------------------------------------------//-----------------------------------------------------void __fastcall TfmHead::FormCloseQuery(TObject *Sender,
bool &CanClose) {
//вызов сообщения о закрытии программы
int BS;
BS = MessageDlg("Вы действительно хотите выйти из
программы ?",
TMsgDlgType::mtConfirmation,
TMsgDlgButtons()
<<
TMsgDlgBtn::mbYes
<<
TMsgDlgBtn::mbNo, 0);
if (BS == mrYes)
CanClose = True;
else
CanClose = False;
}
105
//-----------------------------------------------------void
__fastcall
TfmHead::FormClose(TObject
*Sender,
TCloseAction &Action) {
fmTitle->Close();
}
//-----------------------------------------------------void __fastcall TfmHead::buOkClick(TObject *Sender) {
FormTablResult();
}
//-----------------------------------------------------void TfmHead::FormTablResult() {
// добавление результатов расчета в стринггрид
std::string S14(14, ' ');
std::string S16(16, ' ');
int RowCount = NStep + 2;
StringGrid1->RowCount = RowCount;
StringGrid1->Cells[0][0] = "
Tau";
StringGrid1->Cells[1][0] = "
R, мм";
StringGrid1->Cells[2][0] = "
h, мм";
StringGrid1->Cells[3][0] = " SigmaS, МПа";
StringGrid1->Cells[4][0] = " SigmaT, МПа";
StringGrid1->Cells[5][0] = " SigmaI, МПа";
StringGrid1->Cells[6][0] = "
EPSsc";
StringGrid1->Cells[7][0] = "
EPStc";
StringGrid1->Cells[8][0] = "
EPSzc";
StringGrid1->Cells[9][0] = "
EPSic";
StringGrid1->Cells[10][0] = "
DEFECT";
for (int IRow = 1; IRow < RowCount;
StringGrid1->Cells[0][IRow] =
CONVERT(Z[IRow - 1][0], 12,
StringGrid1->Cells[1][IRow] =
CONVERT(Z[IRow - 1][1], 12,
StringGrid1->Cells[2][IRow] =
CONVERT(Z[IRow - 1][2], 12,
StringGrid1->Cells[3][IRow] =
CONVERT(Z[IRow - 1][3], 12,
StringGrid1->Cells[4][IRow] =
CONVERT(Z[IRow - 1][4], 12,
StringGrid1->Cells[5][IRow] =
CONVERT(Z[IRow - 1][5], 12,
StringGrid1->Cells[6][IRow] =
106
++IRow) {
10, 0).c_str();
10, 2).c_str();
10, 2).c_str();
10, 2).c_str();
10, 2).c_str();
10, 2).c_str();
CONVERT(Z[IRow - 1][6], 12, 10, 4).c_str();
StringGrid1->Cells[7][IRow] =
CONVERT(Z[IRow - 1][7], 12, 10, 4).c_str();
StringGrid1->Cells[8][IRow] =
CONVERT(Z[IRow - 1][8], 12, 10, 4).c_str();
StringGrid1->Cells[9][IRow] =
CONVERT(Z[IRow - 1][9], 12, 10, 4).c_str();
StringGrid1->Cells[10][IRow] =
CONVERT(Z[IRow - 1][10], 12, 10, 4).c_str();
}
}
//-----------------------------------------------------void __fastcall TfmHead::buTestClick(TObject *Sender)
{
//переход на вкалдку расчета из основного меню
tcMenu->ActiveTab = tiTest;
buTest->Enabled=false;
buHistory->Enabled=true;
}
//-----------------------------------------------------void __fastcall TfmHead::FormShow(TObject *Sender) {
//событие появления главной формы
tcMenu->TabPosition=TTabPosition::None;
//отключение перехода по вкладкам через компонент
tabControl
FDConnection1->Params->Database = "ParamModel.db";
//соединение с базой данных
FDConnection1->Connected = true;
buTest->Enabled=false;
buGotoHis->Visible=false;
ress->Text = "";
b2->Visible=false;
b1->Visible=false;
b3->Visible=false;
tcMenu->ActiveTab == tiTest;
edTMax->Visible=false;
edTmin->Visible=false;
frame->Visible=false;
Label3->Visible=false;
Label6->Visible=false;
}
//-----------------------------------------------------void __fastcall TfmHead::buHistoryClick(TObject *Sender)
{
//переход на вкладку историй расчета из основного
меню
tcMenu->ActiveTab = tiHistory;
107
buHistory->Enabled=false;
buTest->Enabled=true;
}
//-----------------------------------------------------void
__fastcall
TfmHead::buMatterialClick(TObject
*Sender) {
//переход на вкладку добавления материалов
из основного меню
tcMenu->ActiveTab = tiMaterial;
}
//-----------------------------------------------------void __fastcall TfmHead::Button4Click(TObject *Sender) {
if (edDn->Text.IsEmpty() || edH->Text.IsEmpty() ||
edP->Text.IsEmpty() ||
edQ->Text.IsEmpty() || edT->Text.IsEmpty() ||
edDeform->Text.IsEmpty()
|| edTime->Text.IsEmpty()) {
ShowMessage("Заполните все значения!");
}
else {
D0 = StrToFloat(fmHead->edDn->Text);
// Начальный наружный диаметр трубки, мм
h0 = StrToFloat(fmHead->edH->Text); // Начальная
толщина стенки, мм
P = StrToFloat(fmHead->edP->Text); // Внутреннее
давление, МПа
q = StrToFloat(fmHead->edQ->Text); // Осевое
усилие, Н
T0
=
StrToFloat(fmHead->edT->Text);
//
Температура, град С
EPSlim = StrToFloat(fmHead->edDeform->Text);
// Допустимая величина интенсивности деформации
ползучести
Mark
=
ComboBoxM->Items->Strings[ComboBoxM>ItemIndex]; // Марка стали
DTau = StrToFloat(fmHead->edTime->Text); // Шаг
по времени, час
// int Model = StrToInt(ComboBoxModel->Items>Strings[ComboBoxModel->ItemIndex]); //Номер
модели
скорости ползучести конструкционного материала
R0 = (D0 - h0) / 2; // Начальный средний радиус
трубки, мм
108
CC = FDTable1->FieldByName("CC")->AsFloat;
// Параметр математической модели ползучести,1/ч
nn = FDTable1->FieldByName("nn")->AsFloat;
// Параметр математической модели ползучести
DeltaH
=
FDTable1->FieldByName("DeltaH")>AsFloat;
// Параметр математической модели ползучести энергия активации процесса, Дж/моль
Gamma = FDTable1->FieldByName("Gamma")->AsFloat;
// Параметр математической модели ползучести,
Дж/(моль·МПа)
SigmaT0
=
FDTable1->FieldByName("SigmaT0")>AsFloat;
if (Check())
// проверка введенных параметров
{
try
{
frame->Visible=true;
buGotoHis->Enabled=true;
//frame->FontColor=Label6->true;
frame->Stroke->Color=fmHead->Label6>FontColor;
COUNT();
//расчет
}
catch(Exception *e)
{
ShowMessage(e->Message);
}
}
//-----------------------------------------------------void
__fastcall
TfmHead::FDConnection1AfterConnect(TObject *Sender) {
FDTable1->Open();
FDTable2->Open();
}
//-----------------------------------------------------void __fastcall TfmHead::buBackClick(TObject *Sender) {
// fmHead->tcMaterial->Visible = false;
// fmHead->tcMain->Visible = true;
fmHead->buBack->Visible = false;
}
109
//-----------------------------------------------------void __fastcall TfmHead::buADDClick(TObject *Sender) {
//добавление данных в бд для материала
if (fmHead->edMaark->Text.IsEmpty() || fmHead->edAA>Text.IsEmpty() ||
fmHead->edNnn->Text.IsEmpty() || fmHead->editQ>Text.IsEmpty() ||
fmHead->editGa->Text.IsEmpty()
||
fmHead>editSigmat->Text.IsEmpty() ||
fmHead->edTmin1->Text.IsEmpty()
||
fmHead>edTmax2->Text.IsEmpty()
)
//проверка на пустоту заполненных эдитов
{
ShowMessage("Заполните все значения");
}
else if (StrToFloat(editSigmat->Text)<200 ||
StrToFloat(editSigmat->Text)>300)
{
ShowMessage("Недопустимое
значение для предела текучести");
}
else {
//добавление параметров в бд
FDTable1->Append();
FDTable1->FieldByName("Name")->AsString
fmHead->edMaark->Text;
FDTable1->FieldByName("CC")->AsFloat
StrToFloat(fmHead->edAA->Text);
FDTable1->FieldByName("nn")->AsFloat
StrToFloat(fmHead->edNnn->Text);
FDTable1->FieldByName("DeltaH")->AsFloat
StrToFloat(fmHead->editQ->Text);
FDTable1->FieldByName("Gamma")->AsFloat
StrToFloat(fmHead->editGa->Text);
FDTable1->FieldByName("SigmaT0")->AsFloat
StrToFloat(fmHead->editSigmat->Text);
FDTable1->FieldByName("tmin")->AsFloat
StrToInt(fmHead->edTmin1->Text);
FDTable1->FieldByName("tmax")->AsFloat
StrToInt(fmHead->edTmax2->Text);
FDTable1->Post();
//сохранение в бд
fmHead->edMaark->Text = "";
110
=
=
=
=
=
=
=
=
fmHead->edAA->Text = "";
fmHead->edNnn->Text = "";
fmHead->editQ->Text = "";
fmHead->editGa->Text = "";
fmHead->editSigmat->Text = "";
fmHead->edTmin1->Text = "";
fmHead->edTmax2->Text = "";
}
}
//-----------------------------------------------------void TfmHead::DiagramParameters(double &YYmin, double
&YYmax, double &Increm) {
double Ymin, Ymax, DY, Mas, A;
int K;
Increm = 1;
if (YYmin == YYmax) {
YYmin = YYmin - 5;
YYmax = YYmax + 5;
Increm = 1;
return;
}
if (YYmin > 0)
Ymin = YYmin
else
Ymin = YYmin
if (YYmax > 0)
Ymax = YYmax
else
Ymax = YYmax
* 0.99;
* 1.01;
* 1.01;
* 0.99;
DY = Ymax - Ymin;
A = log10(DY);
if (A > 0)
K = trunc(A) - 1;
else
K = trunc(A) - 2;
Mas = pow(10.0, K);
Ymin = Ymin / Mas;
Ymax = Ymax / Mas;
Ymin = trunc(Ymin) - 1;
Ymax = trunc(Ymax) + 1;
DY = Ymax - Ymin;
if (DY >= 10 && DY < 20)
111
Increm = 1;
if (DY >= 20 && DY < 50)
Increm = 2;
if (DY >= 50)
Increm = 5;
YYmin = Ymin * Mas;
YYmax = Ymax * Mas;
Increm = Increm * Mas;
}
//-----------------------------------------------------void TfmHead::Draw1() {
//отрисовка графика
повреждений
double Ymin = 1e16;
double Ymax = -1e16;
double Increm;
double DX;
int KP = 0; // 1;
//Коэффициент
уплотнения
графика
for (int P = 0; P < NStep; ++P) {
if (YGD[P] < Ymin)
Ymin = YGD[P];
if (YGD[P] > Ymax)
Ymax = YGD[P];
}
/*
{Для
уплотнения
графика
(k>0)
применяется
интерполяционная формула
Ньютона интерполирования вперед. - Положий Г.Н.,
с.126, 159} */
INTERPOL_COMPACT(NStep, KP, YGD, YGD2);
DiagramParameters(Ymin, Ymax, Increm);
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
Chart1->BottomAxis->Minimum
Chart1->BottomAxis->Maximum
Chart1->LeftAxis->Minimum =
Chart1->LeftAxis->Maximum =
= -1e16;
= 1e16;
-1e16;
1e16;
Chart1->LeftAxis->Minimum = Ymin;
112
Chart1->LeftAxis->Maximum = Ymax;
Chart1->LeftAxis->Increment = Increm;
Chart1->RightAxis->Visible = false;
Chart1->Legend->Visible = true;
Chart1->BottomAxis->Minimum = Tau00;
Chart1->BottomAxis->Maximum = RESOURCE;
DX
=
Chart1->BottomAxis->Maximum
>BottomAxis->Minimum;
if (DX > 10000)
Chart1->BottomAxis->Increment = 1000;
if (DX > 5000 && DX <= 10000)
Chart1->BottomAxis->Increment = 500;
if (DX > 2500 && DX <= 5000)
Chart1->BottomAxis->Increment = 200;
if (DX > 1000 && DX <= 2500)
Chart1->BottomAxis->Increment = 100;
if (DX > 500 && DX <= 1000)
Chart1->BottomAxis->Increment = 50;
if (DX > 250 && DX <= 500)
Chart1->BottomAxis->Increment = 20;
if (DX > 100 && DX <= 250)
Chart1->BottomAxis->Increment = 10;
if (DX > 50 && DX <= 100)
Chart1->BottomAxis->Increment = 5;
if (DX > 25 && DX <= 50)
Chart1->BottomAxis->Increment = 2;
if (DX > 10 && DX <= 25)
Chart1->BottomAxis->Increment = 0.5;
if (DX <= 1)
Chart1->BottomAxis->Increment = 0.05;
Chart1-
DX = (RESOURCE - Tau00) / ((KP + 1) * NStep);
for (int P = 0; P < (KP + 1) * NStep; ++P)
X[P] = Tau00 + P * DX;
for (int P = 0; P < (KP + 1) * NStep; ++P)
Series1->AddXY(X[P], YGD[P], "", clTeeColor);
}
//-----------------------------------------------------void TfmHead::Draw3() {
// отрисовка графика напряжений
double Ymin = 1e16;
double Ymax = -1e16;
double Increm;
double DX;
113
int KP = 0; // 1;
графика
//Коэффициент
уплотнения
for (int P = 0; P < NStep; ++P) {
if (YGs[P] < Ymin)
Ymin = YGs[P];
if (YGs[P] > Ymax)
Ymax = YGs[P];
if (YGt[P] < Ymin)
Ymin = YGt[P];
if (YGt[P] > Ymax)
Ymax = YGt[P];
if (YGi[P] < Ymin)
Ymin = YGi[P];
if (YGi[P] > Ymax)
Ymax = YGi[P];
}
/*
{Для
уплотнения
графиков
(k>0)применяется
интерполяционная формула
Ньютона интерполирования вперед. - Положий Г.Н.,
с.126, 159} */
INTERPOL_COMPACT(NStep, KP, YGs, YGs2);
INTERPOL_COMPACT(NStep, KP, YGt, YGt2);
INTERPOL_COMPACT(NStep, KP, YGi, YGi2);
DiagramParameters(Ymin, Ymax, Increm);
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
Chart1->BottomAxis->Minimum
Chart1->BottomAxis->Maximum
Chart1->LeftAxis->Minimum =
Chart1->LeftAxis->Maximum =
= -1e16;
= 1e16;
-1e16;
1e16;
Chart1->LeftAxis->Minimum = Ymin;
Chart1->LeftAxis->Maximum = Ymax;
Chart1->LeftAxis->Increment = Increm;
Chart1->RightAxis->Visible = false;
Chart1->Legend->Visible = true;
Chart1->BottomAxis->Minimum = Tau00;
114
Chart1->BottomAxis->Maximum = RESOURCE;
DX
=
Chart1->BottomAxis->Maximum
>BottomAxis->Minimum;
if (DX > 10000)
Chart1->BottomAxis->Increment = 1000;
if (DX > 5000 && DX <= 10000)
Chart1->BottomAxis->Increment = 500;
if (DX > 2500 && DX <= 5000)
Chart1->BottomAxis->Increment = 200;
if (DX > 1000 && DX <= 2500)
Chart1->BottomAxis->Increment = 100;
if (DX > 500 && DX <= 1000)
Chart1->BottomAxis->Increment = 50;
if (DX > 250 && DX <= 500)
Chart1->BottomAxis->Increment = 20;
if (DX > 100 && DX <= 250)
Chart1->BottomAxis->Increment = 10;
if (DX > 50 && DX <= 100)
Chart1->BottomAxis->Increment = 5;
if (DX > 25 && DX <= 50)
Chart1->BottomAxis->Increment = 2;
if (DX > 10 && DX <= 25)
Chart1->BottomAxis->Increment = 0.5;
if (DX <= 1)
Chart1->BottomAxis->Increment = 0.05;
DX = (RESOURCE - Tau00) / ((KP + 1) *
for (int P = 0; P < (KP + 1) * NStep;
X[P] = Tau00 + P * DX;
for (int P = 0; P < (KP + 1) * NStep;
Series1->AddXY(X[P], YGs2[P], "",
Series2->AddXY(X[P], YGt2[P], "",
Series3->AddXY(X[P], YGi2[P], "",
}
Chart1-
NStep);
++P)
++P) {
clTeeColor);
clTeeColor);
clTeeColor);
}
//-----------------------------------------------------void TfmHead::Draw4() {
// отрисовка графика деформации
ползучести трубчатого элемента
double Ymin = 1e16;
double Ymax = -1e16;
double Increm;
double DX;
int KP = 0; // 1;
//Коэффициент
уплотнения
графика
115
for (int P = 0; P < NStep; ++P) {
if (YEs[P] < Ymin)
Ymin = YEs[P];
if (YEs[P] > Ymax)
Ymax = YEs[P];
if (YEt[P] < Ymin)
Ymin = YEt[P];
if (YEt[P] > Ymax)
Ymax = YEt[P];
if (YEz[P] < Ymin)
Ymin = YEz[P];
if (YEz[P] > Ymax)
Ymax = YEz[P];
if (YEi[P] < Ymin)
Ymin = YEi[P];
if (YEi[P] > Ymax)
Ymax = YEi[P];
}
/*
{Для
уплотнения
графиков
(k>0)применяется
интерполяционная формула
Ньютона интерполирования вперед. - Положий Г.Н.,
с.126, 159} */
INTERPOL_COMPACT(NStep, KP, YEs, YEs2);
INTERPOL_COMPACT(NStep, KP, YEt, YEt2);
INTERPOL_COMPACT(NStep, KP, YEz, YEz2);
INTERPOL_COMPACT(NStep, KP, YEi, YEi2);
DiagramParameters(Ymin, Ymax, Increm);
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
Chart1->BottomAxis->Minimum
Chart1->BottomAxis->Maximum
Chart1->LeftAxis->Minimum =
Chart1->LeftAxis->Maximum =
= -1e16;
= 1e16;
-1e16;
1e16;
Chart1->LeftAxis->Minimum = Ymin;
Chart1->LeftAxis->Maximum = Ymax;
Chart1->LeftAxis->Increment = Increm;
Chart1->RightAxis->Visible = false;
116
Chart1->Legend->Visible = true;
Chart1->BottomAxis->Minimum = Tau00;
Chart1->BottomAxis->Maximum = RESOURCE;
DX
=
Chart1->BottomAxis->Maximum
>BottomAxis->Minimum;
if (DX > 10000)
Chart1->BottomAxis->Increment = 1000;
if (DX > 5000 && DX <= 10000)
Chart1->BottomAxis->Increment = 500;
if (DX > 2500 && DX <= 5000)
Chart1->BottomAxis->Increment = 200;
if (DX > 1000 && DX <= 2500)
Chart1->BottomAxis->Increment = 100;
if (DX > 500 && DX <= 1000)
Chart1->BottomAxis->Increment = 50;
if (DX > 250 && DX <= 500)
Chart1->BottomAxis->Increment = 20;
if (DX > 100 && DX <= 250)
Chart1->BottomAxis->Increment = 10;
if (DX > 50 && DX <= 100)
Chart1->BottomAxis->Increment = 5;
if (DX > 25 && DX <= 50)
Chart1->BottomAxis->Increment = 2;
if (DX > 10 && DX <= 25)
Chart1->BottomAxis->Increment = 0.5;
if (DX <= 1)
Chart1->BottomAxis->Increment = 0.05;
DX = (RESOURCE - Tau00) / ((KP + 1) *
for (int P = 0; P < (KP + 1) * NStep;
X[P] = Tau00 + P * DX;
for (int P = 0; P < (KP + 1) * NStep;
Series1->AddXY(X[P], YEs2[P], "",
Series2->AddXY(X[P], YEt2[P], "",
Series3->AddXY(X[P], YEz2[P], "",
Series4->AddXY(X[P], YEi2[P], "",
}
Chart1-
NStep);
++P)
++P) {
clTeeColor);
clTeeColor);
clTeeColor);
clTeeColor);
}
//-----------------------------------------------------void __fastcall TfmHead::mi1Click(TObject *Sender) {
//переход на отрисовку графика напряжения
b1->Visible=true;
b2->Visible=false;
117
b3->Visible=false;
Label19->Text = "Напряжения в трубчатом элементе";
Chart1->Title->Text->Clear();
Chart1->Title->Text->Add
("Осевые и кольцевые напряжения, интенсивность
напряжений");
Chart1->LeftAxis->Title->Caption = "Sigma, МПа";
Chart1->Series[0]->Title = "SigmaS
Chart1->Series[1]->Title = "SigmaT
Chart1->Series[2]->Title = "SigmaI";
Chart1->Series[0]->ShowInLegend
Chart1->Series[1]->ShowInLegend
Chart1->Series[2]->ShowInLegend
Chart1->Series[3]->ShowInLegend
=
=
=
=
";
";
true;
true;
true;
false;
Chart1->Series[0]->SeriesColor = claGreen;
Series1->LinePen->Width = 2;
Chart1->Series[1]->SeriesColor = claBlue;
Series2->LinePen->Width = 2;
Chart1->Series[2]->SeriesColor = claRed;
Series3->LinePen->Width = 3;
for (int P
YGs[P]
YGt[P]
YGi[P]
}
Draw3();
=
=
=
=
0; P < NStep; ++P) {
Z[P][3]; // SigmaS
Z[P][4]; // SigmaT
Z[P][5]; // SIgmaI
}
//-----------------------------------------------------void __fastcall TfmHead::mi3Click(TObject *Sender) {
//переход на отрисовку графика повреждения
b3->Visible=true;
b2->Visible=false;
b1->Visible=false;
Label19->Text = "Повреждение изделия";
Chart1->Title->Text->Clear();
Chart1->Title->Text->Add("Величина
повреждений
трубчатого элемента");
Chart1->LeftAxis->Title->Caption = "DEFECT";
Chart1->Series[0]->Title = "DEFECT";
Chart1->Series[0]->ShowInLegend = false; // defect
118
Chart1->Series[1]->ShowInLegend = false;
Chart1->Series[2]->ShowInLegend = false;
Chart1->Series[3]->ShowInLegend = false;
Chart1->Series[0]->SeriesColor = claRed;
Series1->LinePen->Width = 2;
for (int P = 0; P < NStep; ++P)
YGD[P] = Z[P][10]; // DEFECT
Draw1();
}
// ----------------------------------------------------void
__fastcall
TfmHead::mi2Click(TObject
*Sender)
{//переход на отрисовку графика деформаций
b2->Visible=true;
b3->Visible=false;
b1->Visible=false;
Label19->Text = "Деформации ползучести трубчатого
элемента";
Chart1->Title->Text->Clear();
Chart1->Title->Text->Add
("Осевые, кольцевые и радиальные деформации,
интенсивность деформаций");
Chart1->LeftAxis->Title->Caption
=
"Деформации
ползучести";
Chart1->Series[0]->Title
Chart1->Series[1]->Title
Chart1->Series[2]->Title
Chart1->Series[3]->Title
=
=
=
=
"EPScs
"EPSct
"EPScz
"EPSci";
Chart1->Series[0]->ShowInLegend
Chart1->Series[1]->ShowInLegend
Chart1->Series[2]->ShowInLegend
Chart1->Series[3]->ShowInLegend
Chart1->Series[0]->SeriesColor
Series1->LinePen->Width = 2;
Chart1->Series[1]->SeriesColor
Series2->LinePen->Width = 2;
Chart1->Series[2]->SeriesColor
Series3->LinePen->Width = 2;
Chart1->Series[3]->SeriesColor
Series4->LinePen->Width = 3;
119
=
=
=
=
";
";
";
true;
true;
true;
true;
= claGreen;
= claBlue;
= claMaroon;
= claRed;
for (int P
YEs[P]
YEt[P]
YEz[P]
YEi[P]
}
Draw4();
=
=
=
=
=
0; P < NStep; ++P) {
Z[P][6]; // EPScs
Z[P][7]; // EPSct
Z[P][8]; // EPScz
Z[P][9]; // EPSci
}
// ----------------------------------------------------void __fastcall TfmHead::buSaveResClick(TObject *Sender)
{ //сохранение результатов расчета в бд в таблицу Data
fmHead->FDTable2->Append();
fmHead->FDTable2->FieldByName("Dh")->AsFloat = D0;
fmHead->FDTable2->FieldByName("Hh")->AsFloat = h0;
fmHead->FDTable2->FieldByName("Tau")->AsFloat
=
DTau;
fmHead->FDTable2->FieldByName("Def")->AsFloat
=
EPSlim;
fmHead->FDTable2->FieldByName("Temp")->AsFloat = T0;
fmHead->FDTable2->FieldByName("Press")->AsFloat = q;
fmHead->FDTable2->FieldByName("P")->AsFloat = P;
fmHead->FDTable2->FieldByName("DateCalc")>AsDateTime = Now();
fmHead->FDTable2->FieldByName("Res")->AsFloat
=
RESOURCE;
fmHead->FDTable2->FieldByName("Mark")->AsString
=
Mark;
fmHead->FDTable2->FieldByName("Ccc")->AsFloat = CC;
fmHead->FDTable2->FieldByName("nnn")->AsFloat = nn;
fmHead->FDTable2->FieldByName("Q")->AsFloat
=
DeltaH;
fmHead->FDTable2->FieldByName("Ggama")->AsFloat
=
Gamma;
fmHead->FDTable2->FieldByName("Siggmat")->AsFloat =
SigmaT0;
fmHead->FDTable2->Post();
ShowMessage("Расчет успешно сохранен");
buSaveRes->Enabled = false;
buGotoHis->Enabled = false;
frame->Visible=false;
ress->Text="";
}
120
// ----------------------------------------------------void __fastcall TfmHead::Grid1CellClick(TColumn * const
Column, const int Row) {
if (FDTable2->IsEmpty())
return;
D0 = FDTable2->FieldByName("Dh")->AsFloat;
h0 = FDTable2->FieldByName("Hh")->AsFloat;
DTau = FDTable2->FieldByName("Tau")->AsFloat;
EPSlim = FDTable2->FieldByName("Def")->AsFloat;
T0 = FDTable2->FieldByName("Temp")->AsFloat;
q = FDTable2->FieldByName("Press")->AsFloat;
P = FDTable2->FieldByName("P")->AsFloat;
R0 = (D0 - h0) / 2; // Начальный средний радиус трубки,
мм
CC = FDTable2->FieldByName("Ccc")->AsFloat;
// Параметр математической модели ползучести,1/ч
nn = FDTable2->FieldByName("nnn")->AsFloat;
// Параметр математической модели ползучести
DeltaH = FDTable2->FieldByName("Q")->AsFloat;
// Параметр математической модели ползучести энергия активации процесса, Дж/моль
Gamma = FDTable2->FieldByName("Ggama")->AsFloat;
//
Параметр
математической
модели
ползучести,
Дж/(моль·МПа)
SigmaT0 = FDTable2->FieldByName("Siggmat")->AsFloat;
if (Check()) {
COUNT();
}
FormTablResult();
ress->Text="";
if (!StringGrid1->Cells[0][0].IsEmpty())
{
mb->Enabled=true;
}
mi1Click(0);
}
//-----------------------------------------------------void __fastcall TfmHead::buSearchClick(TObject *Sender) {
// поиск материалы в сохраненных расчетах
FDTable2->Filtered = false;
121
FDTable2->Filter = "Mark LIKE '%" + edSearch->Text +
"%'";
FDTable2->Filtered = true;
}
//-----------------------------------------------------void __fastcall TfmHead::edSearchChange(TObject *Sender)
{
buSearchClick(Sender);
}
//-----------------------------------------------------void __fastcall TfmHead::buReportClick(TObject *Sender) {
//формирование отчета из истории расчетов
if (fmHead->FDTable2->IsEmpty())
{
ShowMessage("Выберите
данные
для
создания
отчета.");
}else{
frxReport1->ShowReport();
}
}
//-----------------------------------------------------void __fastcall TfmHead::dateEd2Change(TObject *Sender) {
//поиск по дате реузльтатов в истории расчета
FDTable2->Filtered = false;
FDTable2->Filter = "DATE(DateCalc) =" +
QuotedStr(FormatDateTime("yyyy-mm-dd", dateEd2>Date));
FDTable2->Filtered = true;
}
//-----------------------------------------------------void __fastcall TfmHead::buExelClick(TObject *Sender) {
//сохранение в эксель таблиц расчетов
if
(StringGrid1->Cells[0][0].IsEmpty())
//проверка на наличие данных для сохранения
{
ShowMessage("Выберите расчет для сохранения");
} else{
if (SaveDialog2->Execute()){
const int xlExcel8 = 56;
int ExcelVer;
std::string VS;
AnsiString type ;
122
UnicodeString tt = SaveDialog2->FileName+type;
type = ChangeFileExt(SaveDialog2->FileName,".xlsx");
//Создаем объект Excel
Variant Excel=CreateOleObject("Excel.Application");
//Делаем видимым
// Excel.OlePropertySet("Visible", false);
//Выбираем книгу и лист
Variant
Book
=
Excel.OlePropertyGet("Workbooks").OlePropertyGet("Add");
Variant Sheet = Book.OlePropertyGet("Worksheets",1);
Sheet.OleProcedure("Activate");
Sheet.OlePropertySet(L"Name", WideString(L"Данные"));
//Excel.OlePropertyGet("Sheets","Данные").OleProcedure("
Select");
// Считываем кол-во столбцов и строк в StringGrid1
int NRow = StringGrid1->RowCount;
int NCol = 11;
Variant r = Sheet.OlePropertyGet("Range",
WideString(L"A1:N" + WideString(NRow)));
r.OlePropertySet("Value", WideString(L""));
r.OlePropertySet("NumberFormat", WideString("@"));
r.OlePropertySet("HorizontalAlignment", -4108); //
xlVAlignCenter
r.OlePropertySet("ColumnWidth", 14);
r.OlePropertyGet("Font").OlePropertySet(L"Name",
WideString(L"Arial"));
r.OlePropertyGet("Font").OlePropertySet("Size", 10);
// {Заполняем таблицу Excel}
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
1, 1).OlePropertySet
(L"Value", WideString(L"
Tau"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
1, 2).OlePropertySet
(L"Value", WideString(L"
R, мм"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
1, 3).OlePropertySet
(L"Value", WideString(L"
h, мм"));
123
1,
1,
1,
1,
1,
1,
1,
1,
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
4).OlePropertySet
(L"Value", WideString(L"
SigmaS, МПа"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
5).OlePropertySet
(L"Value", WideString(L"
SigmaT, МПа"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
6).OlePropertySet
(L"Value", WideString(L"
SigmaI, МПа"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
7).OlePropertySet
(L"Value", WideString(L"
EPSsc"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
8).OlePropertySet
(L"Value", WideString(L"
EPStc"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
9).OlePropertySet
(L"Value", WideString(L"
EPSzc"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
10).OlePropertySet
(L"Value", WideString(L"
EPSic"));
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
11).OlePropertySet
(L"Value", WideString(L"
DEFECT"));
for (int IRow = 1; IRow <= NRow; ++IRow)
for (int k = 1; k <= NCol; ++k)
Sheet.OlePropertyGet("Cells").OlePropertyGet("Item",
IRow + 1, k)
.OlePropertySet(L"Value",
WideString(StringGrid1->Cells[k
1][IRow]));
//Отключаем все предупреждения Excel
Excel.OlePropertySet("DisplayAlerts", false);
Excel.OlePropertyGet("WorkBooks",1).OleProcedure("SaveAs
", WideString(tt)) ;
//
Excel.OlePropertyGet("Workbooks")>SaveAs(SaveDialog2->FileName+type);
//ExcelApp.Workbooks[1].SaveAs(FileName, xlExcel8);
//
Book.OleProcedure(L"SaveAs",
WideString(GetCurrentDir() + L"\\"+ edFileName->Text));
124
//Закрываем приложение Excel
Excel.OlePropertySet("DisplayAlerts", false);
//ExcelApp.Workbooks.Close;
Excel.OleProcedure("Quit");
SaveDialog2->FileName = ""; }
}
}
// ----------------------------------------------------void __fastcall TfmHead::mi4Click(TObject *Sender) {
FDiagram->Show();
//открытие
диаграммы отдельным окном
}
// ----------------------------------------------------void __fastcall TfmHead::buToDataClick(TObject *Sender) {
//вернутся на вкладку расчетов
tcMenu->ActiveTab = tiTest;
buTest->Enabled = false;
buHistory->Enabled = true;
buMatterial->Enabled = true;
}
// ----------------------------------------------------void
__fastcall
TfmHead::buCancelFilterClick(TObject
*Sender) { //очищение фильтров поиска материала
edSearch->Text = "";
FDTable2->Filtered = false;
}
// ----------------------------------------------------void __fastcall TfmHead::Button13Click(TObject *Sender) {
fDel->Show();
}
// ----------------------------------------------------void __fastcall TfmHead::buDeleteClick(TObject *Sender) {
fExport->Show();
}
// ----------------------------------------------------void __fastcall TfmHead::tcMenuChange(TObject *Sender)
{
buTest->Enabled = !(tcMenu->ActiveTab == tiTest);
buMatterial->Enabled
=
!(tcMenu->ActiveTab
==
tiMaterial);
buHistory->Enabled
=
!(tcMenu->ActiveTab
==
tiHistory);
if (tcMenu->ActiveTab == tiTest)
125
{
//
BorderIcons = TBorderIcons(BorderIcons) >>
TBorderIcon::biMaximize;
fmHead->WindowState=0 ;
}
else
{
fmHead->WindowState=2 ;
// BorderIcons = TBorderIcons(BorderIcons) <<
TBorderIcon::biMaximize;
}
}
// ----------------------------------------------------void __fastcall TfmHead::buGotoHisClick(TObject *Sender)
//переход на вкладку истории расчетов
{
tcMenu->ActiveTab = tiHistory;
frame->Visible=false;
FormTablResult();
if (!StringGrid1->Cells[0][0].IsEmpty())
{
mb->Enabled=true;
}
mi1Click(0);
}
// ----------------------------------------------------void
__fastcall
TfmHead::b1Click(TObject
*Sender)
//сохранение графика напряжений в картинку
{
UnicodeString type ;
type = ChangeFileExt(SaveDialog1->FileName,".bmp");
SaveDialog1->FileName="Напряжения";
if (SaveDialog1->Execute())
{
Chart1->SaveToBitmapFile(SaveDialog1->FileName
+type);
SaveDialog1->FileName = "";
}
}
//-----------------------------------------------------void
__fastcall
TfmHead::b2Click(TObject
//сохранение графика деформаций в картинку
126
*Sender)
{
UnicodeString type ;
type = ChangeFileExt(SaveDialog1->FileName,".bmp");
SaveDialog1->FileName="Деформации";
if (SaveDialog1->Execute())
{
Chart1->SaveToBitmapFile(SaveDialog1->FileName
+type);
SaveDialog1->FileName = "";
}
}
//-----------------------------------------------------void
__fastcall
TfmHead::b3Click(TObject
*Sender)
//сохранение графика повреждений в картинку
{
UnicodeString type ;
type = ChangeFileExt(SaveDialog1->FileName,".bmp");
SaveDialog1->FileName="Повреждение";
if (SaveDialog1->Execute())
{
Chart1->SaveToBitmapFile(SaveDialog1->FileName
+type);
SaveDialog1->FileName = "";
}
}
//-----------------------------------------------------void __fastcall TfmHead::buHelpClick(TObject *Sender)
//открытие инструкции пользователя
{
if (system("ping -n 1 drive.google.com") == 0)
//проверка интернет-соединения
{
tcMenu->ActiveTab=tiHelp;
WebBrowser1->URL
="https://drive.google.com/file/d/1t6cdWo7p36skVbfPZX2fb
Zn2bl2ojsVz/view?usp=sharing" ;
}
else
{
tcMenu->ActiveTab=tiHistory;
ShowMessage("Отсутствует интернет-соединение");
127
}
}
//-----------------------------------------------------void __fastcall TfmHead::Switch1Switch(TObject *Sender)
//смена темы программы
{
if(Switch1->IsChecked==true)
{
fmHead->StyleBook = StyleBook2; //светлая тема
GroupBox2->FontColor = Label20->FontColor;
GroupBox1->FontColor = Label20->FontColor;
GroupBox5->FontColor = Label20->FontColor;
Button4->FontColor = Label22->FontColor;
buADD->FontColor = Label22->FontColor;
buSaveRes->FontColor = Label25->FontColor;
fExport->StyleBook = fmHead->StyleBook;
FDiagram->StyleBook = fmHead->StyleBook;
fDel->StyleBook = fmHead->StyleBook;
} else
{
fmHead->StyleBook = StyleBook1; //темная тема
GroupBox2->FontColor = Label21->FontColor;
GroupBox1->FontColor = Label21->FontColor;
GroupBox5->FontColor = Label21->FontColor;
Button4->FontColor = Label23->FontColor;
buADD->FontColor = Label23->FontColor;
buSaveRes->FontColor = Label24->FontColor;
fExport->StyleBook = fmHead->StyleBook;
FDiagram->StyleBook = fmHead->StyleBook;
fDel->StyleBook = fmHead->StyleBook;
}
}
//-----------------------------------------------------void
__fastcall
TfmHead::ComboBoxMClosePopup(TObject
*Sender)
{
TMin=StrToInt(edTmin->Text);
TMax=StrToInt(edTMax->Text);
fmHead->Label33->Text="Задавайте температуру от " +
IntToStr(TMin)+ " до " + IntToStr(TMax);
fmHead->edT->Hint="Задавайте температуру от " +
IntToStr(TMin)+ " до " + IntToStr(TMax);
}
//-----------------------------------------------------128
void __fastcall TfmHead::buRuleClick(TObject *Sender)
//отктие руководства для добавления материалов
{
if (system("ping -n 1 drive.google.com") == 0)
{
fmRule->Show();
}
else
{
tcMenu->ActiveTab=tiMaterial;
ShowMessage("Отсутствует интернет-соединение");
}
}
//-----------------------------------------------------fmuHead.h
#ifndef fmuHeadH
#define fmuHeadH
//-----------------------------------------------------#include <System.Classes.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
#include <FMX.TabControl.hpp>
#include <FMX.Types.hpp>
#include "fmuSourceData.h"
#include "uCalc.h"
#include <FMX.Layouts.hpp>
#include <FMX.Controls.Presentation.hpp>
#include <FMX.Grid.hpp>
#include <FMX.Grid.Style.hpp>
#include <FMX.ScrollBox.hpp>
#include <System.Rtti.hpp>
#include <FMX.Menus.hpp>
#include <FMX.StdCtrls.hpp>
#include <FMX.Objects.hpp>
#include <Data.Bind.Components.hpp>
#include <Data.Bind.EngExt.hpp>
#include <Data.Bind.Grid.hpp>
#include <Fmx.Bind.DBEngExt.hpp>
#include <Fmx.Bind.Editors.hpp>
#include <Fmx.Bind.Grid.hpp>
#include <System.Bindings.Outputs.hpp>
#include <FMX.Edit.hpp>
#include <FMX.Dialogs.hpp>
129
#include <FMX.ListBox.hpp>
#include <Data.DB.hpp>
#include <FireDAC.Comp.Client.hpp>
#include <FireDAC.Comp.DataSet.hpp>
#include <FireDAC.DApt.hpp>
#include <FireDAC.DApt.Intf.hpp>
#include <FireDAC.DatS.hpp>
#include <FireDAC.FMXUI.Wait.hpp>
#include <FireDAC.Phys.hpp>
#include <FireDAC.Phys.Intf.hpp>
#include <FireDAC.Phys.SQLite.hpp>
#include <FireDAC.Phys.SQLiteDef.hpp>
#include <FireDAC.Stan.Async.hpp>
#include <FireDAC.Stan.Def.hpp>
#include <FireDAC.Stan.Error.hpp>
#include <FireDAC.Stan.ExprFuncs.hpp>
#include <FireDAC.Stan.Intf.hpp>
#include <FireDAC.Stan.Option.hpp>
#include <FireDAC.Stan.Param.hpp>
#include <FireDAC.Stan.Pool.hpp>
#include <FireDAC.UI.Intf.hpp>
#include <Data.Bind.DBScope.hpp>
#include <FMXTee.Chart.hpp>
#include <FMXTee.Engine.hpp>
#include <FMXTee.Procs.hpp>
#include <FMXTee.Series.hpp>
#include <FMX.Memo.hpp>
#include "FMX.frxClass.hpp"
#include "FMX.frxDBSet.hpp"
#include <FMX.DateTimeCtrls.hpp>
#include <FMX.WebBrowser.hpp>
//-----------------------------------------------------class TfmHead : public TForm
{
__published: // IDE-managed Components
TStyleBook *StyleBook1;
TGrid *Grid1;
TBindingsList *BindingsList1;
TPanel *Panel1;
TPanel *Panel2;
TLabel *Label2;
TButton *buExel;
TStringGrid *StringGrid1;
TStringColumn *StringColumn1;
TStringColumn *StringColumn2;
130
TStringColumn *StringColumn3;
TStringColumn *StringColumn4;
TStringColumn *StringColumn5;
TStringColumn *StringColumn6;
TStringColumn *StringColumn9;
TStringColumn *StringColumn7;
TStringColumn *StringColumn8;
TStringColumn *StringColumn10;
TStringColumn *StringColumn11;
TTabControl *TabControl1;
TTabItem *TabItem1;
TTabItem *TabItem2;
TTabControl *tcMenu;
TTabItem *tiTest;
TTabItem *tiHistory;
TTabItem *tiMaterial;
TLayout *lwithmainbus;
TButton *buTest;
TButton *buHistory;
TFDConnection *FDConnection1;
TFDTable *FDTable1;
TFDTable *FDTable2;
TFMTBCDField *FDTable2Dh;
TFMTBCDField *FDTable2Hh;
TFMTBCDField *FDTable2Tau;
TFMTBCDField *FDTable2Def;
TFMTBCDField *FDTable2Temp;
TFMTBCDField *FDTable2Press;
TFMTBCDField *FDTable2P;
TFDAutoIncField *FDTable2id;
TFMTBCDField *FDTable2Res;
TDateTimeField *FDTable2DateCalc;
TWideMemoField *FDTable2Comment;
TBindSourceDB *BindSourceDB1;
TLinkGridToDataSource
*LinkGridToDataSourceBindSourceDB1;
TBindSourceDB *BindSourceDB2;
TButton *buADD;
TEdit *edAA;
TEdit *editGa;
TEdit *edMaark;
TEdit *edNnn;
TEdit *editQ;
TEdit *editSigmat;
TLabel *Label12;
131
TLabel *Label13;
TLabel *Label14;
TLabel *Label16;
TLabel *Label17;
TLabel *Label18;
TGrid *Grid2;
TButton *buDelete;
TLinkGridToDataSource
*LinkGridToDataSourceBindSourceDB2;
TChart *Chart1;
TLineSeries *Series1;
TLineSeries *Series2;
TLineSeries *Series3;
TLineSeries *Series4;
TLayout *Layout7;
TButton *Button7;
TImage *Image8;
TButton *Button8;
TImage *Image9;
TButton *Button9;
TImage *Image10;
TButton *Button10;
TImage *Image11;
TButton *Button11;
TImage *Image12;
TButton *Button12;
TMenuBar *mb;
TMenuItem *mi1;
TMenuItem *mi2;
TMenuItem *mi3;
TPanel *Panel5;
TLabel *Label19;
TPanel *Panel6;
TButton *buResultsHis;
TStyleBook *StyleBook2;
TLabel *Label20;
TLabel *Label21;
TLabel *Label22;
TLabel *Label23;
TLabel *Label24;
TLabel *Label25;
TGridPanelLayout *GridPanelLayout3;
TLayout *Layout8;
TButton *Button13;
TButton *buReport;
132
TWideStringField *FDTable2Mark;
TLayout *Layout9;
TEdit *edSearch;
TButton *buSearch;
TLabel *Label27;
TfrxDBDataset *frxDBDataset1;
TfrxReport *frxReport1;
TDateEdit *dateEd2;
TMenuItem *mi4;
TSplitter *Splitter1;
TPanel *Panel8;
TPanel *Panel9;
TButton *buCancelFilter;
TFMTBCDField *FDTable2Ccc;
TFMTBCDField *FDTable2nnn;
TFMTBCDField *FDTable2Q;
TFMTBCDField *FDTable2Ggama;
TFMTBCDField *FDTable2Siggmat;
TLayout *Layout12;
TButton *buBack;
TGridPanelLayout *gridPanMain;
TImage *Image4;
TLayout *lmataddress;
TComboBox *ComboBoxM;
TLabel *Label8;
TLabel *ress;
TGridPanelLayout *gridPanLeft;
TGridPanelLayout *gridPanTopPar;
TGroupBox *GroupBox1;
TGridPanelLayout *GridPanelLayout5;
TLabel *LabelH;
TEdit *edH;
TLabel *LabelDn;
TEdit *edDn;
TGroupBox *GroupBox5;
TGridPanelLayout *GridPanelLayout6;
TLabel *Label5;
TEdit *edDeform;
TLabel *LabelTime;
TEdit *edTime;
TGroupBox *GroupBox2;
TGridPanelLayout *GridPanelLayout7;
TLabel *LabelT;
TEdit *edT;
TLabel *Label4;
133
TEdit *edQ;
TLabel *LabelP;
TEdit *edP;
TLayout *Layout13;
TButton *buSaveRes;
TButton *Button4;
TButton *buGotoHis;
TLinkListControlToField *LinkListControlToField1;
TButton *buMatterial;
TLabel *Label33;
TGridPanelLayout *GridPanelLayout1;
TGrid *Grid3;
TLinkGridToDataSource
*LinkGridToDataSourceBindSourceDB12;
TSaveDialog *SaveDialog1;
TSaveDialog *SaveDialog2;
TButton *b1;
TButton *b2;
TButton *b3;
TTabItem *tiHelp;
TWebBrowser *WebBrowser1;
TImage *buHelp;
TSwitch *Switch1;
TLayout *Layout1;
TGridPanelLayout *GridPanelLayout2;
TWideStringField *FDTable1Name;
TFMTBCDField *FDTable1CC;
TFMTBCDField *FDTable1nn;
TFMTBCDField *FDTable1DeltaH;
TFMTBCDField *FDTable1Gamma;
TFMTBCDField *FDTable1SigmaT0;
TFDAutoIncField *FDTable1id;
TPopupMenu *PopupMenu1;
TMenuItem *MenuItem1;
TEdit *edTmin;
TEdit *edTMax;
TLinkControlToField *LinkControlToField1;
TLinkControlToField *LinkControlToField2;
TIntegerField *FDTable1tmin;
TIntegerField *FDTable1tmax;
TRectangle *frame;
TLabel *Label3;
TLabel *Label6;
TEdit *edTmin1;
TEdit *edTmax2;
134
TLabel *Label7;
TLabel *Label9;
TPopupMenu *PopupMenu2;
TMenuItem *MenuItem2;
TGroupBox *GroupBox3;
TGroupBox *GroupBox4;
TImage *buRule;
TLabel *Label1;
TLabel *Label10;
TLabel *Label11;
void __fastcall tcInitialDataClick(TObject *Sender);
void __fastcall tcResultClick(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall tcExitClick(TObject *Sender);
void __fastcall tcDiagClick(TObject *Sender);
void __fastcall buInitDataClick(TObject *Sender);
void __fastcall Button5Click(TObject *Sender);
void __fastcall buTablClick(TObject *Sender);
void __fastcall buDiagrmClick(TObject *Sender);
void __fastcall Image2Click(TObject *Sender);
void __fastcall FormCloseQuery(TObject *Sender, bool
&CanClose);
void
__fastcall
FormClose(TObject
*Sender,
TCloseAction &Action);
void __fastcall buOkClick(TObject *Sender);
void __fastcall buTestClick(TObject *Sender);
void __fastcall FormShow(TObject *Sender);
void __fastcall buHistoryClick(TObject *Sender);
void __fastcall buMatterialClick(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
void
__fastcall
FDConnection1AfterConnect(TObject
*Sender);
void __fastcall buBackClick(TObject *Sender);
void __fastcall buADDClick(TObject *Sender);
void __fastcall mi1Click(TObject *Sender);
void __fastcall mi3Click(TObject *Sender);
void __fastcall mi2Click(TObject *Sender);
void __fastcall buSaveResClick(TObject *Sender);
void
__fastcall
Grid1CellClick(TColumn
*
const
Column, const int Row);
void __fastcall buSearchClick(TObject *Sender);
void __fastcall edSearchChange(TObject *Sender);
void __fastcall buReportClick(TObject *Sender);
void __fastcall dateEd2Change(TObject *Sender);
void __fastcall buExelClick(TObject *Sender);
135
void
void
void
void
void
void
void
void
void
void
void
void
void
void
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
__fastcall
mi4Click(TObject *Sender);
buToDataClick(TObject *Sender);
buCancelFilterClick(TObject *Sender);
Button13Click(TObject *Sender);
buDeleteClick(TObject *Sender);
tcMenuChange(TObject *Sender);
buGotoHisClick(TObject *Sender);
b1Click(TObject *Sender);
b2Click(TObject *Sender);
b3Click(TObject *Sender);
buHelpClick(TObject *Sender);
Switch1Switch(TObject *Sender);
ComboBoxMClosePopup(TObject *Sender);
buRuleClick(TObject *Sender);
private:
void FormTablResult();
//
User
declarations
#define x5 501
double YGD[NP], YGs[NP], YGt[NP], YGi[NP], YEs[NP],
YEt[NP], YEz[NP], YEi[NP];
double X[x5], YGD2[x5], YGs2[x5], YGt2[x5], YGi2[x5],
YEs2[x5], YEt2[x5], YEz2[x5], YEi2[x5];
#undef x5
void DiagramParameters(double &YYmin, double &YYmax,
double &Increm);
void Draw1();
void Draw3();
void Draw4();
UnicodeString Mark;
// UnicodeString tt;
int TMin;
int TMax;
public:
double D0;
мм
double h0;
double P;
double q;
double T0;
//Начальная толщина стенки, мм
//Осевое усилие, Н
//Внутреннее давление, МПа
//Температура, град С
double DTau;
//Шаг по времени, час
//Начальный наружный диаметр трубки,
136
double EPSlim;
//Допустимая величина интенсивности
деформации ползучести
double R0;
//Начальный средний радиус трубки, мм
extern const double Tau00 = 0;
момент времени, час
extern const double EpsResource = 1;
погрешности расчета ресурса изделия
extern const double RR = 8.314;
газовая постоянная, Дж/моль*К
//
double RESOURCE;
//Начальный
//Величина
//Универсальная
// ресурс изделия
double SigmaT0;
//Предел текучести конструкционного
материала при Т=0, МПа
//Параметры математической модели скорости ползучести
double CC;
double nn;
double DeltaH;
double Gamma;
//Порядок системы дифференциальных уравнений
#define PD 8
// Массив для дифуров
#define NP 1501
//NP+1 - максимально допустимое число
узловых точек на оси времени //0..NP
#define NZ 11
//Число сохраняемых параметров в
узловой точке
double
double
double
double
Y}
Tau0;
SigmaI;
Y0[PD];
YY[NP][PD];
//{Массив [0..NP] векторов состояния
double RESOURCE;
int NStep;
double Z[NP][NZ];
double Res;
//ресурс для таблицы// User declarations
__fastcall TfmHead(TComponent* Owner);
};
//-----------------------------------------------------extern PACKAGE TfmHead *fmHead;
137
//-----------------------------------------------------inline double trunc(double v) {return (v>0? floor(v) :
ceil(v));};
#endif
ULib.cpp
#pragma hdrstop
#include "uLib.h"
//-----------------------------------------------------#pragma package(smart_init)
void RUNGE(double x0, double xk, int xPD, int NP, double*
Y0, procRUNGE F, double* Y)
{
/*{Интегpиpование системы
диффеpенциальныx уpавнений
dY/dx=F(x,Y)
Процедура
вычисляет
вектор
Y
в
конце
интервала
интегрирования [x0, x0+L]}
{Параметры процедуры
x0
- начальная точка интервала интегрирования;
xk
- конечная точка интервала интегрирования;
//L
- длина интеpвала интегpиpования;
NP
- число узловых точек на интервале
интегрирования;
Y0
- начальный вектор решения (x=0);
Y
- вектор решения в конце интервала
интегрирования (x=xk);
procF = procedure(x: extended; Y: Vector; var F:
Vector) F
- вектор производных системы (вычисление
правой части системы);
Vector = array [1..PD] of extended - вектор
состояния;
PD
- поpядок системы диф.уравнений (в данном
случае PD=7).
}
*/
double K1[PD];
double K2[PD];
double K3[PD];
double K4[PD];
double Y1[PD];
arrayCopy(Y, Y0);
138
if (xk == x0) return;
double dx = (xk-x0)/NP;
double x = x0;
for (int k=0; k<NP; ++k)
{
F(x,Y,K1);
for
(int
j=1;
j<=xPD;
Y[j]+K1[j]*dx/2;
x += dx/2;
F(x,Y1,K2);
for
(int
Y[j]+K2[j]*dx/2;
j=1;
j<=xPD;
++j)
Y1[j]
=
++j)
Y1[j]
=
F(x,Y1,K3);
for (int j=1; j<=xPD; ++j) Y1[j] = Y[j]+K3[j]*dx;
x += dx/2;
F(x,Y1,K4);
for
(int
j=1;
j<=xPD;
++j)
Y[j]+(K1[j]+2*K2[j]+2*K3[j]+K4[j])*dx/6;
}
Y[j]
=
}
//----------------------------------------------------void DICHOTOMY(double a, double b, double Eps, FOmega F,
double& X, bool& RESULT)
/*{Поиск корня X функции F =Omega-1 на отрезке [a,b].
Поиск прекращается при выполнении условия |b-a|<Eps.
При успешном поиске RESULT=True}
*/
{
RESULT = false;
double fa = F(a); //вычисление повреждения конструкции
в точке а
double fb = F(b); //вычисление повреждения конструкции
в точке b
if (SIGN(fa) == SIGN(fb)) return;
while (1) {
double c = (a+b)/2; //{Метод дихотомии}
-b*fa)/(fb -fa);
{Метод хорд}
double fc = F(c);
139
c=(a*fb
if (SIGN(fc) == SIGN(fa))
else
a=c;
b=c;
if (abs(b-a) < Eps) { //если модуль
значения точности
X=c;
//искомая точка
break;
}
}
b-a меньше
RESULT = true;
}
//-----------------------------------------------------double SigmaI_2D(double Sigma1, double Sigma2)
{
return ( sqrt( pow(Sigma1, 2) - Sigma1*Sigma2 +
pow(Sigma2, 2) ) );
}
//-----------------------------------------------------double SigmaI_3D(double Sigma1, double Sigma2, double
Sigma3)
{
return ( 0.707107* sqrt( pow(Sigma1-Sigma2, 2) +
pow(Sigma2-Sigma3, 2) +
pow(Sigma3-Sigma1, 2) ) );
}
//-----------------------------------------------------double EPSi(double EPSs, double EPSt, double EPSz)
{
return ( 0.4714* sqrt( pow(EPSs-EPSt, 2) + pow(EPStEPSz, 2) + pow(EPSz-EPSs, 2) ) );
}
//-----------------------------------------------------std::string CONVERT(double A, int LA, int Prec, int Digit)
{
/*{LA
- длина числа А (количество пробелов + количество
знакомест);
Prec - точность представления (количество знакомест);
Digit - количество цифр после запятой}
*/
std::string result;
std::stringstream ss;
ss << std::fixed << std::setprecision(Digit);
ss << A;
140
result += ss.str();
result += std::string(LA - result.length(), ' ');
return result;
}
//-----------------------------------------------------void INTERPOL_COMPACT(int N, int KP, double* Y, double*
Y1)
/*{Вычисление
промежуточных
значений
для
исходного
массива Y: array [0..N]
равноотстоящих узловых точек.
KP - количество дополнительных точек в каждом интервале
между узловыми точками.
Интерполирование кубическим полиномом Ньютона. - Положий
Г.Н., с.126, 159.
Y1: array [0..(KP+1)*N]}
*/
{
double u = 1/(KP+1);
for (int k=0; k <= KP; ++k)
{
double t = k*u;
Y1[k] =Y[0] + t*(Y[1]-Y[0]) + t*(t-1)*(Y[2]2*Y[1]+Y[0])/2
+
t*(t-1)*(t-2)*(Y[3]-3*Y[2]+3*Y[1]Y[0])/6;
}
for (int j=2; j < N; ++j)
//j - номер интервала между
(j-1)-й и j-й узловыми точками
for (int k=0; k <= KP; ++k)
{
double t = 1 + k*u;
Y1[(KP+1)*(j-1)+k] = -Y[j-2]*(t-1)*(t-2)*(t-3)/6
+Y[j-1]*t*(t-2)*(t-3)/2
-Y[j]*t*(t-1)*(t-3)/2
+Y[j+1]*t*(t-1)*(t-2)/6;
Y1[(KP+1)*(j-1)+k] = Y[j-2] + t*(Y[j-1]-Y[j-2])
+ t*(t-1)*(Y[j]-2*Y[j-1]+Y[j2])/2
+
t*(t-1)*(t-2)*(Y[j+1]-
3*Y[j]+3*Y[j-1]-Y[j-2])/6;
}
for (int k=0; k <= KP+1; ++k)
141
{
double t = k*u;
Y1[(KP+1)*N-k] = Y[N] + t*(Y[N-1]-Y[N])
+ t*(t-1)*(Y[N-2]-2*Y[N-1]+Y[N])/2
+
t*(t-1)*(t-2)*(Y[N-3]-3*Y[N2]+3*Y[N-1]-Y[N])/6;
}
}
//-----------------------------------------------------double Lagrange(double *x, double* y, double xC)
{
/*{x
- узловые точки полинома;
y
- значения полинома в узловых точках
xC
- аргумент x, для которого вычисляем значение
полинома}
*/
int N = sizeof(x);
массива x
double S = 0;
//N - число элементов
for (int k=0; k < N; ++k)
{
double A = 1;
for (int i=0; i < N; ++i) {
if (i!=k) A *= (xC-x[i])/(x[k]-x[i]);
}
S += y[k]*A;
}
return S;
}
//-----------------------------------------------------void arrayCopy(double *to, double *from)
{
for (int i = 0; i < PD; ++i) {
to[i] = from[i];
}
}
ULib.h
#ifndef uLibH
#define uLibH
#include <math.h>
#include <string>
#include <sstream>
142
#include <iomanip>
#include <stdlib.h>
#include "State.h"
//-----------------------------------------------------typedef void (*procRUNGE)(double, double*, double*);
typedef double (*FOmega)(double);
inline int SIGN(double& a) {return ( (a>0 ? 1 : (a<0 ? 1 : 0)) );}
void RUNGE(double x0, double xk, int xPD, int NP, double*
Y0, procRUNGE F, double* Y);
void DICHOTOMY(double a, double b, double Eps, FOmega F,
double& X, bool& RESULT);
double SigmaI_2D(double Sigma1, double Sigma2);
double SigmaI_3D(double Sigma1, double Sigma2, double
Sigma3);
double EPSi(double EPSs, double EPSt, double EPSz);
std::string CONVERT(double A, int LA, int Prec, int
Digit);
void INTERPOL_COMPACT(int N, int KP, double* Y, double*
Y1);
double Lagrange(double *x, double* y, double xC);
void arrayCopy(double *to, double *from);
#endif
UCalc.cpp
//-----------------------------------------------------#pragma hdrstop
#include "uCalc.h"
#include "fmuHead.h"
#include "fmuSourceData.h"
//-----------------------------------------------------#pragma package(smart_init)
void COUNT()
{
double Tau1;
double Tau2;
double DEFECT;
143
double Y1[PD];
double Y2[PD];
FORM_Y0();
Tau0 = Tau00;
SearchInterval(Tau0, DTau, Y0, Tau1, Tau2, Y1, Y2);
Tau0 = Tau1;
arrayCopy(Y0, Y1);
//Y0 = Y1;
bool RESULT;
DICHOTOMY(Tau1, Tau2 ,EpsResource, Omega, RESOURCE,
RESULT);
if (RESULT) {
//
std::string
msg("Численный
расчет
успешно
завершен.
Ресурс
конструкции
t
=
"
+
CONVERT(RESOURCE,8,6,0) + " час");
//
MessageDlg(msg.c_str(),
TMsgDlgType::mtInformation,
TMsgDlgButtons()
<<
TMsgDlgBtn::mbOK, 0);
//
fmRes->Show();
// fmRes->Label1->Text = Format("Численный расчет
успешно завершен. Ресурс конструкции
t = %n
час",
ARRAYOFCONST ((RESOURCE)));
// fmHead->ress->Text = Format("Численный расчет
успешно завершен. Ресурс конструкции
t = %n
час",
ARRAYOFCONST ((RESOURCE)));
fmHead->ress->Text
=
UnicodeString::Format("Численный расчет успешно завершен.
Ресурс конструкции
t = %n
час", ARRAYOFCONST
((RESOURCE)));
StateParameter(Tau0, RESOURCE, Y0, DEFECT, Y2);
}
}
//-----------------------------------------------------//Формирование вектора начальных условий для системы
дифференциальных уравнений
void FORM_Y0()
{
double Rin = R0-h0/2;
double SigmaS0 = q * pow(Rin, 2) / (2*R0*h0) + P/(2*
M_PI *R0*h0); //(q*SQR(Rin)+P/Pi)/(2*R0*h0);
144
double SigmaT0 = q * R0 / h0;
Y0[1] = R0;
Y0[5] = 0;
Y0[2] = h0;
Y0[6] = 0;
Y0[3] = SigmaS0;
Y0[7] = 0;
Y0[4] = SigmaT0;
}
//-----------------------------------------------------void SearchInterval(double Tau0, double DTau, double* Y0,
double& Tau1, double& Tau2, double* Y1, double* Y2)
{
//{Поиск
интервала
[Tau1,Tau2],
содержащего
корень
функции F = Omega-1}
for (int i=0; i < NP; ++i)
for (int j=0; j < NZ; ++j)
Z[i][j] = 0;
for (int j=1; j <= 7; ++j)
YY[0][j] = Y0[j];
Tau1 = Tau0;
arrayCopy(Y1, Y0);
double DEFECT = 0;
NStep = 0;
while (DEFECT < 1)
{
Tau2 = Tau1 + DTau;
StateParameter(Tau1, Tau2, Y1, DEFECT, Y2);
if (DEFECT-1 >= 0) return;
++NStep;
Tau1 = Tau2;
arrayCopy(Y1, Y2);
}
}
//-----------------------------------------------------void StateParameter(double Tau1, double Tau2, double* Y1,
double& DEFECT, double* Y2)
{
/*{Вычисление параметров состояния изделия в точке Tau2
интервала [Tau1, Tau2].
Сохранение полученных результатов в массиве Z[0..NP,
0..NZ]} */
RUNGE(Tau1, Tau2, PD, NP, Y1, RightMember, Y2);
145
SigmaI = SigmaI_2D(Y2[3],Y2[4]);
double EPSic = EPSi(Y2[5],Y2[6],Y2[7]);
DEFECT = EPSic / EPSlim;
//Сохранение результатов расчета в узловых точках
Z[NStep][0] = Tau2;
for (int j=1; j <= 4; ++j) Z[NStep][j] = Y2[j];
//Z:={Tau
r h SigmaS SigmaT
SigmaI
EPSsc EPStc
EPSzc
EPSic DEFECT}
Z[NStep][5] = SigmaI;
for (int j=6; j <= 8; ++j) Z[NStep][j] = Y2[j-1];
Z[NStep][9] = EPSic;
Z[NStep][10] = DEFECT;
}
//-----------------------------------------------------void RightMember(double Tau, double* Y, double* DY_DX)
{
//{Вычисление правой части системы дифференциальных
уравнений}
double
double
double
double
double
Sigma0 = (Y[3]+Y[4])/3;
Ds = Y[3]-Sigma0;
Dt = Y[4]-Sigma0;
Dz = -Sigma0;
//Девиаторы напряжений
SigmaI = SigmaI_2D(Y[3],Y[4]);
double A
DY_DX[1]
DY_DX[2]
DY_DX[3]
DY_DX[4]
= 1.5*Vic(Tau,SigmaI)/SigmaI;
= A*Y[1]*Dt;
DY_DX[5] = A*Ds;
= A*Y[2]*Dz;
DY_DX[6] = A*Dt;
=-A*Y[3]*Dz;
DY_DX[7] = A*Dz;
= A*Y[4]*(Dt-Dz);
}
//-----------------------------------------------------double Omega(double Tau)
{
//{Вычисление функции F = Omega-1}
double Y[PD];
RUNGE(Tau0, Tau, PD, NP, Y0, RightMember, Y);
double EPSic = EPSi(Y[5],Y[6],Y[7]);
return EPSic/EPSlim-1;
}
//-----------------------------------------------------double Vic(double Tau, double SigmaI)
146
{
double A1 = CC * pow(SigmaI/SigmaT0, nn);
double
B1
=
(DeltaH-Gamma*SigmaI/SigmaT0)
/
(RR*T(Tau));
return A1 * exp(-B1);
}
//-----------------------------------------------------double T(double Tau)
{
return T0+273;
}
//{-----------------------------------------------------------------------------}
bool Check()
//проверка введенных данных для расчета
{
if(fmHead->tcMenu->TabIndex == 0)
{
if(fmHead->FDTable1->FieldByName("id")->AsString =="1"
&&
(T0>1050
||
T0<950
||
(((q*R0)/h0)>48)||
(((q*R0)/h0)<9) ) ||
fmHead->FDTable1->FieldByName("id")->AsString =="2"
&&
(T0>1040
||
T0<815
||
(((q*R0)/h0)>81)||
(((q*R0)/h0)<7) ) ||
(EPSlim>0.05 || EPSlim<0.03 ) ||
(DTau>3000 || DTau<1000) ||
(D0<50)
)
{
ShowMessage("Не удается рассчитать при заданных
параметрах!");
fmHead->ress->Text="Расчет не был произведен";
fmHead->frame->Visible=true;
fmHead->frame->Stroke->Color=fmHead->Label3>FontColor;
fmHead->buSaveRes->Enabled=false ;
fmHead->buGotoHis->Visible=false ;
return false;
}
//else if ((R0/h0)>10) {
//ShowMessage("При
данных
параметрах
D
и
h
конструкция не является тонкостенной.");
//return false;
//
}
147
else
{
fmHead->buSaveRes->Enabled=true ;
fmHead->buGotoHis->Visible=true ;
return true;
}
}
}
//-----------------------------------------------------int _matherr (struct _exception *a)
{
if (
(a->type == DOMAIN)||
(a->type == OVERFLOW) ||
(a->type == UNDERFLOW))
{
if (
(!strcmp(a->name, "sqrt")) ||
(!strcmp(a->name, "pow"))||
(!strcmp(a->name, "exp")))
{
fmHead->frame->Visible=false;
fmHead->buSaveRes->Enabled=false;
fmHead->buGotoHis->Enabled=false;
a->retval = 1;
throw
Exception("Данные
материала
для
мат.модели не из экспериментальных данных");
// throw std::exception();
return 1 ;
}
}
return 0;
}
//-----------------------------------------------------UCalc.h
//-----------------------------------------------------#ifndef uCalcH
#define uCalcH
148
#include "uLib.h"
#include <FMX.Dialogs.hpp>
//-----------------------------------------------------void COUNT();
void FORM_Y0();
void SearchInterval(double Tau0, double
double& Tau1, double& Tau2, double* Y1,
void RightMember(double Tau, double* Y,
double Omega(double Tau);
void StateParameter(double Tau1, double
double& DEFECT, double* Y2);
double Vic(double Tau, double SigmaI);
double T(double Tau);
bool Check();
int _matherr (struct _exception *a);
DTau, double* Y0,
double* Y2);
double* DY_DX);
Tau2, double* Y1,
#endif
UDelete.cpp
//-----------------------------------------------------#include <fmx.h>
#pragma hdrstop
#include "UDel.h"
#include "fmuHead.h"
//-------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.fmx"
TfDel *fDel;
//-------------------------------------------------------------------------__fastcall TfDel::TfDel(TComponent* Owner)
: TForm(Owner)
{
}
//-----------------------------------------------------void __fastcall TfDel::Button1Click(TObject *Sender)
//удаление записи в истории расчетов
{
if (fmHead->FDTable2->IsEmpty())
{
ShowMessage("История уже пуста.");
fDel->Hide();
149
} else {
fmHead->FDTable2->Delete();
fDel->Hide();
}
}
//-----------------------------------------------------void __fastcall TfDel::Button2Click(TObject *Sender)
{
fDel->Hide();
}
//-----------------------------------------------------UDel.h
//-----------------------------------------------------#ifndef UDelH
#define UDelH
//-----------------------------------------------------#include <System.Classes.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
#include <FMX.Controls.Presentation.hpp>
#include <FMX.Objects.hpp>
#include <FMX.StdCtrls.hpp>
#include <FMX.Types.hpp>
//-----------------------------------------------------class TfDel : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
TImage *Image1;
TLabel *Label1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
public:
// User declarations
__fastcall TfDel(TComponent* Owner);
};
//-----------------------------------------------------extern PACKAGE TfDel *fDel;
//-----------------------------------------------------#endif
150
ПРИЛОЖЕНИЕ 3
МЕТОД НАПРАВЛЕННОГО СКАНИРОВАНИЯ
Метод направленного сканирования основан на использовании
равномерно
распределенных
в
последовательностей пробных точек
X нач
пространстве
Xk ,
проектирования
ведущих от начальной точки поиска
*
в окрестность точки минимума целевой функции X .
n
Рассмотрим единичный куб K в n-мерном пространстве, состоящий из
точек X с декартовыми координатами
i 1, N
x1 , x2 ,
…,
xn
0 xi 1 . Пусть X i ,
n
– произвольная последовательность точек, принадлежащих K .
Последовательность X i называют равномерно распределенной в K , если
n
для любой области
G Kn
SN G
V G ,
N
N
lim
где S N G – количество точек последовательности
Xi ,
принадлежащих
области G; V G – объем области G.
Геометрический смысл этого определения достаточно ясен: при всех
достаточно больших N количество точек
любой области
G Kn ,
X1 , X 2 ,
…,
XN ,
принадлежащих
приближенно пропорционально объему этой области:
S N G NV G .
Среди известных в настоящее время распределенных последовательностей
наилучшей
последовательности1.
равномерностью
обладают
ЛП -последовательности
так
называемые
ЛП -
обладают тем свойством, что
проекции их точек на любую координатную ось в пространстве управляемых
параметров различны и равномерно расположены. Таким образом, выбрав N
пробных точек, мы придаем каждому из управляемых параметров N различных
Соболь И.М., Статников Р.Б. Выбор оптимальных параметров в задачах со многими критериями. М.: Наука,
1981. – 110 с.
1
151
и равномерно расположенных во всем диапазоне его изменения значений, так
что количество пробных значений для каждого параметра равно количеству
испытаний системы.
Рис. П3.1 поясняет ситуацию на примере двухмерного пространства.
Рис. П3.1. Зондирование пространства проектирования с помощью
пробных точек
На
рис.
П3.1а
пробные
точки
образуют
детерминированную сетку. На рис. П3.1б показана
равномерную
ЛП -последовательность
точек, которая так же, как и равномерная последовательность, содержит по
одной пробной точке в каждом из 16 квадратов, но проекции этих точек на оси
координат различны и равномерно распределены.
Такой выбор пробных точек обеспечивает равномерное сканирование
пространства
управляемых
параметров
при
ограниченном
количестве
испытаний и, следовательно, эффективность процесса поиска оптимума.
Эффективность применения
ЛП -последовательности
для решения задач
оптимизации резко возрастает с увеличением размерности пространства
управляемых параметров.
152
Отзывы:
Авторизуйтесь, чтобы оставить отзывПроныра, озорник, Любитель книг, Ловкач, игрок, Жизнь между строк. И потому Открыт ему Незримый путь В любую суть. Танец злобного гения На страницах произведения Это игра без сомнения Обречённый ждёт поражения. Подсыпать в душу яд Всегда он рад Всего за час Прочтёт он вас. Он волен взять И поменять Строку и с ней Смысл темы всей.Танец злобного гения На страницах произведения Это игра без сомнения Обречённый ждёт поражения. Открыт роман Читатель пьян Разлив вино - Шагнул в окно. Танец злобного гения На страницах произведения Это игра без сомнения Обречённый ждёт поражения. Танец злобного гения На страницах произведения Это игра без сомнения Обречённый ждёт поражения.
Танец Злобного Гения КиШ
А теперь я скину тексты своих любимых песен для этого:)
и хорошего настроения
удачи
успехов в конкурсе
Наверное было затрачено много времени и труда на работу
Продолжай свое исследование
Админам респект
И продвижения статьи в топы?
Как на счет взаимных комментариев под работами?)
Красиво написанная работа
Так держать
Молодец
Интересная работа!