В производном классе могут быть добавлены панели шагов по сравнению с базовым. Для того чтобы индикация на этих панелях была доступна в полиморфном объекте, в базовом классе определены пустые виртуальные процедуры индикации. Они вызываются, если процедура индикации базового класса не может обработать вызов с заданными параметрами индикации.
Процедуры индикации процесса решения системы: |
|
virtual IndikIterNumber(int) |
Индикация номера текущей итерации |
virtual IndikLastIterNumber(int) |
Индикация номера последней итерации |
virtual IndikRightNorma(double) |
Индикация нормы правой части |
virtual IndikInitNorma(double) |
Индикация начальной невязки |
virtual IndikCurrentNorma(double) |
Индикация текущей невязки |
virtual IndikLastNorma(double) |
Индикация предыдущей невязки |
virtual IndikDirectProgress(int) |
Индикация процесса решения СЛАУ |
virtual IndikOrder(int) |
Индикация порядка системы |
Процедуры индикации процесса шагов: |
|
virtual SetLimitStep(int Step, int Min, int Max) |
Установка индикаторов в начальное положение. [Step – номер индикатора] |
virtual IndikStepProgress(int Step, int Pos) |
Установка позиции индикаторов. [Step – номер индикатора] |
UnenableStep(int) |
Выключение индикатора процесса шагов |
EnableStep(int) |
Включение индикатора процесса шагов |
UnvisibleStep(int) |
Скрытие индикатора процесса шагов |
VisibleStep(int) |
Отображение индикатора процесса шагов |
UnenableSolv() |
Выключение текстовых индикаторов |
EnableSolv() |
Включение текстовых индикаторов |
UnvisibleSolv() |
Скрытие текстовых индикаторов |
VisibleSolv() |
Отображение текстовых индикаторов |
Процедуры индикации для перекрытия: |
|
virtual OwnSetLimitStep(int Step, int Min, int Max) |
|
virtual OwnIndikStepProgress(int Step, int Pos) |
|
virtual OwnSetLimitsForStep(int Step, int KBar, int* Min, int* Max) |
|
virtual OwnIndikForStep(int Step, int* Pos) |
|
virtual IndikSborProgress(int Pos) |
|
virtual IndikFactProgress(int Pos) |
3.3 Регистрация подзадачи.
При создании форма подзадачи регистрируется в списке подзадач главного окна приложения. В результате регистрации название подзадачи помещается в меню подзадач (пункт «Задачи» меню «Процесс»); команда с названием подзадачи запускает соответствующее окно подзадачи.
Для доступа к подзадачам из главного окна программы, они должны находиться в массиве TProcessRec* SubJobs класса TForm1.
Структура TProcessRec: |
||
Name |
AnsiString |
Название подзадачи. |
*Form |
TProcessForm |
Указатель на экземпляр класса подзадачи. |
Tag |
Int |
Порядковый номер |
*Next |
void |
Указатель на следующую подзадачу. |
Процедура регистрации подзадачи – это наследуемая функция базового класса со следующим заголовком: intTProcessForm::Register(constAnsiStringName).
Единственным параметром является название подзадачи. Возвращаемое значение равно нулю при ошибке и единице – при успешном выполнении.
Процедура регистрации должна вызываться при создании формы подзадачи. Необходимо, чтобы окно подзадачи создавалось позже главного окна приложения. В противном случае процедура регистрации выдает диагностику и возвращает нулевое значение. В случае нехватки памяти при регистрации также возвращается нулевое значение. Во всех случаях ошибка регистрации приводит к тому, что соответствующая подзадача недоступна из меню главного окна приложения, что блокирует её выполнение.
4. Подзадача статики.
Находится в модуле [UNewStaticForm.cpp]. Настройка интерфейса осуществляется методами класса TProcessForm.
В подзадаче статики реализованы пять этапов:
1. вычисление локальных матриц
2. сборка
3. факторизация
4. решение СЛАУ
5. вычисление результатов
этап 1: Вычисление локальных матриц осуществляется с помощью функцией int CalcStiffMatr().
этап 2: Сборка глобальной матрицы
этап 3: Предварительная обработка матриц коэффициентов системы уравнения с целью оптимизации процесса решения.
этап 4: Для решения СЛАУ может быть использован любой из решателей. СЛАУ: симметричная, ленточная, положительно определенная. Реализованы три решателя: на портрете, пяти диагональный, ленточный решатель с полной факторизацией.
этап 5: После решения СЛАУ предусмотрен этап вычисления дополнительных данных. Так как решается задача в перемещениях, то дополнительным этапом является вычисление напряжений и деформаций. (Если бы решалась задача в напряжениях, то вычисляли бы деформации и перемещения.)
Кроме того, предусмотрен еще один этап (предполагалось его использовать для перенумерации степеней свободы) с целью уменьшения ширины ленты. На данный момент этап является незавершенным. Перенумерация неизвестных должна ускорить процесс решения СЛАУ. Существует множество алгоритмов перенумерации узлов. Это возможно, даже когда есть только сетка КЭ, а не на этапе построения геометрической модели. Исходная конструкция может состоять из множества частей различной геометрической формы.
5. Подзадача устойчивости.
Находится в модуле [UNewStabilityForm.cpp]. Настройка интерфейса осуществляется методами класса TProcessForm.
В подзадаче статики реализованы пять этапов:
1. вычисление локальных матриц
2. сборка
3. факторизация
4. решение задачи на собственные числа и вектора
5. вычисление результатов
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.