loom

Форк
0
/
start-LorenzSystem~1.sbl 
45 строк · 2.1 Кб
1
// Инкапсуляция файла с моделью в тип LorenzSystem
2
encaps "diff/LorenzSystem.diff" type LorenzSystem;
3

4
// Инициализация объекта модели
5
LorenzSystem ls = {
6
    sigma : 10.0,
7
    b     : 8.0/3,
8
    R     : 28.0,
9
    x : 10.0,
10
    y : 1.0,
11
    z : 1.0,
12
};
13

14
// Модуль построения графиков
15
module "Chart" chart("Аттрактор Лоренца");
16

17
// Отложенное выполнение. График гарантировано построится перед выходом из зоны видимости
18
finally chart.show();
19

20
// Хороший стиль инициализации внешнего модуля, как неизменяемого (immutable)
21
// (хотя в данном случае модуль scene изменяет своё состояние)
22
module "Scene" scene({
23
    // Лямбда с замыканием в качестве callback-функции
24
    callback : func [chart,ls] ()
25
    {
26
        chart.addPoint("Проекция x-y", ls.x, ls.y);
27
        chart.addPoint("Проекция x-z", ls.x, ls.z);
28
    },
29
    callback_interval : 100,
30
    // Инициализация начальных данных моделирования
31
    t  : 0.0,
32
    tk : 50.0,
33
    dt : 0.01,
34
    // Наполнение массива объектов сцены.
35
    actors : [ls],
36
});
37

38
// Запуск модуля в параллельном режиме. Запуск через run не гарантирует, что модуль будет
39
// запущен в том же потоке или на том же компьютере. Callback-функция будет вызываться на
40
// этой стороне. При этом будет производиться синхронизация состояния объекта ls.
41
run scene;
42

43
// Завершение исполнения данного файла будет ожидать завершения исполнения модуля scene.
44
// В этом случае эскейп-анализатор не вынесет объект ls из стека данного модуля.
45
join scene;
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.