Ваш шестилетний вопрос все еще довольно распространен среди всех новичков в области вычислительной гидродинамики (CFD) («Насколько это может быть сложно?»).Тем не менее, на этом этапе нужно быть осторожным, чтобы не тривиализировать математику, стоящую за решением данной системы уравнений.
Для новичков (или заинтересованных) в CFD -
Прежде чем начать думать окодирование, важно понимать природу уравнений, которые вы пытаетесь решить.Эллиптическая задача (например, решатель Пуассона для потенциального потока) сильно отличается от гиперболической системы (например, уравнения Эйлера), в которой информация «распространяется» через числовую область в виде различных волновых мод.Какой мой первый пункт,
1.Знать свойства системы и изучать уравнения - Для этого шага вам нужно будет пройти учебники по математике по уравнениям в частных производных и уметь классифицировать различные уравнения.(См. Дифференциальные уравнения в частных производных для ученых и инженеров , автор Farlow, или пересмотрите курсы бакалавриата по математике.)
2.Изучение линейной алгебры - У лучших из известных мне экспертов по CFD есть сильные основы линейной алгебры.
Переход к конкретному случаю для гиперболических задач, например, уравнений Эйлера
3,Читайте о пространственной и временной дискретизации - Этот момент менее понятен людям, плохо знакомым с CFD.Поскольку информация распространяется в определенном направлении и скорости в гиперболических задачах, вы не можете дискретизировать ваши уравнения произвольно.Для этого вам необходимо понять концепцию задач Римана, т.е. с учетом прерывистой связи между двумя состояниями в данный момент времени, как развивается система?В современных методах конечных объемов используются пространственные дискретизации, которые воспроизводят то, как информация распространяется через ваше моделирование в пространстве и времени.Это называется против ветра .Прочитайте книгу Toro о решателях Римана для хорошего знакомства с раскруткой.
4.Понимать концепцию стабильности - Не все методы дискретизации и интеграция по времени приведут к стабильному решению.Понять понятие ограничивающего временного шага ( CFL-условие ).Если вы не будете следовать законам раскручивания, будет сложно найти стабильное решение.
В этот момент у вас будет более четкое представление о том, что входит в код CFD, и вы можете начать беспокоиться о том, какой язык использовать для кодирования.Наиболее широко используемые коды CFD написаны на C или Fortran для скорости вычислений и распараллеливания.Однако, если вы намереваетесь писать только для обучения, вы можете использовать Matlab или Python, с которыми вам будет меньше работать.Я должен также упомянуть, что кодирование двумерного решателя Эйлера - типичная домашняя задача для новых аспирантов в области аэрокосмической техники, поэтому постарайтесь быть скромными и открытыми для обучения, если вам это удастся.
Для всех, кто интересуется CFD, знайте, что это сложная и удивительная сфера с множеством достижений.Если вы хотите добиться успеха, читайте статьи (особенно основы) и не сдавайтесь, если не можете понять тему.Продолжайте усердно работать, и вы обнаружите, что раздвигаете границы возможностей CFD.