Цель -- упростить разработку программ для широкого класса разностных схем посредством поэтапного конструирования разностной схемы из имеющихся блоков.
С точки зрения реализации конечноразностного алгоритма, намного удобнее поручить программе вывод формул разностной схемы, чем выводить все формулы вручную, после чего вводить в свой код готовые коэффициенты разностных уравнений.
Итак, идея солвера -- поэтапное конструирование алгоритмов на последовательности уровней абстракции.
В ходе разработки планируется охватить широкий класс уравнений (линейных и нелинейных, стационарных и нестационарных, в одномерных и многомерных областях и на разных сетках), придерживаясь следующих принципов:
-
усложнение программы по мере необходимости;
-
реализация следующих уровней абстракции не должна усложнять предшествующие уровни.
Рассуждая философски, когда ты пишешь "код" на Markdown, ты одновременно пишешь и текст. Данная идея хорошо подходит и для вычислительных программ. В этой предметной области тестирование провести сложно, следовательно, важным аспектом аргументации корректности программы является максимальная ясность кода.
Здесь вы можете задать вопросы по программе.
Решение (одномерных) краевых задач для систем ОДУ 2-го порядка следующего вида:
с условиями сопряжения
либо
Здесь:
-
$N$ -- число уравнений; -
$M$ -- число подобластей; -
$(x_{j-1}, x_j)$ --$j$ -я подобласть,$x_j = x_{j-1} + L_j$ ,$x_M = L = \sum\limits_{j=1}^M L_j$ .
Относительно коэффициентов предполагается:
-
$a_{ij} > 0$ , -
$b_{i0}, b_{iM} \geq 0$ или$\infty$ , -
$G_{ij} \geq 0$ или$\infty$ .
Прямоугольная область разбита на прямоугольные подобласти при разбиении x- и y-промежутков:
Уравнения:
Граничные условия Дирихле, Неймана или Робина. Условия сопряжения типа идеального контакта либо неидеального контакта.
Необходимо подключить библиотеку MTL4.