Порядок работы с программой на С++ под Linux
Установка необходимого программного обеспечения
Для работы требуются:
- компилятор С++ с поддержкой стандарта С++17
- gnuplot
- make
Под Ubuntu установить требуемые пакеты можно командой:
sudo apt install g++ gnuplot-x11 make
Компиляция программы
- Перейти в каталог
nle_cpp/src
- Запустить команду
make
В результате в текущем каталоге будет создан исполняемый файл nle
. Можно его запустить - он выполнит короткий расчёт без сохранения результатов.
Параметры программы
Список параметров программы можно получить, запустив её с ключом -h
. Пример:
$ ./nle -h
Usage: ./nle [options]
Options:
-nx <size> - set horizontal array size (default: 100)
-ny <size> - set vertical array size (default: 100)
-nxy <size> - set both horizontal and vertical array sizes
-nsize <size> - set size of 'N' particle side (default: 4)
-nt <count> - set total number of simulation steps (default: 100)
-nts <count> - set number of steps between saving array to file (0 - do not save, default: 0)
-ntp <count> - set number of steps between output (0 - no output during count, default: nt/10)
-sqr[4/8] - set square geometry (default: enabled(4))
-hex - set hexagonal geometry (default: disabled)
-check - check rule implementations (default: disable)
-ipn <fraction> - set initial fraction of cells in state 'N' (default: 0.5, priority: high)
-ipl <fraction> - set initial fraction of cells in state 'L' (default: 0.5, priority: medium)
-ipe <fraction> - set initial fraction of cells in state 'E' (default: 0, priority: low)
-en <value> - set value of parameter 'en' (default: 2)
-el <value> - set value of parameter 'el' (default: 1)
-enl <value> - set value of parameter 'enl' (default: 1.5)
-kt <value> - set value of parameter 'kT' (default: 0.5)
-mu <value> - set value of parameter 'mu' (default: -2.25)
-evap <value> - set evaporation probability: 'L' -> 'E' (default: 0)
-cond <value> - set condensation probability: 'E' -> 'L' (default: 0)
-ec <value> - set evaporation and condensation probability
-g <value> - set probability of group movement (default: 0)
-ofp <string> - set output file prefix (default: 'data')
-ofs <string> - set output file suffix (default: '.dat')
-load <filename> - load data from file
-it <value> - set initial step value (default: 0)
-sg - save array with group marks (default: disabled)
-gfp <string> - set output file prefix for groups (default: 'group')
-gfs <string> - set output file suffix for groups (default: '.dat')
-mgslog <filename> - log maximum group size to file (default: none)
-gstlog <filename> - log group statistics to file (default: none)
-gstmin <size> - set minimum number of nonocrystals in a group for statistics (default: 1)
-long - set long output format (default: enabled)
-short - set short output format (default: disabled)
-h - show this help
Запуск одного расчёта
Для упрощения запуска расчётов и рисования картинок с результатами подготовлен набор скриптов, которые находятся в каталоге nle_cpp/scripts/run_single
. Для выполнения расчёта рекомендуется создать новый рабочий каталог в каталоге nle_cpp/scripts
путём копирования каталога run_single
. Например:
- Перейти в каталог
nle_cpp/scripts
. - Создать новый рабочий каталог:
cp -r run_single run_single_test01
- Перейти в новый рабочий каталог:
cd run_single_test01
- Продолжать работу в новом рабочем каталоге.
Параметры расчёта задаются в текстовом файле parameters.sh
. Обратите внимание на параметр name
, задающий название расчёта. После запуска расчёта в рабочем каталоге будет создан подкаталог с данным именем, в который будут помещены все результаты расчёта.
Запуск нового расчёта
Скрипт run.sh
запускает расчёт с параметрами, заданными в файле parameters.sh
. По окончанию расчёта будет создан подкаталог с именем, заданным параметром name
. Например, если в файле parameters.sh
было задано export name="run01"
, то в результате запуска будет создан подкаталог run01
, в котором будут находиться:
- Подкаталог
dat
, содержащий сохранённые состояния моделируемой поверхности на заданных шагах расчёта - файлы видаdata########.dat
, где########
- номер итерации. Эти файлы можно использовать для отрисовки поверхности (преобразования в картинку) или для продолжения расчёта с заданного состояния. - Подкаталог
png
, содержащий картинки с состоянием моделируемой поверхности на заданных шагах расчёта - файлы видаdata########.dat.png
, где########
- номер итерации. - Файл
run01.gif
- анимационный файл, кадры которого аналогичны картинкам в подкаталогеpng
. - Файл
run01.txt
- текстовая информация, выводимая на консоль в процессе работы программы. - Файл
parameters.sh
- копия файлаparameters.sh
из рабочего каталога. Копия сохраняется для того, чтобы можно было позже восстановить значения параметров, с которыми был произведён запуск.
Если подкаталог с именем, заданным параметром name
, уже существует, то будет выдано соответствующее предупреждение. Это сделано для того, чтобы случайно не затереть результаты прошлых расчётов.
Продолжение расчёта
Скрипт load_run.sh
позволяет продолжить расчёт с параметрами, заданными в файле parameters.sh
, из заданного состояния (пространственного распределения элементов поля). Начальное состояние поля задаётся в файле, который ранее был сохранён программой в ходе другого расчёта. Этот файл должен находиться в рабочем каталоге. Важно, чтобы размеры (nx
,ny
) и геометрия поля (cell
,nsize
) из файла состояния и файла parameters.sh
совпадали. Пример запуска продолжения расчёта из состояния поля в файле data.dat
:
$ ./load_run.sh data.dat
При продолжении расчёта существует возможность нумеровать итерации не с нуля, а с некоторого начального номера. Этот начальный номер задаётся вторым параметром скрипта запуска. Например:
$ ./load_run.sh data.dat 100
При этом значение параметра nt
в файле parameters.sh
всё также задаёт число итераций, которое необходимо выполнить в ходе продолжения расчёта. Например, если при продолжении расчёта был указан номер начальной итерации 100
, а значение параметра nt
равно 200
, то значение последней итерации расчёта будет 300
.
Пример последовательности действий, демонстрирующий возможности продолжения расчёта.
- Задать в файле
parameters.sh
значения параметров:name="run01"
, "nt=1000". - Запустить расчёт:
./run.sh
- Скопировать файл с состоянием поля в рабочий каталог:
cp run01/dat/data00001000.dat .
- Изменить в файле
parameters.sh
значение параметраname="run02"
, а также, возможно, каких-то других параметров (но только неnx
,ny
,cell
илиnsize
!). - Запустить продолжение расчёта:
./load_run.sh data00001000.dat 1000
Отрисовка результатов без запуска расчёта
Скрипт make_pics.sh
позволяет для проведенного ранее расчёта заново сформировать картинки, используя параметры из файла parameters.sh
. В результате работы этого скрипта в подкаталоге, заданном параметром name
, считываются файлы dat/data########.dat
и создаются файлы png/data########.dat.png
и *.gif
. При этом старые файлы с картинками затираются. Данная возможность может быть необходима, если требуется изменить какие-либо параметры отрисовки без повторения расчёта.
При отрисовке есть возможность задать номер начальной итерации в параметре запуска скрипта. Например:
./make_pics.sh 1000