Мой опыт до сих пор…

У меня подходит к концу второй месяц программы Google Summer of Code с Юлией. Я работал над оболочкой для набора инструментов FEniCS Finite Element Toolbox, что по сути означает предоставление приятного интерфейса для использования FEniCS в Julia и исправление любых *незначительных* ошибок, которые могут появиться повсюду.

Метод конечных элементов (МКЭ) — это численный метод, который решает уравнения в частных производных путем дискретизации области (разбивая ее на мелкие части, обычно треугольники, называемые конечными элементами) и затем решая полученные уравнения (которые обычно представляют собой систему алгебраических уравнения), используя вариационное исчисление для аппроксимации требуемого решения. Это почти невозможно сделать вручную, поэтому для решения этой задачи требуется компьютерное программное обеспечение. Хотя в настоящее время существует множество наборов инструментов FEM для других языков, при этом FEniCS является преобладающим, использующим Python и C++, в Julia их не так много.

Хотя моя реализация далека от завершения, я вместе с моими наставниками, Крисом Ракаукасом и доктором Бартом Янссенсом, реализовал функциональность создания сетки как для встроенных сеток (как правило, геометрических фигур, таких как квадраты, прямоугольники и т. д.), так и для пользовательских сеток (таких как дельфин). на рис.1). Мы также использовали API-интерфейс FEniCS, позволяющий отображать различные объекты и предоставляющий доступ к некоторым их *kwargs (настраиваемым аргументам, таким как ширина линии или цвет).

Помимо этого, теперь вы также можете получить доступ к большинству функций *FEM*, таких как сборка матрицы жесткости или выполнение линейной алгебры с различными формами. В ближайшее время мы закончим реализацию различных вариационных решателей, прежде чем завершить проект, интегрируя части обёртки вместе с JuliaDiffEq.

Несмотря на достигнутый прогресс, у нас были некоторые неудачи на этом пути. У нас были проблемы с установкой/сборкой, проблемы с запуском Трэвиса и небольшие разницы в языках Python и Julia. К счастью, последние две проблемы были успешно решены.

Помимо кода, который у меня была возможность сделать, было бы стыдно не упомянуть и поблагодарить сообщество Julia в целом. Они оказывали большую поддержку на различных платформах обмена сообщениями. У них также есть кодекс поведения, поощряющий их быть вежливыми с новичками, что, на мой взгляд, является отличной идеей. Кроме того, у меня была возможность посетить офисы Julia Computing в Лондоне и пообедать с некоторыми из их сотрудников. Благодаря щедрой поддержке Juliacon и NumFocus у меня появилась возможность посетить JuliaCon. Это был фантастический опыт, так как мне удалось встретиться с некоторыми из создателей языка, а также с некоторыми из моих однокурсников, изучающих программирование летом. Доклады были очень информативными и интересными, а один из моих любимых был о серьезном переносе векторов доктора Цзяхао Чена. Видео с выступлений можно посмотреть здесь.

До сих пор это был фантастический опыт, и я надеюсь, что так будет и дальше. Я обнаружил, что Джулия — прекрасный язык для кодирования математики, и я надеюсь, что смогу использовать его в своей будущей учебе (и, надеюсь, в карьере). Вы можете следить за моим прогрессом через наш репозиторий GitHub по адресу FEniCS.jl. Или вы также можете присоединиться к сообществу Julia, загрузив Julia самостоятельно и попробовав!