Документация Engee
Notebook

Жесткая механическая система

Открыть пример в Engee

Вы видели, как настройки решателя могут повлиять на процесс моделирования – на его скорость и результат. В этом примере представлена модель жесткой механической системы с использованием решателя с переменным шагом. Это жесткая система включает в себя две колеблющиеся массы, каждая из которых имеет различный шаг расчёта. На рисунке ниже показана сама система.

image_2.png

Далее показаны настройки решателя.

image.png

Теперь перейдём к запуску модели и анализу результатов. Для этого нам понадобится объявить вспомогательную функцию.

In [ ]:
# Подключение вспомогательной функции запуска модели.
function run_model( name_model)
    
    Path = (@__DIR__) * "/" * name_model * ".engee"
    
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    sleep(5)
    return model_output
end

run_model("stiffMechanicalSystem") # Запуск модели.
Building...
Progress 0%
Progress 5%
Progress 10%
Progress 15%
Progress 20%
Progress 25%
Progress 30%
Progress 35%
Progress 40%
Progress 45%
Progress 50%
Progress 55%
Progress 60%
Progress 65%
Progress 71%
Progress 76%
Progress 81%
Progress 86%
Progress 91%
Progress 96%
Progress 100%
Progress 100%
Out[0]:
Dict{String, DataFrame} with 2 entries:
  "Integrator, Second-Order-1.1" => 1001×2 DataFrame…
  "Integrator, Second-Order.1"   => 1001×2 DataFrame

Построим результирующий график.

In [ ]:
Body1 = collect(Body1);
Body2 = collect(Body2);
In [ ]:
gr()
plot(Body1.value, label = "Первое тело")
plot!(Body2.value, label = "Второе тело")
Out[0]:

Вывод

Как мы видим на графике, второе тело находится в состоянии покоя, тогда как первое тело совершает колебательные движения.

Блоки, использованные в примере