quest-qmc

Descrição

De acordo com a página do quest-qmc, QUantum Electron Simulation Toolbox (QUEST) é um pacote Fortran 90/95 que implementa o método Determinant Quantum Monte Carlo (DQMC) para simulações de elétrons quânticos.

Versões Disponíveis

  • quest-qmc/1.4.9 (default)

Carregando o Módulo

# Carregar quest-qmc
module load quest-qmc/1.4.9

# Verificar instalação
ls $QUEST_DIR

Submissão de Jobs

submit_quest.sh
#!/bin/bash
#SBATCH -J quest
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G

export INPUT="input-test.in square.geom"
export OUTPUT="*.out *.dat"

module load quest-qmc/1.4.9

job-nanny ggeom input-test.in

Exemplo de Arquivo de Entrada

input-test.in
Hubbard model on square lattice
 LATTICE = square
 L = 4
!! Site types and potentials
 SITE TYPES
 1
 SITE POTENTIALS
 0.0
!! Hopping terms
 HOPPING
 t    -1.0
 t'    0.0
!! Interaction
 U = 4.0
!! Filling
 NELECT = 8
!! Temperature
 BETA = 10.0
!! Number of sweeps
 NSWEEP = 10000
!! Measurements
 MEASUREMENTS
 G(1)
 G(2)
 CHI(1,1)
 CHI(2,2)

Arquivo de Geometria

square.geom
# Geometry for square lattice L=4
# site x y z type
1 0.0 0.0 0.0 1
2 1.0 0.0 0.0 1
3 2.0 0.0 0.0 1
4 3.0 0.0 0.0 1
5 0.0 1.0 0.0 1
6 1.0 1.0 0.0 1
7 2.0 1.0 0.0 1
8 3.0 1.0 0.0 1
9 0.0 2.0 0.0 1
10 1.0 2.0 0.0 1
11 2.0 2.0 0.0 1
12 3.0 2.0 0.0 1
13 0.0 3.0 0.0 1
14 1.0 3.0 0.0 1
15 2.0 3.0 0.0 1
16 3.0 3.0 0.0 1

Job Array para Varredura de Parâmetros

submit_quest_array.sh
#!/bin/bash
#SBATCH -J quest_array
#SBATCH --array=1-5
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G

U_VALUES=(2.0 3.0 4.0 5.0 6.0)
U=${U_VALUES[$SLURM_ARRAY_TASK_ID-1]}

export INPUT="template.in"
export OUTPUT="U_${U}/"

module load quest-qmc/1.4.9

mkdir -p U_${U}
cd U_${U}
cp ../square.geom .

# Modificar U no arquivo de entrada
sed "s/U = .*/U = $U/" ../template.in > input.in

job-nanny ggeom input.in

Análise de Resultados

analyze_quest.sh
#!/bin/bash
#SBATCH -J analyze_quest
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=2G

# Extrair energia
grep "Energy" *.out > energies.txt

# Extrair densidade
grep "Density" *.out > density.txt

# Extrair susceptibilidade magnética
grep "Magnetic susceptibility" *.out > chi_mag.txt

# Plotar com Python
cat > plot.py << 'EOF'
import numpy as np
import matplotlib.pyplot as plt

# Energia vs U
data = np.loadtxt('energies.txt', usecols=(0,1))
plt.figure()
plt.plot(data[:,0], data[:,1], 'bo-')
plt.xlabel('U')
plt.ylabel('Energy')
plt.title('Energia vs U')
plt.grid(True)
plt.savefig('energy_vs_U.png')

# Densidade vs U
data2 = np.loadtxt('density.txt', usecols=(0,1))
plt.figure()
plt.plot(data2[:,0], data2[:,1], 'ro-')
plt.xlabel('U')
plt.ylabel('Density')
plt.title('Densidade vs U')
plt.grid(True)
plt.savefig('density_vs_U.png')
EOF

python plot.py

Referências

Ver também