Почта
Чат
Диск
     

Модель климата CESM

Модель CESM состоит из нескольких отдельных моделей, которые отвечают за моделирование процессов в атмосфере (CAM), океане (POP), суше (CLM), льде в океане (CICE) и на суше (G-CISM), как видно из рисунка.

ВНИМАНИЕ! Компиляцию исходного кода модели и всех вспомогательных библиотек необходимо осуществлять с помощью одного и того же компилятора. Для ОС Linux моделью поддерживаются пять компиляторов: gfortran, pgf95, lf95, ifort, pathf95. Далее будут рассмотрены примеры с использованием компилятора gfortran.

Регистрация нового пользователя модели

Согласно требованию разработчиков модели все пользователи должны зарегистрироваться на сайте: http://www.cesm.ucar.edu/models/cesm1.0/register/register_cesm1.0.cgi. Для этого заполните анкету:

Last Name: ваша_фамилия
First Name: ваше_имя
E-Mail: почтовый@ящик
Institution: RSHU
City: Saint-Petersburg
Country: Russia
Purpose: Education
Have you used previous versions of CCSM/CESM?: No
Agree to Terms: Yes (ознакомиться с условиями использования модели)

В завершение нажмите на кнопку "Submit". Через некоторое время на указанный вами e-mail придет подверждение регистрации, логин и пароль для скачивания исходного кода модели CESM.

Установка дополнительных пакетов

Устанавите дополнительные пакеты командой

sudo apt-get install g++ gfortran make libnetcdf-dev openmpi-bin libopenmpi-dev subversion csh
Проверьте наличие в системе программы gmake командой
which gmake
Если такой программы нет, то определить полный путь к программе make
which make
В ответ появится путь к программе вида:
/usr/bin/make

В каталоге /usr/bin/ создайте ссылку gmake на файл make командой
sudo ln -s /usr/bin/make /usr/bin/gmake

Подготовка рабочей среды

Создайте каталог, который предназначен для установки численных моделей атмосферы

mkdir ~/models/
Создайте каталог models/cesm/, в котором будут распологаться подкаталоги модели CESM
mkdir ~/models/cesm/
Создайте каталог для скомпилированных библиотек и скриптов необходимых для запуска модели (далее EXEROOT)
mkdir ~/models/cesm/exeroot/
Создайте каталог, в который будут записаны результаты численного моделирования (далее RUNDIR)
mkdir ~/models/cesm/exeroot/run
Создайте каталог для хранения начальных данных (далее DIN_LOC_ROOT). Каталог может быть "общим" и располагаться вне домашнего каталога пользователя. Если в каталоге нет необходимых данных, то модель загружает эти данные в этот каталог с сервера на этапе сборки
mkdir ~/models/cesm/data/

Скачивание исходных кодов

Перейдите в каталог, в который будет установлена модель CESM

cd ~/models/cesm/
Загрузите с официального сайта исходный код модели с помощью команды
svn co https://svn-ccsm-release.cgd.ucar.edu/model_versions/cesm1_2_0 cesm1_2_0
В ответ на появившееся приглашение укажите текущий пароль пользователя локального компьютера и нажмите клавишу Enter, затем имя пользователя (guestuser) и пароль (friendly). Через несколько секунд начнется процесс загрузки исходного кода модели. По завершении загрузки в текущем каталоге появится подкаталог ./cesm1_2_0/, в котором содержится исходный код модели CESM1.2.
Создайте переменную окружения CCSMROOT, указывающую на каталог установки модели
export CCSMROOT=~/models/cesm/cesm1_2_0

Подготовка к численному эксперименту

Перейдите в каталог со скриптами модели

cd $CCSMROOT/scripts
Вызовите скрипт создания каталога, содержащего файлы настроек нового численного эксперимента
./create_newcase -case ~/models/cesm/experiment01 -res f45_g37 -compset X -mach userdefined
Здесь

  • ~/models/cesm/experiment01 — каталог, в которой будут записаны файлы настроек численного эксперимента,
  • experiment01 — название численного эксперимента,
  • f45_g37 — название одной из пространственных сеток,
  • X — название одного из набора модулей модели,
  • userdefined - указываем, что будет использован локальный компьютер, а не один из известных суперкомпьютеров, для которых уже созданы все настройки.

Перейдите в каталог эксперимента
cd ~/models/cesm/experiment01
Попытайтесь запустить модель CESM командой
./cesm_setup
Первый запуск выдаст нам список переменных которые необходимо установить для продолжения работы
ERROR: must set xml variable OS to generate Macros file
ERROR: must set xml variable MAX_TASKS_PER_NODE to build the model
ERROR: must set xml variable MPILIB to build the model
ERROR: must set xml variable RUNDIR to build the model
ERROR: must set xml variable DIN_LOC_ROOT to build the model
ERROR: must set xml variable COMPILER to build the model
ERROR: must set xml variable EXEROOT to build the model
Correct above and issue cesm_setup again
Портирование под вашу систему в первую очередь заключается в настройках переменных в трех файлах: env_build.xml, env_case.xml и env_run.xml в каталоге численного эксперимента. Их можно редактировать с помощью текстового редактора pluma, но лучше использовать для этого специальную утилиту:
./xmlchange -h
Для нашего примера
./xmlchange OS=Linux
./xmlchange EXEROOT=/home/$USER/models/cesm/exeroot
./xmlchange RUNDIR=/home/$USER/models/cesm/exeroot/run
./xmlchange MPILIB=openmpi
./xmlchange COMPILER=gnu
./xmlchange MAX_TASKS_PER_NODE=1
./xmlchange DIN_LOC_ROOT=/home/$USER/models/cesm/data
./xmlchange OS=Linux,EXEROOT=/home/$USER/models/cesm/exeroot,RUNDIR=/home/$USER/models/cesm/exeroot/run,MPILIB=openmpi,COMPILER=gnu,MAX_TASKS_PER_NODE=1,DIN_LOC_ROOT=/home/$USER/models/cesm/data
Затем повторно выполните команду
./cesm_setup
Если выполнение команды не удалось, то попытайтесь перенастроить переменные. Результат выполнения команд можно посмотреть с помощью команды
ls -l
В случае успешного запуска в каталоге созданы несколько новых скриптов и файлов настроек.

Конфигурация для сборки

Дальше для запуска требуется ручная правка в текстовом редакторе некоторых файлов настройки. Окрываем в текстовом редакторе файл:
pluma ./experiment01.run
Находим строку:
#mpirun -np ${maxtasks} \$EXEROOT/cesm.exe >&! cesm.log.\$LID
Расскомментируем ее (удалив начальный символ решетки):
mpirun -np ${maxtasks} \$EXEROOT/cesm.exe >&! cesm.log.\$LID
Данной опцией мы подключили запуск MPI. Хотя заявлено что на одном компьютере модель может работать без этого сервиса — успешно запустить пока не удавалось. Кроме того файл ./firstcase.run копируется скриптом ./cesm_setup из файла ./Tools/mkbatch.userdefined, и до его запуска можно было проделать подобные манипуляции с исходным файлом.
Просматриваем содержимое установленного пакета libnetcdf-dev командой
apt-file list libnetcdf-dev
и получаем следующий результат
libnetcdf-dev: /usr/include/libcf.h 
libnetcdf-dev: /usr/include/ncvalues.h 
libnetcdf-dev: /usr/include/netcdf.h 
libnetcdf-dev: /usr/include/netcdf.hh 
libnetcdf-dev: /usr/include/netcdf.inc 
libnetcdf-dev: /usr/include/netcdf.mod 
libnetcdf-dev: /usr/include/netcdfcpp.h 
libnetcdf-dev: /usr/include/typesizes.mod 
libnetcdf-dev: /usr/lib/libcf.a 
libnetcdf-dev: /usr/lib/libcf.so 
libnetcdf-dev: /usr/lib/libnetcdf.a 
libnetcdf-dev: /usr/lib/libnetcdf.so 
libnetcdf-dev: /usr/lib/libnetcdf_c++.a 
libnetcdf-dev: /usr/lib/libnetcdf_c++.so 
libnetcdf-dev: /usr/lib/libnetcdff.a 
libnetcdf-dev: /usr/lib/libnetcdff.so 
libnetcdf-dev: /usr/lib/pkgconfig/netcdf.pc 
libnetcdf-dev: /usr/share/doc/libnetcdf-dev/README 
libnetcdf-dev: /usr/share/doc/libnetcdf-dev/changelog.Debian.gz 
libnetcdf-dev: /usr/share/doc/libnetcdf-dev/copyright 
libnetcdf-dev: /usr/share/man/man3/netcdf.3.gz 
libnetcdf-dev: /usr/share/man/man3/netcdf_f77.3.gz 
libnetcdf-dev: /usr/share/man/man3/netcdf_f90.3f90.gz
Запоминаем, что каталог include с файлами-заголовками пакета libnetcdf-dev лежит в каталоге /usr/include, а библиотеки пакета лежат в каталоге /usr/lib и их имена соответствуют шаблону libnetcdf*so. Эта информация понадобится нам при правке файла Macros. Окрываем в текстовом редакторе файл:
pluma ./Macros
Файл содержит список строковых переменных. Задать им значения можно как напрямую, так и определить через другие переменные (переменные среды, либо переменные файла Macros), либо задать как результат выполнения скрипта. В данном случае я не буду плодить новые переменные, но покажу как можно использовать скрипт.
Находим строку:
SLIBS+=# USERDEFINED $(shell $(NETCDF_PATH)/bin/nc-config —flibs)
Заменяем
SLIBS+= $(shell find /usr/lib/ -name libnetcdf*so)
Этим мы заставили скрипт найти файлы библиотек netCDF и дописать их имена к значению переменной SLIBS. Находим строку:
NETCDF_PATH:= USERDEFINED_MUST_EDIT_THIS
Заменяем на путь к каталогу include с файлами заголовками
NETCDF_PATH:= /usr
Находим строку:
FFLAGS:= -O -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none
Дописываем новый флаг, который нужен для компилятора gfortran. На некоторых машинах может быть необязателен:
FFLAGS:= -O -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none -fno-range-check
Сборка
./experiment01.build
Начнется процесс сборки. В процессе скрипт попытается скачать недостающие данные через svn в каталог ~/models/cesm/data. Если все произойдет успешно, то на консоле появится строка:
CESM BUILDEXE SCRIPT HAS FINISHED SUCCESSFULLY

Если будут проблемы, то появятся сообщения об ошибках. В этом случае можно вернуть все на исходную позицию командой
./experiment01.clean_build
И попытаться исправить ошибки в настройках.
В результате, в каталоге ~/models/cesm/exeroot/ видим кроме созданного нами каталога ~/models/cesm/exeroot/run еще список каталогов и архивов с логами, созданных на этапе сборки
ls -l ~/models/cesm/exeroot/
В каталог ~/models/cesm/data из сети закачались недостающие данные для запуска модели
ls -l ~/models/cesm/data

Запуск численного эксперимента

./experiment01.run
В случае успешного запуска увидим:
(seq_mct_drv): =============== SUCCESSFUL TERMINATION OF CPL7-CCSM ===============

В каталоге run появится netCDF-файл с результатами работы модели
ls -l ~/models/cesm/exeroot/run/*.nc
Кроме того полезно посмотреть логи, появляющиеся в случае успешного выполнения модели
ls -l ~/models/cesm/firstcase/logs/*log*gz

Полезная информация

Официальный сайт модели CESM 1.2
Регистрация пользователей модели CESM
Руководство пользователя модели CESM
Описание модели CAM 5.3 (eng)
Liu X. et al. (2013) Improving Ice Nucleation Parameterization for Mixed-Phase Clouds in CAM5

Разделы, описывающие процесс настройки и запуск модели CESM, подготовлены Вахниным А.В.