[Guide] Gadget/VASP/numpy

вопросы строения молекул и квантовой химии
Ответить
Аватара пользователя
Гесс
Сообщения: 13055
Зарегистрирован: Ср фев 15, 2012 11:19 pm

[Guide] Gadget/VASP/numpy

Сообщение Гесс » Чт фев 22, 2018 1:51 am

Раз в каждые несколько лет я пишу тут всякие гайды посвященные тому что сам недавно узнал. Обычно довольно бесполезные, однако могу себе позволить :D

Тема сегодня - оптимизация в VASP с констрейнутыми внутренними координатами.
Проблема состоит в том что VASP оптимизирует в декартовых (или фракционных но это спасает мало) координатах и заморозить можно только каждую координату каждого атома (чего кстати нельзя сделать например в гауссиане - нельзя позволить атому двигаться вдоль оси Х при фиксированных значениях Z и Y кроме вариантов с ну очень жуткими z-matrix, это впрочем оффтоп). А вот "оптимизировать систему удерживая расстояния А-Б равным 1.8 ангстрема, при условии что оба атома могут двигаться относительно остальных" - нельзя.
Точнее нельзя внутренними средствами VASP.
В 2005 году к VASP придумали дополнительный интерфейс,
Bučko T.; Hafner J.; Ángyán J. G. Geometry Optimization of Periodic Systems Using Internal Coordinates. J. Chem. Phys. 2005, 122, 124508.10.1063/1.1864932.
который назвали Gadget. У меня нашелся Gadget.0.96.tgz и есть ощущение что проект больше никогда не развивали.
запросы к установке у программы довольно скромные
install python.2.X
install numpy (numerical library)
сразу покажу и пример скрипта который может их комбинировать на сервере:

Код: Выделить всё

#!/bin/bash -l
#
#PBS -l nodes=4:ppn=40,walltime=24:00:00
#
#PBS -N Legion
#PBS -o pbs-$PBS_JOBID.log -j oe
#PBS -M 
#PBS -m n
# first non-empty non-comment line ends PBS options

module load intel64

######################
#### VASP version ####-----------------------------------------------
######################

#vasp itself:
VASP=/adres/vasp.5.3/vasp

#gadget and python:
#PYPATH="/home/Tools/progs/python/2.7-name/bin/python"      # python path (numpy library must be installed)
PYPATH="python"      # python path (numpy library must be installed)
OPTPATH="$HOME/Software/vasp/ext_optimizer/Gadget.0.96"        # optimizer path


####################
#### VASP FILES ####------------------------------------------------
####################

VASPFILES="*CAR KPOINTS VDW*"
GADGETFILES="INPDAT ICONST"


###########################
#### Setup Calculation ####------------------------------------------
###########################

cd $PBS_O_WORKDIR

# laufende Nummer der Rechnung ermitteln

JOB_NUMBER=0
if [ -e loopiter ] ; then JOB_NUMBER=$(cat loopiter) ; fi
let JOB_NUMBER=JOB_NUMBER+1
echo JOB_NO_PRINT = $JOB_NO_PRINT
JOB_NO_PRINT=$(printf "%03d" $JOB_NUMBER)
echo $JOB_NUMBER > loopiter
echo JOB_NO_PRINT = $JOB_NO_PRINT

JOBID_SHORT=${PBS_JOBID/.rrze.uni-erlangen.de}


##################
#### VASP run ####---------------------------------------------------
##################

# first ensure that NSW=1 in INCAR
sed -i 's/NSW.*=.*[0-9]*/NSW = 1/g' INCAR

# GADGET's prolog
NSW=$(awk 'BEGIN {FS="="} /NSW/ {print $2}' INPDAT|awk '{print $1}')
if [ "$NSW" = "" ];
      then echo "Specify NSW in INPDAT!"
           exit 1
fi

rm store.* hmat* UMAT
$PYPATH $OPTPATH/constwriter.py

# START
j=1
while [ $j -le $NSW ];
do
    # perform gradient+energy calculation (VASP)
    mpirun_rrze -pinexpr S0:0-9@S1:0-9  $VASP >> vasp-$JOB_NO_PRINT-$JOBID_SHORT.log
 
    # check if SCF finished 
    vtest=$(grep F OSZICAR |wc -l)
    if [ $vtest -lt 1 ]
    then
      echo 'VASP DID NOT TERMINATE PROPERLY!!!'
      echo 'VASP DID NOT TERMINATE PROPERLY!!!' >>report
      exit 1
    fi
    
    #check if SCF converged
    EDIFF=$(grep 'EDIFF  =' OUTCAR | awk '{print $3}')
    echo "EDIFF = $EDIFF"

    tail -n2 OSZICAR | awk 'NR == 1 {$4<0?x=-$4:x=$4; if (x>ediff) exit 1}' "ediff=$EDIFF"
    if ! [ $? -eq 0 ]
    then
      echo 'SCF DID NOT CONVERGE!!!'
      echo 'SCF DID NOT CONVERGE!!!' >>report
      exit 1
    fi

    cat POSCAR >>poscars
    cat OUTCAR >>outcars
    cat OSZICAR >>oszicars
    
    # perform relaxation step
    $PYPATH $OPTPATH/iteration.py $j

    #check if iteration was ok
    if ! [ $? -eq 0 ]
    then
      echo 'GADGET STOPPED, SOMETHING WENT WRONG!!!'
      echo 'GADGET STOPPED, SOMETHING WENT WRONG!!!' >>report
      exit 1
    fi
    #check whether SCF converged
    
    if (grep -E "(soft stop encountered|hard stop encountered|hard stop was set)" OUTCAR > /dev/null)
    then
      echo "VASP loop status:  $JOBID_SHORT abgebrochen wegen manuellem VASP-Abbruch (STOPCAR)"
      touch _GEOMOPT_ABBRUCH_
      break
    fi 
    
    test=$(head -c1 CONVERGENCE)
    if [ $test -gt 0 ]
    then
       echo "VASP loop status:  $JOBID_SHORT fertig"
       touch _GEOMOPT_FERTIG_ 
       break
    fi

    let j=j+1
done

# Interessante Dateien sichern
tar -c -z -f sik-$JOB_NO_PRINT-$JOBID_SHORT-$(date +%Y%m%d-%H%M%S).tar.gz \
  INCAR outcars poscars CONTCAR EIGENVAL oszicars vasprun.xml

#cp -a outcars outcars-$JOB_NO_PRINT
cp -a vasprun.xml vasprun-$JOB_NO_PRINT.xml
cp -a CONTCAR CONTCAR-$JOB_NO_PRINT
cp -a report report-$JOB_NO_PRINT

####################################
#### restart if no convergence  ####------------------------------------------
####################################

if (grep -E "(soft stop encountered|hard stop encountered|hard stop was set)" OUTCAR > /dev/null)
then
   exit
fi

test=$(head -c1 CONVERGENCE)
if [ $test -eq 0 ]
then 
    echo "VASP loop status:  $JOBID_SHORT respawning"
    #cp CONTCAR POSCAR
    qsub vasp-gadgetloop-emmy.pbs
fi 

rm -f UMAT SPECCOORDINATES HMAT TBC TOPOLOGY VOLCHANGE MAXSTEP store.*
#rm -f WAVECAR

# END

При наличии нормальноработающего VASP проблемой должен стать сам Gadget, точнее отсутствие numpy.oldnumeric на что выкатывается жалоба при исполнении $PYPATH $OPTPATH/iteration.py $j
этот олднумерик был удален из numpy на стыке версий 1.8 и 1.9
Поэтому вам надо скачать старый нумпи, в моем случае использовался 1.7.2rc1, и с помощью питона запустить setup.py в этой нумпи папке (в случае если на сервере то после этого запуска будет возможность указать что компилиться надо здесь же, а не где попало).
А в скрипт надо дописать PYTHONPATH включающий в себя нумпи-папку.

Аватара пользователя
leonidas
Сообщения: 240
Зарегистрирован: Чт дек 23, 2010 6:27 pm

Re: [Guide] Gadget/VASP/numpy

Сообщение leonidas » Пт фев 23, 2018 9:19 am

Сорри если оффтоп, но почему именно VASP? Что он может что не могут другие? Какой-нибудь вкусный DFT?
Заметил что в последнее время многие из моих сокластерников его юзают.

Аватара пользователя
Гесс
Сообщения: 13055
Зарегистрирован: Ср фев 15, 2012 11:19 pm

Re: [Guide] Gadget/VASP/numpy

Сообщение Гесс » Пт фев 23, 2018 10:02 am

Ну в periodic DFT вообще список традиционного софта невелик: VASP, Wien2K, CRYSTALL, возможно квантумэспрессо и cp2k. Так что можно сказать и "синдром утенка" - VASP использует моя сегодняшняя и моя следующая рабочие группы.

mizuchi
Сообщения: 95
Зарегистрирован: Ср фев 23, 2011 5:10 pm

Re: [Guide] Gadget/VASP/numpy

Сообщение mizuchi » Вт фев 27, 2018 1:19 pm

leonidas писал(а):
Пт фев 23, 2018 9:19 am
Сорри если оффтоп, но почему именно VASP? Что он может что не могут другие? Какой-нибудь вкусный DFT?
Заметил что в последнее время многие из моих сокластерников его юзают.
Там очень качественные псевдопотенциалы. За них и любят.
В остальном ничего особенного, только на редкость упоротый инпут.

chemigor
Сообщения: 704
Зарегистрирован: Вс июн 21, 2015 5:29 pm
Контактная информация:

Re: [Guide] Gadget/VASP/numpy

Сообщение chemigor » Ср фев 28, 2018 1:11 am

А можно вопрос дилетанта?

ИМХО, оптимизация расположения атомов - вроде бы очень нужная задача. Когда-то занимался предсказанием коэффициентов разделения в хиральной хроматографии на основе в том числе и Хартри-Фока и совсем не испытывал проблем законстрейнить целиком подвижную, и отдельно неподвижную фазы и только двигать их друг относительно друга. Потом правда и конформационные движения прикручивал.

Вопрос такой глупый... Ведь есть молмеханика. В ней идеально считаются все возможные градиенты и скорость (то бишь число итераций) по сходимости по атомам - очень даже приемлемая и весь математический аппарат давно еще Эллижером придуман.

Нарисовать аналитически градиенты для DFT или Хартри-Фока - даже в 90-ые годы вроде бы было не сложно, а прикрутить поверх BFGS (это достаточно устойчивый квазиньютоновский метод поиска минимумов) на оптимизацию расположений ядер с любыми мыслимыми и не мыслимыми констрейнами - в вычислительной математике очень простая задача.

Правильно ли я понимаю, что это далеко не во всех софтах имеется? И, если да, почему все так плохо?

ЗЫ: простите, если совсем оффтоп...

Аватара пользователя
Shorku
Сообщения: 1075
Зарегистрирован: Вт дек 13, 2011 2:17 pm

Re: [Guide] Gadget/VASP/numpy

Сообщение Shorku » Ср фев 28, 2018 8:26 am

chemigor писал(а):
Ср фев 28, 2018 1:11 am
А можно вопрос дилетанта?

ИМХО, оптимизация расположения атомов - вроде бы очень нужная задача. Когда-то занимался предсказанием коэффициентов разделения в хиральной хроматографии на основе в том числе и Хартри-Фока и совсем не испытывал проблем законстрейнить целиком подвижную, и отдельно неподвижную фазы и только двигать их друг относительно друга. Потом правда и конформационные движения прикручивал.

Вопрос такой глупый... Ведь есть молмеханика. В ней идеально считаются все возможные градиенты и скорость (то бишь число итераций) по сходимости по атомам - очень даже приемлемая и весь математический аппарат давно еще Эллижером придуман.

Нарисовать аналитически градиенты для DFT или Хартри-Фока - даже в 90-ые годы вроде бы было не сложно, а прикрутить поверх BFGS (это достаточно устойчивый квазиньютоновский метод поиска минимумов) на оптимизацию расположений ядер с любыми мыслимыми и не мыслимыми констрейнами - в вычислительной математике очень простая задача.

Правильно ли я понимаю, что это далеко не во всех софтах имеется? И, если да, почему все так плохо?

ЗЫ: простите, если совсем оффтоп...
В большинстве пакетов конечно есть оптимизация геометрии. Причем в "больших и серьезных" пакетах обычно есть выбор, в каком типе координат оптимизировать, каким оптимизатором, с какими констрейнтами. Но все это есть в разной мере, топик как раз про то, что васп не умеет констрейнты во внутренних координатах, может быть, просто не заморочились.
Make quantum chemistry, not war

chemigor
Сообщения: 704
Зарегистрирован: Вс июн 21, 2015 5:29 pm
Контактная информация:

Re: [Guide] Gadget/VASP/numpy

Сообщение chemigor » Ср фев 28, 2018 2:15 pm

Супер, спасибо Shorku за простой и понятный ответ, оно так и должно было быть!

Аватара пользователя
Гесс
Сообщения: 13055
Зарегистрирован: Ср фев 15, 2012 11:19 pm

Re: [Guide] Gadget/VASP/numpy

Сообщение Гесс » Ср фев 28, 2018 2:44 pm

Shorku писал(а):
Ср фев 28, 2018 8:26 am
В большинстве пакетов конечно есть оптимизация геометрии. Причем в "больших и серьезных" пакетах обычно есть выбор, в каком типе координат оптимизировать, каким оптимизатором, с какими констрейнтами. Но все это есть в разной мере, топик как раз про то, что васп не умеет констрейнты во внутренних координатах, может быть, просто не заморочились.
Оно безусловно да, но вот чисто сейчас придуманная задача:
есть бензольное кольцо, я ставлю над ним ну допустим молекулу этилена, допустим параллельно плоскости бензола (перепендикулярно будет еще сложнее). Так что от плоскости в которой лежит этилен до плоскости в которой лежит бензол - ну пусть будет 4 ангстрема. Теперь я бы хотел найти минимум потенциальной энергии при условии что молекулы остаются в своих плоскостях на постоянном расстоянии между плоскостями, но при этом могут оптимизироваться.
В васпе это бы выглядело очень просто
координатаХ координатаY координатаZ T T F (true, true, false - координата Z не будет меняться)
В гауссиане или орке мне потребуется минимум 4 жестко зафиксированных думмиатома и неслабо возни с фиксированием через них диэдральных углов к всем атомам системы (18 диэдральников), и это все будет по прежнему во внутренних координатах, потому как декартовы координаты гауссиана не могут быть зафиксированы "по одной".

Аватара пользователя
Shorku
Сообщения: 1075
Зарегистрирован: Вт дек 13, 2011 2:17 pm

Re: [Guide] Gadget/VASP/numpy

Сообщение Shorku » Ср фев 28, 2018 3:07 pm

Гесс писал(а):
Ср фев 28, 2018 2:44 pm
Оно безусловно да, но вот чисто сейчас придуманная задача:
есть бензольное кольцо, я ставлю над ним ну допустим молекулу этилена, допустим параллельно плоскости бензола (перепендикулярно будет еще сложнее). Так что от плоскости в которой лежит этилен до плоскости в которой лежит бензол - ну пусть будет 4 ангстрема. Теперь я бы хотел найти минимум потенциальной энергии при условии что молекулы остаются в своих плоскостях на постоянном расстоянии между плоскостями, но при этом могут оптимизироваться.
В васпе это бы выглядело очень просто
координатаХ координатаY координатаZ T T F (true, true, false - координата Z не будет меняться)
В гауссиане или орке мне потребуется минимум 4 жестко зафиксированных думмиатома и неслабо возни с фиксированием через них диэдральных углов к всем атомам системы (18 диэдральников), и это все будет по прежнему во внутренних координатах, потому как декартовы координаты гауссиана не могут быть зафиксированы "по одной".
Ага, вот именно что всякие такие фичи везде реализованы по-разному и количество их различается. Наверное, это определяется собственными нуждами авторов конкретного пакета, трудностью допиливания очередной фичи и юзерэкспириенсом, которым с ними кто-либо успел поделиться, а также фазой луны и прочими случайными вещами. Констрейнт одной связи/угла во внутренних координатах покрывает 95% нужд человека, считающего молекулы, констрейнт скольки-то декартовых координат, видимо, позволяет удобно фиксировать поверхности и удовлетворяет 95% юзеров, считающих васпом.
Make quantum chemistry, not war

Аватара пользователя
Гесс
Сообщения: 13055
Зарегистрирован: Ср фев 15, 2012 11:19 pm

Re: [Guide] Gadget/VASP/numpy

Сообщение Гесс » Ср фев 28, 2018 3:30 pm

Незнаю насчет юзерэкспириенса, но вот юзерфрендлинесс у них действительно специфичный.
mizuchi писал(а):
Вт фев 27, 2018 1:19 pm
В остальном ничего особенного, только на редкость упоротый инпут.
Если бы я с такого начал свою расчетную деятельность то там бы я и закончил.
Инпут в стиле турбомоля и амбера: куча отдельных файлов, здесь у нас координаты, здесь у нас описалово потенциала, тут у нас мысли о К-точках, здесь список того ЧТО и КАК считать, ну а с остальных файлов мы почитаем если они есть (результаты предыдущих расчетов).
Содержание ключей в гамесовской манере:

Default: ISYM = 1 if VASP runs with USPPs
= 3 if LHFCALC=.TRUE.
= 2 else,
Давайте использовать разные дефолты ключа в зависимости от наличия других ключей.
Default: PREC = Medium for VASP.4.X
= Normal for VASP.5.X
И в зависимости от версий тоже
Дефолтные значения ключа IDIPOL работают для поверхностей, могут работать для молекул, но не будут работать для кристалла (ок, будут, только результаты будут афизичны).
Дефолтное значение ключа EDIFFG = EDIFF×10 , EDIFF задается отдельно.
Система может несчитаться потому как она довольно симметрична, и чтоб она считалась нужно вырубить учет симметрии.
Если система не стартует, но ни на что конкретно не жалуется - то ей может нехватать ядер, или памяти, или ядер и памяти, или проблема в каком то из инпут файлов. Фиг его знает.
:235:

mizuchi
Сообщения: 95
Зарегистрирован: Ср фев 23, 2011 5:10 pm

Re: [Guide] Gadget/VASP/numpy

Сообщение mizuchi » Чт мар 01, 2018 1:19 am

Гесс писал(а):
Ср фев 28, 2018 3:30 pm
Незнаю насчет юзерэкспириенса, но вот юзерфрендлинесс у них действительно специфичный.
Меня больше всего вынесло, что критерии сходимости выбираются в зависимости от знака значения переменной EDIFF.

Ответить

Вернуться в «квантовая химия и моделирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей