wasserstrahl's Journal
[Most Recent Entries]
[Calendar View]
[Friends]
Below are the 4 most recent journal entries recorded in
wasserstrahl's LiveJournal:
Sunday, November 15th, 2015 | 11:07 pm |
CP2K: erratum Пара уточнений по предыдущим постам.
1. Во-первых, более тщательный анализ показал, что центрирование молекулы в ячейке необходимо только в частном случае вэйвлетного решателя уравнения Пуассона, в общем случае это необязательно, плотность на границе ячейки может быть ненулевой (получаются псевдо-периодические краевые условия --- короче, оно работает и без соотв. инструкции, давая на выходе ту же электронную энергию, что и после центрирования). Убирать из примера не стал, но добавил уточнение в пост. 2. Провтыкал, что HTML воспринял инструкцию ¢ как управляющую даже несмотря на тэг PRE, исправил. 3. Оказалось, что я закрыл в жжшном посте с разбором полетов комментирование. Это случайность, я забыл его открыть после очередного исправления, это связано с нюансами экспорта с тифаретника на жж. Уже открыто.
И да, есть ли у вас пожелания по выбору веселых молекул для следующих серий? VX? метамфетамин? TNT?) | 12:30 am |
CP2K: анализ результатов оптимизации LSD В продолжение к http://lj.rossia.org/users/wasserstrahl/453314.html Итак, что мы получили на выходе (файлы из моего расчета приведены по ссылке https://mega.nz/#F!oQJ00bjY!wAFcNt6f5eCJIKFJczFFDg )? 1. "Протокол" расчета (output-файл) opt_LSD.out, содержащий информацию о ходе и результатах расчета. 2. Файл opt_LSD-pos-1.xyz, содержащий траекторию изменения геометрии молекулы в процессе оптимизации. 3. Несколько файлов *.restart --- это файлы "сохранения", позволяющие в случае прерывания выполнения программы перезапустить расчет не с начала, а с одного из последних достигнутых этапов. 4. Соответствующие им файлы *.wfn --- это волновые функции, полученные в результате решения ССП, которые также могут быть прочитаны, проанализированы и использованы. 5. Файл opt_LSD-BFGS.Hessian, содержащий приближение гессиана, полученное в ходе оптимизации геометрии с помощью алгоритма Бройдена-Флетчера-Гольдфарба-Шанно (BFGS), используемого в CP2K по умолчанию. Output-файл.Начинается преамбулой с указанием ряда технической информации, включая версию программы, флаги компиляции, некоторые параметры расчета, включая исходную геометрию, выбранный метод и т.д. Далее начинается процедура оптимизации геометрии: *******************************************************************************
*** STARTING GEOMETRY OPTIMIZATION ***
*** BFGS ***
*******************************************************************************
Последующая часть output'а состоит из набора однообразных фрагментов, каждый из которых соответствует очередному шагу поиска равновесной геометрии. Техническая информация: --------------------------
OPTIMIZATION STEP: 2
--------------------------
DISTRIBUTION OF THE NEIGHBOR LISTS
Total number of particle pairs: 1194
Total number of matrix elements: 7413
Average number of particle pairs: 1194
Maximum number of particle pairs: 1194
Average number of matrix element: 7413
Maximum number of matrix elements: 7413
Number of electrons: 126
Number of occupied orbitals: 63
Number of molecular orbitals: 63
Number of orbital functions: 121
Number of independent orbital functions: 121
Parameters for the always stable predictor-corrector (ASPC) method:
ASPC order: 0
B(1) = 2.000000
B(2) = -1.000000
Extrapolation method: ASPC
Итеративное решение ССП и его результаты: SCF WAVEFUNCTION OPTIMIZATION
----------------------------------- OT ---------------------------------------
Minimizer : CG : conjugate gradient
Preconditioner : FULL_SINGLE_INVERSE : inversion of
H + eS - 2*(Sc)(c^T*H*c+const)(Sc)^T
Precond_solver : DEFAULT
Line search : 2PNT : 2 energies, one gradient
stepsize : 0.08000000 energy_gap : 0.08000000
eps_taylor : 0.10000E-15 max_taylor : 4
----------------------------------- OT ---------------------------------------
Step Update method Time Convergence Total energy Change
------------------------------------------------------------------------------
1 OT CG 0.80E-01 0.6 0.00499787 -132.9638373426 -1.33E+02
2 OT LS 0.25E+00 0.0 -132.9766523882
3 OT CG 0.25E+00 0.2 0.00248243 -132.9877867426 -2.39E-02
4 OT LS 0.27E+00 0.2 -132.9941400844
5 OT CG 0.27E+00 0.2 0.00111336 -132.9941768872 -6.39E-03
6 OT LS 0.25E+00 0.7 -132.9953375248
7 OT CG 0.25E+00 0.2 0.00057071 -132.9953490620 -1.17E-03
8 OT LS 0.26E+00 0.1 -132.9956695813
9 OT CG 0.26E+00 0.2 0.00029537 -132.9956701023 -3.21E-04
10 OT LS 0.22E+00 0.2 -132.9957389738
11 OT CG 0.22E+00 0.2 0.00013662 -132.9957418191 -7.17E-05
12 OT LS 0.23E+00 0.2 -132.9957580814
13 OT CG 0.23E+00 0.2 0.00006623 -132.9957581399 -1.63E-05
14 OT LS 0.24E+00 0.1 -132.9957620855
15 OT CG 0.24E+00 0.2 0.00003683 -132.9957620888 -3.95E-06
16 OT LS 0.31E+00 0.2 -132.9957635908
17 OT CG 0.31E+00 0.2 0.00002360 -132.9957636744 -1.59E-06
18 OT LS 0.31E+00 0.1 -132.9957643309
19 OT CG 0.31E+00 0.2 0.00001652 -132.9957643309 -6.57E-07
20 OT LS 0.28E+00 0.2 -132.9957646181
21 OT CG 0.28E+00 0.2 0.00001146 -132.9957646215 -2.91E-07
22 OT LS 0.29E+00 0.2 -132.9957647646
23 OT CG 0.29E+00 0.3 0.00000792 -132.9957647647 -1.43E-07
*** SCF run converged in 23 steps ***
Core-core repulsion energy [eV]: 27310.25943600658138
Core Hamiltonian energy [eV]: -5778.36888981168067
Two-electron integral energy [eV]: -50301.77870500837162
Electronic energy [eV]: -30929.25824231586739
Total energy [eV]: -3618.99880630928556
Atomic reference energy [eV]: 3619.16398738078260
Heat of formation [kcal/mol]: 3.80916630197567
outer SCF iter = 1 RMS gradient = 0.79E-05 energy = -132.9957647647
outer SCF loop converged in 1 iterations or 23 steps
Далее следует анализ распределения зарядов по Малликену (сами посмотрите), после него --- суммарная информация по шагу и сравнение результатов с допусками. Этап расчета градиента при таких настройках вывода не озвучивается. ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -132.995764830868666
-------- Informations at step = 2 ------------
Optimization Method = BFGS
Total Energy = -132.9957648309
Real energy change = -0.0030547509
Predicted change in energy = -0.0061894953
Scaling factor = 0.0000000000
Step size = 0.1108009430
Trust radius = 0.4724315332
Decrease in energy = YES
Used time = 5.079
Convergence check :
Max. step size = 0.1108009430
Conv. limit for step size = 0.0030000000
Convergence in step size = NO
RMS step size = 0.0230440603
Conv. limit for RMS step = 0.0015000000
Convergence in RMS step = NO
Max. gradient = 0.0102268176
Conv. limit for gradients = 0.0004500000
Conv. for gradients = NO
RMS gradient = 0.0033158036
Conv. limit for RMS grad. = 0.0003000000
Conv. for gradients = NO
---------------------------------------------------
Поскольку критерии сходимости не достигнуты, начинается следующий шаг. После достижения критериев выполняется еще один процесс решения ССП в равновесной точке, выводит финальную электронную энергию: ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -132.999805724373459
После чего выводит статистическую информацию, подборку ссылок на статьи по методам, использованным в расчете (важно и удобно!) и завершается. Траектория изменения геометрии.Файл opt_LSD-pos-1.xyz состоит из набора XYZ-файлов (слепленных в один), каждый из которых описывает геометрию на соответсвующем шаге оптимизации. Этот файл можно просмотреть в текстовом редакторе (и, например, скопировать из него последнюю --- равновесную --- геометрию), а также можно открыть в Avogadro и анимировать движение к равновесию: для этого нужно выполнить avogadro opt_LSD-pos-1.xyz, после чего выбрать Меню --- Расширения --- Анимация и в появившемся окошке открыть тот же файл еще раз. После чего можно автоматически (работает не везде) или вручную ползунком анимировать изменение геометрии в процессе оптимизации. Можно также сохранить это как видео, только нужно установить на систему пакеты povray и mencoder. Пример видео приведен в каталоге с файлами расчета. | Saturday, November 14th, 2015 | 3:15 pm |
CP2K: первый пример. Полуэмпирическая оптимизация молекулы LSD Итак, начнем разбирать примеры с простого и приятного -- полуэмпирики. Почему именно с архаичного и забытого многими метода? Прежде всего потому, что для запуска рабочего примера нам понадобится настроить минимальное количество опций, т.к. многие из них определяются методом. Соответственно, меньше теории перед тем, как запустить реальное вычисление и посмотреть на его работу. Все файлы я выкладываю на облачное хранилище MEGA, они будут доступны по ссылкам в постах. Если удобнее куда-то в другое место --- напишите. В частности, файлы для данного расчета лежат здесь: https://mega.nz/#F!oQJ00bjY!wAFcNt6f5eCJIKFJczFFDgДля работы CP2K в минимальном варианте нужен только один файл, содержащий управляющие опции для работы программы. Этот файл также должен содержать исходную геометрию исследуемой системы --- координаты атомов. В принципе, координаты атомов могут быть размещены в дополнительном внешнем файле, но не будем пока что усложнять конструкцию. Конфигурационный файл CP2K состоит из секций (вкладываемых друг в друга) и параметров. Начало секции объявляется амперсандром & с названием секции, завершение -- амперсандом со словом end и необязательным названием секции, например: &global
&end global Или: &global
&end Несмотря на то, что название секции после &end необязательно, его лучше указывать, чтобы не запутаться. Параметры указываются как имя и значение (для некоторых параметров необязательное), разделенные пробелами. &global print_level medium &end global Восклицательный знак используется для объявления комментариев (все содержимое от восклицательного знака до конца строки игнорируется). Регистр букв не имеет значения --- по традиции почему-то обычно пишут прописными, но я лично предпочитаю строчные. Набор возможных настроек обширный, но настраивать, разумеется, нужно не все. Большинство параметров имеют относительно разумные значения по умолчанию. Таким образом, мы изменяем параметры там, где: --- Мы непосредственно хотим поменять поведение программы; --- Где значения по умолчанию нас не устраивают; --- Где значения по умолчанию не совместимы с другими настройками расчета, которые нам нужны (к сожалению, CP2K не умеет менять одни параметры в зависимости от значений других). Обычно для учебных расчетов пользователи CP2K почему-то предпочитают кластеры воды, но оставим это уныние и попробуем оптимизировать что-то повеселее --- например, молекулу LSD-25. Для получения начальных координат молекулы воспользуемся свободной программой-редактором Avogadro, которую можно скачать с официального сайта или установить из репозитория. В Avogadro нужно нарисовать молекулу по структурной формуле, после чего оптимизировать ее геометрию молекулярной механикой (Меню -- Расширения -- Оптимизировать геометрические параметры, повторять пока молекула не перестанет изменяться), результат сохранить в файл в формате XYZ (*.xyz) (в каталоге с файлами расчета результат сохранен как LSD_mm.xyz). Ниже привожу комментированный файл конфигурации (input-файл). Звездочки означают пояснения после текста файла. ( Конфиг и пояснения ) | 12:13 am |
CP2K: квантовая химия "для кающихся грешников"(с) Разгребаюсь потихоньку с CP2K. Совершенно примечательная программа для квантовохимических расчетов. Свободная и бесплатная, от перечня возможностей начинается бурное слюноотделение, но уровень документирования... просто катастрофически ужасен. Есть reference manual с кратким описанием параметров, есть набор собственных тестов, несколько туториалов и упражнений по отдельным вопросам, плюс гугл-группа (весьма живая). Влазить в этот трэш без предварительного опыта с какой-нибудь более вменяемой программой настоятельно не рекомендуется. Ну а я попробую изобразить небольшую серию постов с примерами и объяснениями, по мотивам и итогам, может кому поможет. Итак, для начала о том, как поставить это себе на комп. В Debian и особо мною любимом LMDE делается, как и полагается, линейно через apt-get install cp2k (cp2k есть в стандартном репозитории Debian). Однако, если нужна более свежая версия (в том числе экспериментальная), а также если хочется использовать CUDA (да, cp2k это умеет), то нужно ставиться из исходников. В системе нужно поставить следующие пакеты: subversion gfortran gcc make libopenblas-dev libfftw3-dev libint-dev libxc-dev g++ (названия указаны для пакетной базы Debian, все присутствуют в репозитории. UPD 16.01.2016: добавил g++). Для CUDA нужен также nvidia-cuda-toolkit. На самом деле часть этих пакетов опциональна, кроме того, можно использовать еще некоторые дополнительные библиотеки, которых нет в репозитории --- я перечислил все, что можно выжать из обычного репозитория Debian. Отдельное замечание о libopenblas-dev: при установке этот пакет через механизм update-alternatives изменяет конфигурацию системы таким образом, чтобы функции динамически подключаемой библиотеки BLAS на системе выполняла именно OpenBLAS. Если вы устанавливали OpenBLAS ранее или пользуетесь другими библиотеками --- трахайтесь с компиляцией самивнимательно настройте параметры под себя. Инструкции по получению исходников приведены на оф.сайте: http://www.cp2k.org/download Для получения текущей экспериментальной версии нужно выполнить команду svn checkout http://svn.code.sf.net/p/cp2k/code/trunk cp2kНастройка параметров компиляции производится с помощью файлов в подкаталоге cp2k/cp2k/arch полученного дерева исходников. Название файла в этом каталоге соответствует представляемой им "платформе" --- важнейшим параметрам системы: ОС, компилятор, набор инструкций процессора, а также способ параллелизации. CP2K поддерживает параллельность через MPI и через OpenMP, а также через комбинацию двух этих вариантов. По опыту работы на однопроцессорных многоядерных системах --- OpenMP в CP2K работает быстрее и [естественно] жрет меньше памяти, чем MPI. Потому править будем файл Linux-x86-64-gfortran.ssmp. Мой конфиг, удачно прошедший компиляцию, выглядит так: Без CUDA: CC = gcc CPP = FC = gfortran LD = gfortran AR = ar -r OPENBLAS_INC = /usr/include/openblas OPENBLAS_LIB = /usr/lib GCC_DIR= FFTW_INC = /usr/include FFTW_LIB = /usr/lib/x86_64-linux-gnu LIBINT_INC = /usr/include/libint LIBINT_LIB = /usr/lib DFLAGS = -D__FFTW3 -D__LIBINT\ -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4 #-D__PW_CUDA CPPFLAGS = FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\ -fopenmp -ftree-vectorize -funroll-loops\ -mtune=native\ -I$(OPENBLAS_INC) -I$(FFTW_INC) -I$(LIBINT_INC) LDFLAGS = $(FCFLAGS) -static-libgfortran LIBS = $(OPENBLAS_LIB)/libopenblas.a\ $(FFTW_LIB)/libfftw3.a\ $(FFTW_LIB)/libfftw3_threads.a\ $(LIBINT_LIB)/libderiv.a\ $(LIBINT_LIB)/libint.a
С CUDA: CC = gcc CPP = FC = gfortran LD = gfortran AR = ar -r OPENBLAS_INC = /usr/include/openblas OPENBLAS_LIB = /usr/lib GCC_DIR= FFTW_INC = /usr/include FFTW_LIB = /usr/lib/x86_64-linux-gnu LIBINT_INC = /usr/include/libint LIBINT_LIB = /usr/lib DFLAGS = -D__FFTW3 -D__LIBINT\ -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4 CPPFLAGS = FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\ -fopenmp -ftree-vectorize -funroll-loops\ -mtune=native\ -I$(OPENBLAS_INC) -I$(FFTW_INC) -I$(LIBINT_INC) LDFLAGS = $(FCFLAGS) -static-libgfortran LIBS = $(OPENBLAS_LIB)/libopenblas.a\ $(FFTW_LIB)/libfftw3.a\ $(FFTW_LIB)/libfftw3_threads.a\ $(LIBINT_LIB)/libderiv.a\ $(LIBINT_LIB)/libint.a
NVCC = /usr/bin/nvcc DFLAGS += -D__ACC -D__DBCSR_ACC -D__PW_CUDA NVFLAGS = $(DFLAGS) --gpu-architecture=compute_30 CUDAPATH = /usr/lib/x86_64-linux-gnu LIBS += -L$(CUDAPATH) -lcudart -lcublas -lcufft -lrt
Особо обращаю внимание, что $NVFLAGS обязательно должны содержать $(DFLAGS) --- инструкции по сборке этого не упоминают, но без этого компиляция не удастся. Поместив нужный файл в подкаталог cp2k/cp2k/arch, переходим в подкаталог cp2k/cp2k/makefiles и выполняем make ARCH=Linux-x86-64-gfortran VERSION=ssmpЕсли используете версию с CUDA, я бы рекомендовал отдельно собрать версию без CUDA, и держать рядом на всякий случай. Например, на карте с 1 Гб видеопамяти CP2K периодически ругается на невозможность выделить видеопамять и вылетает, приходится запускать без GPU. Названия версий стандартные, но принципиально не ограничены --- скажем, для конфигурации без CUDA можно создать конфигурационный файл Linux-x86-64-gfortran.ssmpnc (nc всмысле no-CUDA) или как-то так. Результат компиляции будет в подкаталоге cp2k/cp2k/exe, там будет ряд файлов, реально нужен только cp2k.ssmp (ну и cp2k.ssmpnc), который можно копировать куда угодно и использовать. Отдельное замечание об очистке каталога при неудачной сборке. Авторы наделали много разных опций для очистки, до конца там не совсем понятно, что следует использовать в каких случаях, я использую make clean ; make veryclean ; make realclean ; make distclean --- упорото, но вроде работает. |
|