Skip to content

Pdeedee/Qflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

29 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

QFlow - ่ฎก็ฎ—ๆๆ–™ๅญฆๅทฅไฝœๆต็ฎก็†็ณป็ปŸ

ๆฆ‚่ฟฐ

QFlow ๆ˜ฏไธ€ไธช็”จไบŽ็ฎก็†่ฎก็ฎ—ๆๆ–™ๅญฆๅทฅไฝœๆต็š„ไปปๅŠก่ฐƒๅบฆ็ณป็ปŸ๏ผŒๆ”ฏๆŒ็ป“ๆž„ไผ˜ๅŒ–ใ€ๅฃฐๅญ่ฎก็ฎ—ใ€QHA๏ผˆๅ‡†่ฐ่ฟ‘ไผผ๏ผ‰่ฎก็ฎ—็š„่‡ชๅŠจๅŒ–ๆต็จ‹็ฎก็†ใ€‚ๆ”ฏๆŒ MatterSim ๅ’Œ VASP ไธค็ง่ฎก็ฎ—ๅŽ็ซฏ๏ผŒไฝฟ็”จ Phonopy ่ฟ›่กŒๅฃฐๅญ่ฎก็ฎ—ๅ’ŒๅŽๅค„็†ใ€‚

็‰น็‚น๏ผš

  • ๅŸบไบŽ SQLite ๆ•ฐๆฎๅบ“็š„ไปปๅŠก้˜Ÿๅˆ—็ฎก็†
  • ๆฏไธช่ฎก็ฎ—ไปปๅŠก็‹ฌ็ซ‹ๆไบค sbatch๏ผŒๅ……ๅˆ†ๅˆฉ็”จ้›†็พค่ต„ๆบ
  • Manager ่ฟ›็จ‹่ดŸ่ดฃไปปๅŠก่ฐƒๅบฆๅ’ŒๅŽๅค„็†
  • ๆ”ฏๆŒ VASP ๅ’Œ MatterSim ไธค็ง่ฎก็ฎ—ๅŽ็ซฏ
  • ่‡ชๅŠจ่™š้ข‘ๆฃ€ๆต‹ๅ’Œๆ ‡่ฎฐ
  • ๆ™บ่ƒฝ่ถ…่ƒž็”Ÿๆˆ็ฎ—ๆณ•๏ผˆๆปก่ถณๆœ€ๅฐๅŽŸๅญๆ•ฐๅ’Œ่พน้•ฟ็บฆๆŸ็š„ๆœ€ไผ˜่ถ…่ƒž๏ผ‰
  • ไปปๅŠกไผ˜ๅ…ˆ็บง๏ผšopt > phonon > qha
  • ็บง่”ๅˆ ้™คๆœบๅˆถ๏ผˆ้‡็ฝฎไธŠๆธธไปปๅŠกๆ—ถ่‡ชๅŠจๅˆ ้™คไธ‹ๆธธไปปๅŠก๏ผ‰

ๅฎ‰่ฃ…

# ๅ…‹้š†ไป“ๅบ“
git clone https://github.com/liuzf/qflow.git
cd qflow

# ๅฎ‰่ฃ…๏ผˆๆŽจ่ไฝฟ็”จๅทฒๆœ‰็š„conda็Žฏๅขƒ๏ผ‰
pip install -e .

# ้ชŒ่ฏๅฎ‰่ฃ…
qflow --help

ๅฟซ้€Ÿๅผ€ๅง‹

1. ๅ‡†ๅค‡่พ“ๅ…ฅๆ–‡ไปถ

config.yaml ้…็ฝฎๆ–‡ไปถ๏ผš

# ๅทฅไฝœ็›ฎๅฝ•
work_dir: .

# Manager้…็ฝฎ
manager:
  structures_dir: ./qha_structures    # ็ป“ๆž„ๆ–‡ไปถ็›ฎๅฝ•
  scan_interval: 10                   # ๆ‰ซๆ้—ด้š”๏ผˆ็ง’๏ผ‰
  max_workers: 25                     # ๆœ€ๅคงๅนถๅ‘ไปปๅŠกๆ•ฐ
  qha: true                           # ๅผ€ๅฏ QHA ๅทฅไฝœๆต
  bte: false                          # ๅผ€ๅฏ BTE ๅทฅไฝœๆต
  plain_submit: false                 # true ๆ—ถไป…่ทŸ่ธชๅนถๆไบคๅทฒๆœ‰ task.*๏ผŒไธ็”Ÿๆˆไธ‹ๆธธไปปๅŠก

# Worker้…็ฝฎ
worker:
  mode: vasp                          # ่ฎก็ฎ—ๆจกๅผ: vasp ๆˆ– mattersim
  vasp_cmd: "mpirun vasp_std"         # VASPๆ‰ง่กŒๅ‘ฝไปค

# SLURM้…็ฝฎ
slurm:
  nodes: 1
  ntasks_per_node: 32
  partition: cpu
  time: "150:00:00"                   # Managerๆ—ถ้—ด้™ๅˆถ
  extra_commands:                      # ็Žฏๅขƒๅ˜้‡่ฎพ็ฝฎ
    - export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH

# ็ป“ๆž„ไผ˜ๅŒ–้…็ฝฎ
opt:
  fmax: 0.01                          # ๅŠ›ๆ”ถๆ•›ๆ ‡ๅ‡† (eV/Angstrom)
  refine_structure: true              # ๆ˜ฏๅฆๅœจไผ˜ๅŒ–ๅ‰ๆ ‡ๅ‡†ๅŒ–ๆ™ถๆ ผ๏ผˆๆŽจ่ๅฏ็”จ๏ผ‰

# ๅฃฐๅญ่ฎก็ฎ—้…็ฝฎ
phonon:
  supercell: null                     # ่ถ…่ƒž็Ÿฉ้˜ต๏ผŒnull่กจ็คบ่‡ชๅŠจ่ฎก็ฎ—
  max_atoms: 300                      # ๆœ€ๅคงๅŽŸๅญๆ•ฐ้™ๅˆถ
  min_atoms: 100                      # ๆœ€ๅฐๅŽŸๅญๆ•ฐ๏ผˆ็กฎไฟ่ถณๅคŸ็ฒพๅบฆ๏ผ‰
  min_length: 10.0                    # ๆœ€ๅฐ่พน้•ฟ (ร…)๏ผŒ็กฎไฟๅฃฐๅญๆ”ถๆ•›
  displacement_distance: 0.01         # ไฝ็งป่ท็ฆป (Angstrom)
  t_min: 0                            # ็ƒญๅŠ›ๅญฆๆ€ง่ดจๆœ€ไฝŽๆธฉๅบฆ (K)
  t_max: 1000                         # ็ƒญๅŠ›ๅญฆๆ€ง่ดจๆœ€้ซ˜ๆธฉๅบฆ (K)
  t_step: 10                          # ๆธฉๅบฆๆญฅ้•ฟ (K)

# QHA่ฎก็ฎ—้…็ฝฎ
qha:
  volumes: [0.98, 0.99, 1.0, 1.01, 1.02]  # ไฝ“็งฏ็ผฉๆ”พๅ› ๅญ
  pressure: 0                         # ๅŽ‹ๅŠ› (GPa)
  t_min: 0                            # ๆœ€ไฝŽๆธฉๅบฆ (K)
  t_max: 800                          # ๆœ€้ซ˜ๆธฉๅบฆ (K)
  t_step: 10                          # ๆธฉๅบฆๆญฅ้•ฟ (K)

# POTCAR่ฎพ็ฝฎ
potcar:
  functional: PBE_54                  # POTCAR็‰ˆๆœฌ: PBE, PBE_52, PBE_54, PBE_64

# VASP ่พ“ๅ…ฅ้›†้€‰ๆ‹ฉ
# ๅฏ้€‰ๅ€ผ: matpes | mpstatic | mprelax
vasp_sets:
  opt: mprelax
  qha_opt: mprelax
  bte_opt: mprelax
  phonon: matpes
  plain: matpes

# VASP INCAR่ฎพ็ฝฎ๏ผˆ่ฆ†็›–pymatgen้ป˜่ฎคๅ€ผ๏ผ‰
incar:
  opt:
    ALGO: Normal
    EDIFF: 1.0e-07
    EDIFFG: -1.0e-03
    IBRION: 1
    ISIF: 3
    ISMEAR: 0
    KSPACING: 0.2
    LREAL: False
    NELM: 100
    NSW: 99
    PREC: Accurate
    SIGMA: 0.01
    NPAR: 4
  phonon:
    ALGO: Normal
    EDIFF: 1.0e-08
    IBRION: -1
    ISMEAR: 0
    LREAL: False
    NELM: 200
    NSW: 0
    PREC: Accurate
    SIGMA: 0.05
    LCHARG: False
    LWAVE: False
    NPAR: 4
  plain:
    ALGO: Normal
    EDIFF: 1.0e-08
    IBRION: -1
    ISMEAR: 0
    LREAL: False
    NELM: 200
    NSW: 0
    PREC: Accurate
    SIGMA: 0.05
    LCHARG: False
    LWAVE: False
    NPAR: 4

plain_submit: true ๆ—ถ๏ผŒManager ๅช้€’ๅฝ’ๆ‰ซๆๅนถ่ทŸ่ธชๅทฒๆœ‰็š„ task.* ็›ฎๅฝ•๏ผŒไธ่‡ชๅŠจ็”Ÿๆˆ optใ€phononใ€qhaใ€bte ไปปๅŠก๏ผŒไนŸไธๅšๅŽๅค„็†ใ€‚

VASP ๆจกๅผไธ‹๏ผš

  • task.* ไผš่ฏปๅ– incar.plain
  • ๅนถๆŒ‰ vasp_sets.plain ้€‰ๆ‹ฉ่พ“ๅ…ฅ้›†
  • ๅฆ‚ๆžœๆฒกๆœ‰้…็ฝฎ incar.plain๏ผŒไผšๅ›ž้€€ๅˆฐ incar.phonon๏ผŒๅ†ๅ›ž้€€ๅˆฐ incar.opt

็ป“ๆž„ๆ–‡ไปถ็›ฎๅฝ•๏ผš

qha_structures/
โ”œโ”€โ”€ mp-10172/
โ”‚   โ””โ”€โ”€ POSCAR
โ”œโ”€โ”€ mp-1022/
โ”‚   โ””โ”€โ”€ POSCAR
โ””โ”€โ”€ ...

2. ่ฟ่กŒ

# ๅฏๅŠจ Manager๏ผˆๆไบคๅˆฐ SLURM๏ผ‰
qflow manager run

# ๆŸฅ็œ‹็Šถๆ€
qflow status

# ๆŸฅ็œ‹ๆญฃๅœจ่ฟ่กŒ็š„ไปปๅŠก่ฏฆๆƒ…
qflow status --running

3. ๆŸฅ็œ‹่ฟ›ๅบฆ

qflow status

่พ“ๅ‡บ็คบไพ‹๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Stage        โ”‚ Pending โ”‚ Running โ”‚ Success โ”‚ Failed  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Optimization โ”‚       0 โ”‚       0 โ”‚      93 โ”‚       0 โ”‚
โ”‚ Phonon       โ”‚      23 โ”‚       6 โ”‚     197 โ”‚       0 โ”‚
โ”‚ QHA          โ”‚     743 โ”‚      19 โ”‚      26 โ”‚       0 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Total        โ”‚     766 โ”‚      25 โ”‚     316 โ”‚       0 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โš  ๅญ˜ๅœจ่™š้ข‘็š„็ป“ๆž„: 34/93

ๆœ€่ฟ‘6ๅฐๆ—ถๅนณๅ‡ๆ‰ง่กŒๆ—ถ้—ด:
  opt: 6.6 min (ๆ ทๆœฌ: 20)
  phonon: 26.1 min (ๆ ทๆœฌ: 43)
  qha: 7.0 min (ๆ ทๆœฌ: 26)

้ข„่ฎกๅ‰ฉไฝ™ๆ—ถ้—ด: 3.9 ๅฐๆ—ถ (ๅนถๅ‘: 25)

4. ๆŸฅ็œ‹่ฟ่กŒไธญ็š„ไปปๅŠก

qflow status --running

่พ“ๅ‡บ็คบไพ‹๏ผš

ๆญฃๅœจ่ฟ่กŒ็š„ไปปๅŠก (25 ไธช):
====================================================================================================
Path                                                    Type     Time       SCF Info
----------------------------------------------------------------------------------------------------
qha_structures/mp-23162/opt                             opt      8.7 min    ion=8 e=27 rms=0.560E-04
qha_structures/mp-23240/opt                             opt      8.1 min    ion=6 e=23 rms=0.440E-04
qha_structures/mp-1434/volume_1.0/task.000000           phonon   8.8 min
...
  • ion=8: ๅทฒๅฎŒๆˆ8ไธช็ฆปๅญๆญฅ
  • e=27: ๅฝ“ๅ‰็ฆปๅญๆญฅๆ‰ง่กŒไบ†27ไธช็”ตๅญๆญฅ
  • rms=0.560E-04: ๆœ€ๅŽไธ€ไธช็”ตๅญๆญฅ็š„rmsๅ€ผ

ๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Manager (SLURM Job)                       โ”‚
โ”‚                    qflow manager run                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  1. ๆ‰ซๆ็ป“ๆž„็›ฎๅฝ•๏ผŒ็”ŸๆˆไปปๅŠก                                    โ”‚
โ”‚  2. ๆŒ‰ไผ˜ๅ…ˆ็บงๆไบค sbatch ไปปๅŠก๏ผˆopt > phonon > qha๏ผ‰           โ”‚
โ”‚  3. ไปฅๆ•ฐๆฎๅบ“ไธบไธป่ทŸ่ธชไปปๅŠก็Šถๆ€๏ผŒ่ฟ่กŒๆ€ๅ†็ป“ๅˆ squeue ่ฝป้‡ๆ ก้ชŒ      โ”‚
โ”‚  4. ๅŽๅค„็†๏ผˆๅฃฐๅญใ€QHAใ€่™š้ข‘ๆฃ€ๆต‹๏ผ‰                             โ”‚
โ”‚  5. ๆ•ฐๆฎๅบ“่‡ชๅŠจๅค‡ไปฝ๏ผˆๆฏ10ๅˆ†้’Ÿ๏ผ‰                                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  SQLite ไปปๅŠกๆ•ฐๆฎๅบ“                           โ”‚
โ”‚                    tasks.db                                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  - ไปปๅŠก็Šถๆ€: pending / running / success / failed           โ”‚
โ”‚  - ไผ˜ๅ…ˆ็บง: opt(100) > phonon(50) > qha(30)                  โ”‚
โ”‚  - ่‡ชๅŠจๅค‡ไปฝ: tasks.db.backup                                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ–ผ                     โ–ผ                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  sbatch job  โ”‚      โ”‚  sbatch job  โ”‚      โ”‚  sbatch job  โ”‚
โ”‚  (opt task)  โ”‚      โ”‚(phonon task) โ”‚      โ”‚ (qha task)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

CLI ๅ‘ฝไปค

# Manager ็ฎก็†
qflow manager run              # ๆไบค Manager ๅˆฐ SLURM
qflow manager cancel           # ๅ–ๆถˆ Manager ไฝœไธš

# ็Šถๆ€ๆŸฅ่ฏข
qflow status                   # ๆŸฅ็œ‹ไปปๅŠก็ปŸ่ฎก
qflow status --running         # ๆŸฅ็œ‹่ฟ่กŒไธญไปปๅŠก่ฏฆๆƒ…๏ผˆๆŒ‰ๆ—ถ้—ดๆŽ’ๅบ๏ผ‰

# ไปปๅŠก็ฎก็†
qflow cancel                   # ไป…ๅ–ๆถˆๅฝ“ๅ‰ๅทฅไฝœ็›ฎๅฝ•ไธ‹ manager ๅ’Œๅฎƒๆไบค็š„ไปปๅŠก
qflow reset --running          # ๆŒ‰ๆ•ฐๆฎๅบ“่ฎฐๅฝ•้‡็ฝฎ running๏ผŒๅนถๆธ…็†ๅฏนๅบ” .running
qflow reset --failed           # ๆŒ‰ๆ•ฐๆฎๅบ“่ฎฐๅฝ•้‡็ฝฎ failed๏ผŒๅนถๆธ…็†ๅฏนๅบ”ๅคฑ่ดฅๆ ‡่ฎฐ

# ไปปๅŠก้‡ๆ–ฐ็”Ÿๆˆ๏ผˆไฟฎๆ”น้…็ฝฎๅŽไฝฟ็”จ๏ผ‰
qflow regen opt                # ้‡ๆ–ฐ็”Ÿๆˆ opt ไปปๅŠก๏ผˆ็บง่”ๅˆ ้™ค phonon ๅ’Œ qha๏ผ‰
qflow regen phonon             # ้‡ๆ–ฐ็”Ÿๆˆ phonon ไปปๅŠก๏ผˆ็บง่”ๅˆ ้™ค qha๏ผ‰
qflow regen qha                # ้‡ๆ–ฐ็”Ÿๆˆ qha ไปปๅŠก

# ้˜Ÿๅˆ—ๅŒๆญฅ
qflow sync                     # ๅฟซ้€Ÿๆ‰ซๆๅนถๆณจๅ†Œๆ–ฐไปปๅŠกๅˆฐๆ•ฐๆฎๅบ“๏ผŒไธ้€้กนๅ›žๅ†™ๆ—งไปปๅŠก็Šถๆ€

# ๅนถๅ‘ๆŽงๅˆถ
qflow worker 25                # ่ฎพ็ฝฎๆœ€ๅคงๅนถๅ‘ไปปๅŠกๆ•ฐไธบ 25

่ฎก็ฎ—ๆจกๅผ

ๆจกๅผ ่ฏดๆ˜Ž ้€‚็”จๅœบๆ™ฏ
mattersim MatterSimๆœบๅ™จๅญฆไน ๅŠฟ ๅฟซ้€Ÿๆต‹่ฏ•ใ€้ซ˜้€š้‡็ญ›้€‰
vasp VASP็ฌฌไธ€ๆ€งๅŽŸ็†่ฎก็ฎ— ้ซ˜็ฒพๅบฆ่ฎก็ฎ—
# config.yaml
worker:
  mode: vasp  # ๆˆ– mattersim

ๆ–‡ไปถ็ป“ๆž„

project/
โ”œโ”€โ”€ config.yaml               # ้…็ฝฎๆ–‡ไปถ
โ”œโ”€โ”€ tasks.db                  # SQLiteไปปๅŠกๆ•ฐๆฎๅบ“
โ”œโ”€โ”€ tasks.db.backup           # ๆ•ฐๆฎๅบ“ๅค‡ไปฝ
โ”œโ”€โ”€ max_workers.txt           # ๆœ€ๅคงๅนถๅ‘ๆ•ฐ้…็ฝฎ๏ผˆๅฏ้€‰๏ผ‰
โ”œโ”€โ”€ subs/                     # SLURM่„šๆœฌ็›ฎๅฝ•
โ”‚   โ””โ”€โ”€ manager.slurm
โ”œโ”€โ”€ log/                      # ๆ—ฅๅฟ—็›ฎๅฝ•
โ”‚   โ””โ”€โ”€ manager_*.log
โ”‚
โ””โ”€โ”€ qha_structures/           # ็ป“ๆž„ๆ–‡ไปถ
    โ”œโ”€โ”€ mp-10172/
    โ”‚   โ”œโ”€โ”€ POSCAR            # ๅˆๅง‹็ป“ๆž„
    โ”‚   โ”œโ”€โ”€ .has_imag         # ่™š้ข‘ๆ ‡่ฎฐ๏ผˆๅฆ‚ๆœ‰๏ผ‰
    โ”‚   โ”œโ”€โ”€ .phonon_done      # phononๅฎŒๆˆๆ ‡่ฎฐ
    โ”‚   โ”œโ”€โ”€ .generated__*     # ไปปๅŠก็”Ÿๆˆๆ ‡่ฎฐ
    โ”‚   โ”œโ”€โ”€ .postprocess__*   # ๅŽๅค„็†ๅฎŒๆˆๆ ‡่ฎฐ
    โ”‚   โ”œโ”€โ”€ opt/              # ็ป“ๆž„ไผ˜ๅŒ–
    โ”‚   โ”‚   โ”œโ”€โ”€ POSCAR
    โ”‚   โ”‚   โ”œโ”€โ”€ CONTCAR       # ไผ˜ๅŒ–ๅŽ็ป“ๆž„
    โ”‚   โ”‚   โ””โ”€โ”€ .success
    โ”‚   โ”œโ”€โ”€ volume_1.0/       # ๅฃฐๅญ่ฎก็ฎ—๏ผˆๅนณ่กกไฝ“็งฏ๏ผ‰
    โ”‚   โ”‚   โ”œโ”€โ”€ task.000000/
    โ”‚   โ”‚   โ”œโ”€โ”€ task.000001/
    โ”‚   โ”‚   โ”œโ”€โ”€ ...
    โ”‚   โ”‚   โ”œโ”€โ”€ task_perfect/ # ๅฎŒ็พŽ่ถ…่ƒž๏ผˆๆ— ไฝ็งป๏ผ‰
    โ”‚   โ”‚   โ””โ”€โ”€ analyze/
    โ”‚   โ”‚       โ”œโ”€โ”€ phonopy_disp.yaml
    โ”‚   โ”‚       โ”œโ”€โ”€ phonopy_params.yaml
    โ”‚   โ”‚       โ”œโ”€โ”€ thermo_properties.yaml
    โ”‚   โ”‚       โ”œโ”€โ”€ phonon_band.png
    โ”‚   โ”‚       โ””โ”€โ”€ phonon_dos.png
    โ”‚   โ”œโ”€โ”€ volume_0.98/      # QHAไฝ“็งฏ็‚น
    โ”‚   โ”œโ”€โ”€ volume_0.99/
    โ”‚   โ”œโ”€โ”€ volume_1.01/
    โ”‚   โ”œโ”€โ”€ volume_1.02/
    โ”‚   โ””โ”€โ”€ analyze/          # QHA็ป“ๆžœ
    โ”‚       โ”œโ”€โ”€ pressure_0.00_gibbs-temperature.dat
    โ”‚       โ”œโ”€โ”€ pressure_0.00_volume-temperature.dat
    โ”‚       โ”œโ”€โ”€ pressure_0.00_bulk_modulus-temperature.dat
    โ”‚       โ””โ”€โ”€ ...
    โ””โ”€โ”€ ...

plain submit ๆจกๅผไธ‹ๅฏ็›ดๆŽฅๆ”พๅทฒๆœ‰ไปปๅŠก็›ฎๅฝ•๏ผš

qha_structures/
โ””โ”€โ”€ any_structure/
    โ”œโ”€โ”€ task.000000/
    โ”‚   โ”œโ”€โ”€ POSCAR
    โ”‚   โ”œโ”€โ”€ .success / .failed / .running
    โ”‚   โ””โ”€โ”€ error.log
    โ””โ”€โ”€ nested/
        โ””โ”€โ”€ task.000001/
            โ””โ”€โ”€ POSCAR

่ฏดๆ˜Ž๏ผš

  • plain ๆจกๅผๅชไผšๆŠŠ task.* ๆ”พๅ…ฅๆไบค้˜Ÿๅˆ—
  • task_perfectใ€opt ไธไผšๅœจ plain ๆจกๅผไธ‹ๆณจๅ†Œ
  • ๆฏไธชๅญไปปๅŠก่‡ชๅทฑ็š„ๆไบค็Šถๆ€ๅ’Œ้”™่ฏฏ่ฎฐๅฝ•้ƒฝไฟ็•™ๅœจๅฏนๅบ” task.* ็›ฎๅฝ•ๅ†…

ไปปๅŠกๆต็จ‹

็ป“ๆž„ไผ˜ๅŒ– (opt)
     โ”‚
     โ–ผ
ๅฃฐๅญ่ฎก็ฎ— (volume_1.0/task.*)
     โ”‚
     โ–ผ
ๅฃฐๅญๅŽๅค„็† (Phonopy)
     โ”‚
     โ”œโ”€โ”€โ†’ ๅˆ›ๅปบ .phonon_done ๆ ‡่ฎฐ
     โ”‚
     โ–ผ
่™š้ข‘ๆฃ€ๆŸฅ โ”€โ”€โ†’ ๆœ‰่™š้ข‘๏ผšๅˆ›ๅปบ .has_imag๏ผŒ่ทณ่ฟ‡QHA
     โ”‚
     โ–ผ ๆ— ่™š้ข‘
็”Ÿๆˆๅ…ถไป–ไฝ“็งฏ็‚น (volume_0.98, 0.99, 1.01, 1.02)
     โ”‚
     โ–ผ
ๅ„ไฝ“็งฏ็‚นๅฃฐๅญ่ฎก็ฎ— & ๅŽๅค„็†
     โ”‚
     โ–ผ
QHA ๅŽๅค„็†

่ถ…่ƒž็”Ÿๆˆ็ฎ—ๆณ•

QFlow ไฝฟ็”จๆ™บ่ƒฝ็ฎ—ๆณ•็”Ÿๆˆๆปก่ถณ็บฆๆŸ็š„ๆœ€ไผ˜่ถ…่ƒž๏ผš

  1. ็บฆๆŸๆกไปถ๏ผš

    • min_atoms: ๆœ€ๅฐๅŽŸๅญๆ•ฐ๏ผˆ้ป˜่ฎค100๏ผ‰๏ผŒ็กฎไฟๅฃฐๅญ่ฎก็ฎ—็ฒพๅบฆ
    • min_length: ๆœ€ๅฐ่พน้•ฟ๏ผˆ้ป˜่ฎค10ร…๏ผ‰๏ผŒ็กฎไฟๅฃฐๅญๆ”ถๆ•›
    • max_atoms: ๆœ€ๅคงๅŽŸๅญๆ•ฐ๏ผˆ้ป˜่ฎค300๏ผ‰๏ผŒๆŽงๅˆถ่ฎก็ฎ—ๆˆๆœฌ
  2. ็ฎ—ๆณ•็ญ–็•ฅ๏ผš

    • ้ฆ–ๅ…ˆๆปก่ถณ่พน้•ฟ็บฆๆŸ๏ผŒ่ฎก็ฎ—ๆฏไธชๆ–นๅ‘็š„ๆœ€ๅฐๆ‰ฉ่ƒžๅ€ๆ•ฐ
    • ็„ถๅŽ้€ๆญฅๅขžๅŠ ๆ‰ฉ่ƒžๅ€ๆ•ฐ๏ผŒไผ˜ๅ…ˆๅขžๅŠ ๅฝ“ๅ‰ๆœ€็Ÿญ่พน๏ผˆไฟๆŒ่ถ…่ƒžๅ‡ๅŒ€๏ผ‰
    • ็›ดๅˆฐๆปก่ถณๆœ€ๅฐๅŽŸๅญๆ•ฐ็บฆๆŸ
  3. ็คบไพ‹๏ผšๅฏนไบŽ3ๅŽŸๅญใ€่พน้•ฟ5.28ร…็š„FCCๆ™ถ่ƒž

    • ่พน้•ฟ็บฆๆŸ๏ผšceil(10/5.28) = 2 โ†’ ๅˆๅง‹ 2ร—2ร—2 = 24ๅŽŸๅญ
    • ๅŽŸๅญๆ•ฐไธ่ถณ100๏ผŒ้€ๆญฅๅขžๅŠ ๅˆฐ 4ร—3ร—3 = 108ๅŽŸๅญ
    • ๆœ€็ปˆ่พน้•ฟ๏ผš21.1ร… ร— 15.8ร… ร— 15.8ร…

regen ๅ‘ฝไปค่ฏฆ่งฃ

qflow regen ๅ‘ฝไปค็”จไบŽไฟฎๆ”น้…็ฝฎๅŽ้‡ๆ–ฐ็”ŸๆˆVASP่พ“ๅ…ฅๆ–‡ไปถ๏ผš

# ้‡ๆ–ฐ็”Ÿๆˆ opt ไปปๅŠก
qflow regen opt
# - ้‡ๆ–ฐ็”Ÿๆˆๆ‰€ๆœ‰ opt ็›ฎๅฝ•็š„ INCAR/KPOINTS/POTCAR
# - ็บง่”ๅˆ ้™คๆ‰€ๆœ‰ volume_* ็›ฎๅฝ•๏ผˆphonon ๅ’Œ qha ไปปๅŠก๏ผ‰
# - ๆธ…็† .has_imag ๆ ‡่ฎฐ

# ้‡ๆ–ฐ็”Ÿๆˆ phonon ไปปๅŠก
qflow regen phonon
# - ไป…ๅค„็† opt ๅทฒๅฎŒๆˆ็š„็ป“ๆž„
# - ๅฆ‚ๆžœ volume_1.0 ไธๅญ˜ๅœจ๏ผŒ่‡ชๅŠจๅˆ›ๅปบๆ–ฐ็š„ phonon ไปปๅŠก
# - ๅฆ‚ๆžœ volume_1.0 ๅญ˜ๅœจ๏ผŒ้‡ๆ–ฐ็”Ÿๆˆๅ…ถไธญ็š„ VASP ่พ“ๅ…ฅๆ–‡ไปถ
# - ็บง่”ๅˆ ้™คๆ‰€ๆœ‰ qha ็š„ volume_* ็›ฎๅฝ•
# - ๆธ…็† .has_imag ๅ’Œ .phonon_done ๆ ‡่ฎฐ

# ้‡ๆ–ฐ็”Ÿๆˆ qha ไปปๅŠก
qflow regen qha
# - ไป…ๅค„็† phonon ๅทฒๅฎŒๆˆ๏ผˆ.phonon_done๏ผ‰ไธ”ๆ— ่™š้ข‘็š„็ป“ๆž„
# - ้‡ๆ–ฐ็”Ÿๆˆๆ‰€ๆœ‰ volume_* (้™คไบ† 1.0) ็š„ VASP ่พ“ๅ…ฅๆ–‡ไปถ

ๆณจๆ„ไบ‹้กน

  1. Manager ๆ—ถ้—ด้™ๅˆถ๏ผšManager ไฝœไธบ SLURM ไฝœไธš่ฟ่กŒ๏ผŒๅปบ่ฎฎ่ฎพ็ฝฎ่พƒ้•ฟๆ—ถ้—ด๏ผˆๅฆ‚150ๅฐๆ—ถ๏ผ‰

  2. ๅนถๅ‘ๆŽงๅˆถ๏ผš

    • ้€š่ฟ‡ config.yaml ็š„ manager.max_workers ่ฎพ็ฝฎ้ป˜่ฎคๅ€ผ
    • ่ฟ่กŒๆ—ถๅฏ้€š่ฟ‡ qflow worker N ๅŠจๆ€่ฐƒๆ•ด
    • ไนŸๅฏ็›ดๆŽฅ็ผ–่พ‘ max_workers.txt ๆ–‡ไปถ
  3. ๆ•ฐๆฎๅบ“ๅค‡ไปฝ๏ผšManager ๆฏ10ๅˆ†้’Ÿ่‡ชๅŠจๅค‡ไปฝๆ•ฐๆฎๅบ“ๅˆฐ tasks.db.backup

  4. ่™š้ข‘ๅค„็†๏ผš

    • ๅญ˜ๅœจ่™š้ข‘็š„็ป“ๆž„ไผšๅˆ›ๅปบ .has_imag ๆ ‡่ฎฐ
    • ่ฟ™ไบ›็ป“ๆž„ไธไผš่ฟ›่กŒ QHA ่ฎก็ฎ—
    • ไฝฟ็”จ qflow regen opt ๆˆ– qflow regen phonon ไผšๆธ…็†ๆญคๆ ‡่ฎฐ
  5. ๆ•…้šœๆขๅค๏ผš

    • qflow reset --running / qflow reset --failed ไผšๆŒ‰ๆ•ฐๆฎๅบ“ไธญ็š„่ทฏๅพ„ๅ’Œ็Šถๆ€้‡็ฝฎ
    • reset ๅŒๆ—ถไผšๆธ…็†ๅฏนๅบ”ไปปๅŠก็›ฎๅฝ•ไธ‹็š„็Šถๆ€ๆ ‡่ฎฐๆ–‡ไปถ
    • ๆ•ฐๆฎๅบ“ๆŸๅๆ—ถๅฏไปŽ tasks.db.backup ๆขๅค
  6. ๅŒๆญฅไธŽ็Šถๆ€๏ผš

    • qflow status ้ป˜่ฎค็›ดๆŽฅ่ฏปๆ•ฐๆฎๅบ“็ปŸ่ฎก๏ผŒๅชๅฏน running ไปปๅŠกๅš่ฝป้‡ๆ ก้ชŒ
    • qflow sync ๅช่ดŸ่ดฃๅฟซ้€Ÿๆ‰ซๆๅนถๆณจๅ†Œๆ–ฐไปปๅŠก๏ผŒ่€ไปปๅŠก็Šถๆ€็”ฑ manager ่ฝฎ่ฏขๆ—ถๅŒๆญฅ
    • ๅฟซ้€Ÿๆ‰ซๆไฝฟ็”จ os.scandir() ้€’ๅฝ’ใ€ๆญฃๅˆ™ๅˆ†็ฑปๅ’Œ SQLite ๆ‰น้‡ INSERT OR IGNORE
  7. ๆ—ฅๅฟ—ๆŸฅ็œ‹๏ผš

    • Managerๆ—ฅๅฟ—๏ผšlog/manager_*.log
    • ไปปๅŠกๆ—ฅๅฟ—๏ผšๅ„ไปปๅŠก็›ฎๅฝ•ไธ‹็š„ slurm_*.log
  8. POTCAR ่ฎพ็ฝฎ๏ผš

    • ้€š่ฟ‡ potcar.functional ๆŒ‡ๅฎš POTCAR ็‰ˆๆœฌ
    • ๆ”ฏๆŒ PBE, PBE_52, PBE_54, PBE_64 ็ญ‰
  9. ็ป“ๆž„ๆ ‡ๅ‡†ๅŒ–๏ผš

    • ๅฏ็”จ opt.refine_structure: true ไผšๅœจไผ˜ๅŒ–ๅ‰ๆ ‡ๅ‡†ๅŒ–ๆ™ถๆ ผ
    • ไฝฟ็”จ primitive cell ้ฟๅ…ไธๅฟ…่ฆ็š„ๅŽŸๅญๆ•ฐๅขžๅŠ 

ไพ่ต–

phonopy
ase
numpy
pyyaml
matplotlib
pymatgen
tqdm

ๅธธ่ง้—ฎ้ข˜

Q: ไปปๅŠกไธ€็›ดๆ˜ฏ running ็Šถๆ€ไฝ† squeue ไธญๆฒกๆœ‰ไฝœไธš๏ผŸ

qflow cancel        # ๅ–ๆถˆๅฝ“ๅ‰ๅทฅไฝœ็›ฎๅฝ•ไธ‹็š„ไฝœไธšๅนถๆธ…็†ๅฏนๅบ” .running ๆ ‡่ฎฐ
qflow manager run   # ้‡ๆ–ฐๅฏๅŠจ Manager

Q: ไฟฎๆ”นไบ† INCAR ่ฎพ็ฝฎ๏ผŒๅฆ‚ไฝ•่ฎฉๅทฒๆœ‰ไปปๅŠกไฝฟ็”จๆ–ฐ่ฎพ็ฝฎ๏ผŸ

qflow cancel        # ๅ…ˆๅœๆญข Manager
qflow regen opt     # ้‡ๆ–ฐ็”Ÿๆˆ opt ไปปๅŠก๏ผˆไผš็บง่”ๅˆ ้™ค phonon/qha๏ผ‰
qflow manager run   # ้‡ๆ–ฐๅฏๅŠจ

Q: plain_submit ็”จๅ“ชๅฅ— INCAR / VASP set๏ผŸ

manager:
  plain_submit: true

vasp_sets:
  plain: matpes     # ๆˆ– mpstatic / mprelax

incar:
  plain:
    IBRION: -1
    NSW: 0

plain ๆจกๅผไธ‹๏ผŒtask.* ไผšไฝฟ็”จ incar.plain ๅ’Œ vasp_sets.plainใ€‚

Q: ๅฆ‚ไฝ•ๅช้‡ๆ–ฐ่ฎก็ฎ—ๆŸไธช็ป“ๆž„็š„ phonon๏ผŸ

# ๆ‰‹ๅŠจๅˆ ้™ค่ฏฅ็ป“ๆž„็š„ volume_1.0 ็›ฎๅฝ•
rm -rf qha_structures/mp-xxx/volume_1.0
rm -f qha_structures/mp-xxx/.phonon_done
rm -f qha_structures/mp-xxx/.has_imag
# ็„ถๅŽ่ฟ่กŒ
qflow regen phonon

Q: ่ถ…่ƒžๅคชๅคง๏ผŒ่ฎก็ฎ—ๅคชๆ…ขๆ€ŽไนˆๅŠž๏ผŸ ่ฐƒๆ•ด config.yaml ไธญ็š„ๅ‚ๆ•ฐ๏ผš

phonon:
  min_atoms: 80       # ้™ไฝŽๆœ€ๅฐๅŽŸๅญๆ•ฐ
  min_length: 8.0     # ้™ไฝŽๆœ€ๅฐ่พน้•ฟ
  max_atoms: 200      # ้™ไฝŽๆœ€ๅคงๅŽŸๅญๆ•ฐ

็„ถๅŽ่ฟ่กŒ qflow regen phonon ้‡ๆ–ฐ็”Ÿๆˆใ€‚

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors