logo desc

Резкое изменение параметров расчета может приводить к ухудшению сходимости и даже развалу в следствие появления слишком больших градиентов физических величин.

Например, когда на определенной стадии полета по условиям задачи включаются реактивные двигатели летающего объекта: если задать сразу номинальное давление на ГУ сопел, то получится слишком большой градиент по давлению.

Другой распространенный пример: необходимо моделировать вращение  ротора водяного насоса или гребного винта судна. Если расчет начать сразу с исследуемой частоты вращения, то в случае несжимаемой жидкости произойдет удар вращающегося ротора о покоющуюся жидкость с образованием бесконечных градиентов давления и, скорее всего, развал.

neh,byf U"C

Резкое изменение не только физических величин может приводить к негативным последствиям: резкая адаптация на несколько уровней, резкое изменение шага по времени также можгут приводить к плохой сходимости или развалу.

Чтобы избежать негативных эффектов при изменении переменных, их можно плавно изменять с помощью уравнения в редакторе формул.

Простейший случай - изменение по линейному закону.

Как правило нам известно, с какой величины переменной F мы хотим начать ( F1 ) и к какой величине хотим придти ( F2 ). Также нам известно за какое время ( dt ) необходимо произвести изменение переменной и начиная с какого момента ( t1 ).

В этом случае удобно воспользоваться уравнением прямой по известным двум точкам:

plot1 equ1

Я подготовил себе удобный шаблон для редактора формул, чтобы можно было быстро задать плавное изменение величины по линейному закону:

 

//Здесь определяю переменную, которая будет зависеть от времени, в данном случае от номера шага
t=StepNumber;


//Здесь необходимо задать с какого значения по какое будет меняться результат этой формулы
F1=1000;
F2=11768400;

//t1 - это момент времени, с которого начнется изменение выходной переменной F
t1=625;


//Чаще всего мне удобно задать не t2, а интервал времени,
//в течение которого будет меняться переменная F.
//А t2 пусть посчитается автоматически
dt=50;

// Ниже я задаю t1 и t2.
t2=t1+dt;

//Ниже вычисляется переменная F. Если t<t1, то F=F1, если t>t2 , то F=F2,
//а между t1 и t2 происходит изменение F по линейному закону.

{

(t<t1): F1;

(t>t2): F2;

( (t>=t1) AND (t<=t2) ): (t-t1)/(t2-t1)*(F2-F1)+F1;

}

 

Аналогичным образом нетрудно составить выражения для квадратичного закона.