Компиляция и настройка MITgcm, океан в компьютере. Часть 2, подготовка к запуску
?так, благодаря первой части нашего рассказа, вы продрались сквозь тернии настроек модели, все правильно сделали при компиляции и в итоге получили файл с экзешником модели — mitgcmuv. Скомпилировать модель только пол дела, теперь нужно заставить ее работать.
Для этого переходим в папку input. В этой папке находятся файлы для дальнейшей настройки модели и файлы с внешними данными, необходимыми для ее работы. Не знаю, чем руководствовались разработчики, когда называли файлы кастомизации модели и пакетов data, видимо были для этого какие-то исторические причины, но название жутко неудачное. Никаких данных в файлах data не содержится, а содержится в них куча параметров, которые вы можете менять без перекомпиляции модели. Если вы хотите посмотреть, что будет если поменять ускорение свободного падения или сменить уравнение состояния морской воды, то сделать это можно поменяв значения параметров в файлах data.
Есть самый главный файл общих настроек модели и называется он просто data. Файлы, которые меняют параметры связанные с пакетами называются data.name, где name — название пакета. Параметры, которые вы можете изменять перечислены в файле .…/MITgcm/model/inc/PARAMS.h для основного файла data, и в файлах …./MITgcm/pkg/name/NAME_PARAMS.h для data.name файлов пакета, где name — название пакета. Очень удобно, я знаю 🙂 Давайте взглянем поближе на файл data.
Он состоит из блоков, начинающихся с
и заканчивающихся знаком &. Полезно помнить, что в некоторых системах может потребоваться замена & на слеш. Следующий параграф при первом прочтении можно смело пропустить, там рассказывается как искать дополнительные параметры для изменения.
Если вы отыскали в файле PARAMS какой-то параметр, который хотите поменять, то вам нужно точно знать, в каком блоке этот параметр должен находиться, при изменении его в файле data. Тут вы должны сделать еще один финт ушами и пойти в файл …./MITgcm/model/src/ini_parms.F в случае если интересующий вас параметр должен быть в файле data, либо в …./MITgcm/pkg/name/name_readparms.F (все уже надеюсь помнят что такое name) если собираетесь менять параметры для пакета (файлы типа data.name). В этом файле нужно найти к какому списку имен принадлежит интересующий вас параметр. Выглядеть это будет примерно так:
& cg2dMaxIters, cg2dChkResFreq, cg2dTargetResidual,
& cg2dTargetResWunit, cg2dpcOffDFac, cg2dPreCondFreq,
& cg3dMaxIters, cg3dChkResFreq, cg3dTargetResidual,
& useSRCGSolver
Здесь PARM02 — название блока, в котором должен быть ваш параметр при изменении его в файле data (или data.name для пакета). То есть вы должны посмотреть название параметра в одном файле, куда его поместить во втором, а собственно изменить уже в третьем. На первых порах дико, но потом привыкаешь :).
Рассмотрим некоторые из параметров файла data.
sRef = 15*35.,
Референсная температура и соленость. Необходимость их задавать связана с особенностью формулировки модели. Они задаются на каждом уровне, в нашем случае их 15. Строчка 15*20 означает, что мы просто вставили 15 двадцаток подряд. В случае солености тоже особо не парились и задали линейный профиль из 15 одинаковых значений солености. Если вдруг вы не зададите нормальных начальных условий по температуре и солености (см. ниже), то tRef и sRef будут вашими начальными значениями, естественно одинаковыми в каждой точке модели.
Комментарий от Сергея Семина: Здесь не плохо бы было вставить напоминание о том, что обязательно надо следить за тем, какие значения принимают параметры по умолчанию. Например, если не задать, как Вы их называете, референсные температуру и соленость, то они будут не нулевыми, а 20 oC и 30 psu соответственно. Я несколько раз натыкался на проблемы, связанные с этим.
Количество шагов по времени.
Размер шага по времени в секундах для уравнения движения. Вообще большинство параметров задающих временные интервалы выражается в секундах, так что привыкайте к огромным числам.
Размер шага по времени в секундах для уравнения переноса трассера.
Модельные «часы», которые, в частности определяют размер шага по времени для nTimeSteps. Если вы умножите deltaTClock на nTimeSteps, то получите длительность интеграции модели в секундах. В нашем случае она составляет 1728000 секунд, или 20 дней. Обычно deltaTClock делают равной deltaTtracer.
В нашем примере шаг по времени уравнения движения и уравнения переноса трассера разный. Это сделано для того, чтобы модель считала быстрее. Обычно же шаг по времени обоих уравнений делают равным и задают параметром deltaT. В этом случае не задают и deltaTClock, который по умолчанию приравнивается deltaT.
Периодичность так называемых чекпоинтов. С данной периодичностью модель будет полностью сохранять свое состояние в файлах начинающихся со слова pickup. При помощи этих файлов можно будет, при желании, продолжить расчет модели. Это необходимо в массе случаев, например при сбое железа. Не будете же вы из-за, скажем, скачка напряжения тратить еще один месяц (вполне реалистичное время расчета некоторых конфигураций модели) на то чтобы все пересчитать.
Если сохранять каждый чих произведенный моделью, то есть записывать на диск результаты расчета за каждый временной шаг, то никакого диска может не хватить. Плюс операции записи на диск обычно медленны, что для серьезных конфигураций оборачивается большими потерями времени. Поэтому сохраняют обычно данные с большими промежутками времени. Но в этом случае вы получаете, так называемый snapshot, то есть снимок состояния модели в определенное время, никак не среднее состояние. Здесь мы сохраняем состояние модели в 24:00 через каждые 10 дней.
А вот уже при помощи этого параметра вы можете сохранять среднее состояние модели за определенный промежуток времени. Здесь мы сохраняем среднее состояние модели за 10 дней. Чтобы эта возможность работала, необходимо включать пакет timeave (что мы уже сделали при компиляции).
Окончание раздела &PARM03 посвящено настройке временных интервалов внешнего атмосферного форсинга, и релаксации поверхностных температуры и солености (о как сказанул, объяснение более человеческим языком ниже). К сожалению модель у нас получится не слишком совершенной, поэтому периодическое возвращение к климатологическим параметрам на поверхности (и только на поверхности) ей будет необходимо.
Раздел &PARM04 посвящен настройке вашей сетки. Тут выбирается тип сетки (в нашем случае usingSphericalPolarGrid ) и задается толщина вертикальных слоев (переменная delR). Повторюсь, delR это не глубины, это толщины слоев, то есть в нашем случае максимальная глубина модели не 690 метров, как вы могли бы подумать, а 5200 м — сумма толщин всех слоев. Параметры ygOrigin, dySpacing и dxSpacing задают соответственно положение южной широты, шаг по широте и долготе в градусах. Как видите полярным областям в нашем сетапе ничего не светит — южная граница установлена на -80 широту, по широте у нас 40 линий каждая по 4 градуса, то есть покроем мы только 160 градусов от -80 до 80 градусов с.ш.
Последний раздел файла data — &PARM05, посвящен различным файлам, которые будут использоваться для инициализации модели и ее форсинга. Если файл находится не в той же директории где вы будете запускать модель, прописывайте полный путь до него.
Файл с батиметрией. Представляет из себя двоичный файл с матрицей такого же размера как и ваша сетка (в нашем случае 90×40). Посмотреть на него можно таким матлабовским кодом:
bb = fread(fid1, [90, 40], 'real*4');
bb(bb==0)=NaN
pcolor (bb'); figure(gcf)
Заметьте, что порядок байтов в бинарных файлах примеров — big-endian, если вдруг решите прорыть где-нибудь канал или взгромоздить гору, то сохраняйте тоже в big-endian, например так:
fwrite(fid,bb,'real*4')
fclose(fid);
Следующие два файла:
hydrogSaltFile= 'lev_s.bin',
содержат в себе начальные поля температуры и солености, с которых модель будет стартовать. Это такие же бинарные файлы как и bathymetry.bin только в каждом из них по 15 полей по одному для каждого уровня. Посмотреть на поля можно при помощи такого матлабовского кода:
bb = zeros(90,40,15);
for i=1:15
bb(:,:,i) = fread(fid1, [90, 40], 'real*4');
end
bb(bb==0)=NaN;
pcolor (bb(:,:,1)'); figure(gcf)
fclose(fid1)
вот, к примеру, температура в поверхностном слое:
Дальше идут файлы внешнего форсинга модели:
meridWindFile= 'trenberth_tauy.bin',
surfQFile= 'ncep_qnet.bin',
EmPmRFile= 'ncep_emp.bin',
поля ветра, потока тепла и пресной воды. Все эти файлы содержат по 12 полей, по одному на каждый месяц, и прочесть их можно тем же кодом, что и файлы начальных условий, уменьшив, конечно, количество итераций в цикле до 12, вместо 15. Вот, например, результирующий поток тепла в ?юле, когда в Южном полушарии зима и океан в основном отдает тепло в атмосферу:
Если вернуться немножко назад по нашему файлу data, и посмотреть в раздел &PARM03, то вы увидите такие строчки:
externForcingPeriod=2592000.,
externForcingCycle=31104000.,
Они означают, что форсить нашу модель мы будем повторяющимися данными (у нас ведь всего по 12 полей в каждом файле), каждое поле будет работать один месяц (externForcingPeriod) и повторяться цикл будет через год(externForcingCycle). То есть внешнее воздействие атмосферы не будет изменяться по несколько раз в день, как в «больших» экспериментах, а будет одинаковым на протяжении одного месяца, потом сменится на следующее, а через год цикл повторится.
В данном примере атмосферный форсинг уже проинтерполирован на модельную сетку. Однако в MITgcm имеется приятная возможность использовать форсинг на оригинальной сетке (например файлы NCEP реанализа), модель проинтерполирует их сама.
Последние файлы в нашем списке, содержат данные для релаксации поверхностной температуры и солености:
saltClimFile= 'lev_sss.bin',
В разделе &PARM03 задано что релаксация поверхностной температуры будет проводиться раз в два месяца (tauThetaClimRelax= 5184000.,), а солености раз в шесть (tauSaltClimRelax = 15552000.,)
В следующей части мы наконец-то заставим нашу модель работать, теперь уже честное пионерское 🙂
Like!! Really appreciate you sharing this blog post.Really thank you! Keep writing.
Precose Cialis Cheapest Plavix Online Cialis Cialis Caida Cabello
Cialis Extra Super Cialis Tretinoin Without Prescription Uk Cialis Is Cephalexin A Form Of Amoxicillin
Viagra Pfizer Acheter cialis buy online usa Levitra Generico Su Internet Cialis Buy Cheap Accutane Online No Prescription
I like my hobby Home Movies.
I try to learn Norwegian in my spare time. http://aaa-rehab.com
Buy Retin A Uk Cialis Pharmacies Priligy Cialis Cialis Viagra Risques
Amazing! Its genuinely awesome article, I have got much clear idea on the topic of from this article.|