Comsol 3.2 Femlab
Программа для решения серьёзных физических задач.
"Что это за глава?"
Эта глава методического руководства описывает общие принципы задания параметров решающего устройства
7. Решающее устройство
Выбор решающего устройства и его параметров очень важен, так как в основном от него зависит достоверность вычислений. Неправильная настройка может привести к грубым ошибкам решения, которые очень трудно выявить. Так же очень важно правильно оптимизировать решение, так как, к примеру, даже не очень сложная трехмерная модель элемента кассетной конструкции рассчитывается десятки минут на компьютере с процессором Athlon 64 3000+ и 1 Gb оперативной памяти, а некоторые нелинейные нестационарные модели могут рассчитываться многие часы даже на очень мощном компьютере.
Кнопка Solve или пункт меню Solve > Solve problem запускает решающее устройство с текущими настройками. Кнопка Restart или пункт меню Solve > Restart перезапускает решающее устройство используя текущие значения (поле температур или скоростей) как начальные. Если мы рассматриваем стационарную задачу, то нажатие этой кнопки не должно менять решение. Колебания значений в этом случае говорят о нестабильности решения. Эту команду целесообразно применять для сложных расчетов, когда можно получить приближенный вариант решения на грубой сетке и для линейного или стационарного решателя, а потом сделав более мелкую сетку и при необходимости изменив решатель на нелинейный или переходный пересчитать задачу. Зачастую это позволяет получить решение быстрее, чем сразу производя сложный расчет.
Для изменения параметров нажмем F 11 Solve > Solver parameters … или соответствующую кнопку. Откроется окно:
Если стоит галочка Auto select solver , значит программа в зависимости от прикладного режима подобрала наиболее подходящее устройство, для несложных вычислений чаще всего менять его не надо.
Выбирая решающее устройство, надо в первую очередь определиться стационарный или переходный процесс мы изучаем. Если процесс нестационарный, то в подавляющем большинстве случаев подходит решатель Time Dependent . Для очень редких задач, связанных с нахождением собственных чисел дифференциальных уравнений, например волнового уравнения теплопроводности, надо выбирать решатель Eigenvalue .
Если проблема стационарна, то надо определить линейна она или нелинейна. Если есть сомнения в линейности системы, то рекомендуется сразу устанавливать нелинейный решатель: если для линейной модели установить нелинейный решатель, то ответ будет корректен, но на вычисления затратится больше времени; а если для нелинейной задачи установить линейный решатель, то наверняка будут грубые ошибки.
=> Внимание. Если в заданных коэффициентах присутствуют переменные (например, теплоемкость или теплопроводность) для которых мы задали зависимость от температуры или от других переменных, то задача нелинейная. Все задачи в которых учитывается теплообмен излучением, то есть где С или Ctrans (константа Стефана-Больцмана) не равна нулю – нелинейные. Модели, которые задают в прикладном режиме Incompressible Navier-Stokes практически всегда нелинейные.
Для линейных и нелинейных стационарных задач можно выбрать параметрический решатель, в котором надо указать параметры, для которых задаётся несколько значений. Например, задать ряд разных теплопроводностей или мощностей для какого-либо объекта, а потом сравнить распределение температур при всех значениях параметра.
После выбора решателя в поле Solver , задаем основные свойства.
Для Time Dependent на вкладке General это Time stepping [шаги по времени] в поле Times в формате 0:10: 60 задаются временные слои. Здесь, от 0 до 60 секунд с промежутком 10 секунд. Единица измерения времени секунда, она устанавливается в Physics > Subdomain Settings в поле Time scaling coefficient . Если вместо 1 задать 1/60 , то единица измерения времени будет равна 1 минуте. Поля tolerance определяют ошибку на каждом шаге итерации. Галочка Allow complex number позволяет применять в расчетах комплексные числа это нужно в случаях, если мы задали коэффициенты PDE в комплексном виде. Вкладка Time Stepping определяет шаги по времени . Пункт Times to store in output определяет какие временные шаги будут выводится для постобработки вычислений. По умолчанию стоит Specified Times , то есть времена определённые на вкладке General . Для того чтобы получить значения всех шагов решающего устройства надо выбрать Time steps from solver . Вообще, решающее устройство выбирает шаги произвольно, в зависимости от динамики системы, то есть игнорирует заданные значения Times на вкладке General . Чтобы решающее устройство учитывало этот список (например, если внешние воздействия импульсные и решатель может «проскочить мимо них») надо установить Time steps taken by solver в значение Strict или Intermediate вместо стоящего по умолчанию Free . Если надо принудительно задать равномерный шаг по времени, то это делается в поле Manual Tuning of step size . Для Eigenvalue необходимо задать количество собственных чисел уравнения в поле Desired number of eigenvalues и около каких значений искать собственные числа в поле Search for eigenvalues around .
Для параметрических решателей надо установить имя параметра, который будет изменяться в поле Name of parameter и значения которые он будет принимать в поле List of parameter values. Значения можно перечислить через пробел, задать в виде 0:10: 100 или задать как функцию linspace(1,100,25) , то есть двадцать пять значений равномерно расположенных от 1 до 100.
Для нелинейных решателей появляется вкладка Nonlinear где можно указать количество итераций, (по умолчанию стоит 25 ). Для сильно нелинейных проблем рекомендуется поставить галочку Highly nonlinear problem и увеличить количество итераций.
Для всех режимов кроме Time Dependent можно установить галочку Adaptive Mesh Refinement , тогда в процессе решения сетка будет уточнена по сложному алгоритму. Если физика и геометрия достаточно сложна, и не очень ясно как задавать параметры сетки, рекомендуется установить эту галочку. Но это увеличит время вычисления.
Кроме того, можно установить Matrix symmetry в значение Symmetric если наша матрица симметрична. Чаще всего это бывает, если мы рассматриваем процессы чистой кондукции или диффузии. При выборе соответствующего линейного решателя это ускорит расчет. Матрицы заведомо несимметричны в мультифизических моделях, моделях связанных с конвекцией или уравнением Навье-Стокса.
Большая часть времени расчета занята решением систем линейных уравнений, отвечает за их решение Linear system solver . По умолчанию стоит Direсt ( UMFPACK ) этот решатель отнимает много ресурсов компьютера и для моделей требующих длительного расчета можно подобрать более подходящий. Если предыдущий решатель не работает, можно попробовать Direct (SPOOLES ) он требует меньше памяти, но работает нестабильно. В крайнем случае выбирается итеративный решатель GMRES . Для положительно определенных систем с симметричными матрицами
[Способ определения положительно определенных систем с симметричными матрицами [symmetric, positive-definite systems] и методы настройки итеративных решателей подробно описаны в справке программы . ] в выбирается Direct Cholesky (TAUCS) или итеративный Conjugate Gradients . Итеративные решатели потребляют меньше памяти, но надо следить за тем, что они сходятся и в случае необходимости увеличивать количество итераций.
Уравнения чистой кондукции и чистой диффузии в стандартных режимах являются в стационарном состоянии эллиптическими, а в нестационарном параболическими. Для них очень эффективно использовать решатель Geometric multigrid .
После задания свойств нажимаем кнопку Solve или команду Solve > Solve Problem . Часто после получения решения, модель и её параметры (физические свойства и граничные условия) немного изменяются. И если эти изменения не очень велики, то можно использовать команду Solve > Update model , тогда задача пересчитываться не будет, а новые значения будут получены методом интерполяции. Так же можно нажать кнопку Restart , тогда задача пересчитается, но за начальные Init значения будут заданы те, которые были получены на прошлом этапе. Это может немного ускорить вычисления. Так же с помощью этой команды можно выявить нестабильность решения: если нажимая эту кнопку без изменения параметров модели мы получаем разные решения (осцилляции численного решения), то это говорит о нестабильности. В этом случае нужно уменьшить сетку или, если эта задача связана с конвекцией, применить Диффузионную стабилизацию в настройках физических свойств модели.
|