#!/bin/bash
rm WAVECAR k_conv k_plot
#k convergence
for i in 2 4 6 8 9 10 11 12 13 14 15 16 ;
do
cat >KPOINTS <<!
pymatgen 4.7.6+ generated KPOINTS with grid density = 875 / atom
0
Monkhorst
$i $i $i
!
echo "k = $i" ;
b=$(llsubmit multiple.cmd) ;
c=$(echo $b | awk '{
ret=match($0,".in.")
rwt=match($0,"\" has")
rqt=rwt-(ret+4)
subs=substr($0,(ret+4),rqt)
print subs
}') ;
#c stores the job id
d=1 ;
until [ $d -eq 0 ]
do
b=$(llq $c) ; #llq is the command to query job information
d=$(echo $b | awk '{
if ($0 ~ /mm17s003/)
{print 1}
else
{print 0}
}')
done
E=$(tail -1 OSZICAR) ;
echo $i $E >> k_conv
done
awk '{print $1 "\t" $(NF-5)}' k_conv >> k_plot ; #Used to just write two specific columns from the file k_conv to k_plot.
Это файл сценария, который я использую для отправки заданий, который изменяет значение одного входного параметра в файле KPOINTS
перед отправкой задания каждый раз. for loop
для этого. multiple.cmd
- это сценарий фактической отправки задания, а llsubmit
- команда отправки задания для loadleveler.
nested until loop
используется для запроса статуса задания для конкретной отправленной работы. Пока работа не закончена, этот цикл повторяется. После завершения работы и окончания until loop
создается выходной файл OSZICAR
. Awk используется для извлечения определенных строк, которые затем сохраняются в E. Наконец, переменная цикла for i
(то есть входной параметр для вычисления, который изменяет скрипт) и E
сохраняются в файле k_conv
. Конец for loop
.
По сути, из-за until loop
одновременно должна быть представлена только одна работа. После этого начинается следующая итерация for loop
и отправляется новое задание. Каким-то образом, когда я запускаю скрипт, для любых двух или трех случайных значений i
задания представляются одновременно. Я предполагаю, что есть какая-то проблема с until loop
.
Вывод llsubmit multiple.cmd
, который изначально хранится в b: llsubmit: The job "c1hn1.virgo.iitm.ac.in.2077655" has been submitted.
c принимает идентификатор задания (2077655
из приведенного выше примера) в качестве значения.
Вывод llq $c
, который сохраняется в b позже: Id Owner Submitted ST PRI Class Running On ------------------------ ---------- ----------- -- --- ------------ ----------- c1hn1.2077655.0 mm17s003 9/9 23:43 I 50 Small 1 job step(s) in query, 1 waiting, 0 pending, 0 running, 0 held, 0 preempted
Любая помощь очень ценится.