В производном классе могут быть добавлены панели шагов по сравнению с базовым. Для того чтобы индикация на этих панелях была доступна в полиморфном объекте, в базовом классе определены пустые виртуальные процедуры индикации. Они вызываются, если процедура индикации базового класса не может обработать вызов с заданными параметрами индикации.
| Процедуры индикации процесса решения системы: | |
| 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).
Ссылка на скачивание - внизу страницы.