Ночь. Сидит программист за компом, дописывает последние строчки новой программы.
Но тут неожиданно звонок в дверь. Программист за дверь - а там смерть с косой, но маленькая.
- Блин не вовремя ты дай допишу программу, а там и забирай меня...
- Не переживай мужик, я не за тобой. Я за твоим винтом!
FreeFem++
FreeFem++ является интегрированным программным обеспечением и языком программирования высокого уровня (схожим с C++) для численного решения уравнений в частных производных с различными типами граничных условий методом конечных элементом.
С точки зрения программирования, FreeFem++ является типизированным языком (обязательное указание типов переменных); с поддержкой полиморфизма (одна и та же функция может работать с разными типами данных), исключений (программная реализация возможных ошибок времени исполнения); код легко использовать в других программах.
С точки зрения приложений, FreeFem++ позволяет решать множество двух или трехмерных задач физики, инженерных расчетов, математики, экономики и многих других областей науки описываемых одним или несколькими уравнениями в частных производных. Эффективность моделирования повышается за счет возможности автоматической адаптации сетки в ходе выполнения программы. Гибкость языка позволяет моделировать также связанные системы, такие как, взаимодействие жидкость-поверхность, упругие деформации-теплопроводность, взаимовлияние океана и атмосферы, влияние электромагнетизма на процесс отливки металлов и многие другие. При решении этих задач можно использовать для каждой системы различные конечно-элементные аппроксимации и расчетные сетки.
- Начало работы. Информация о том, где взять FreeFem++, как его установить, как написать код и как запустить.
- Базовые типы данных. Описание базовых типов данных FreeFem++: целое и вещественное число, логические переменные, комплексное число, строка и операции со строками.
- Управляющие конструкции. Условные операторы (if и if/else). Арифметическое условие (тернарный оператор). Управляемый счетчиком цикл (for). Цикл с предусловием (while). Управление выполнением кода внутри цикла (break и continue). Неявный цикл. Обработка исключительных ситуаций (try/catch).
- Квадратная и прямоугольная расчетная сетка. Создание квадратной и прямоугольной расчетной сетки заданного размера и плотности с помощью команды square. Методы построения равномерной и неравномерно расчетной сетки. Виды триангуляции, поддерживаемые командой square.
- Построение геометрии объекта. Построение геометрии исследуемого объекта. Использование типа данных border для создания границы. Правила построения геометрии из нескольких границ. Проверка корректности построения замкнутых областей.