Skip to content

Commit

Permalink
PhCalculation: add symmetry related exit codes
Browse files Browse the repository at this point in the history
Fixes aiidateam#1001

Some symmetry errors that ph.x can stop with are added. They are related
to how the PHonon code handles internally symmetry, which unfortunately
is slightly different from the PW code, which is used as a necessary
previous step to run ph.x. This is generally due to some interal hard-coded
thresholds. The solution is generally to run pw.x by specifying the
ibrav, instead of the general ibrav=0. This cannot be handled though,
as it would require to re-run the pw.x code.
  • Loading branch information
bastonero committed Mar 25, 2024
1 parent ff82ca1 commit 88347db
Show file tree
Hide file tree
Showing 7 changed files with 228 additions and 1 deletion.
5 changes: 5 additions & 0 deletions src/aiida_quantumespresso/calculations/ph.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ def define(cls, spec):
message='The stdout output file was incomplete probably because the calculation got interrupted.')
spec.exit_code(350, 'ERROR_UNEXPECTED_PARSER_EXCEPTION',
message='The parser raised an unexpected exception: {exception}')
spec.exit_code(360, 'ERROR_INCOMPATIBLE_FFT_GRID',
message='The FFT grid is incompatible with the detected symmetries. Try using the correct ibrav.')
spec.exit_code(361, 'ERROR_WRONG_REPRESENTATION',
message=('The representation found seems to be wrong according to the detected symmetries. '
'Try using the correct ibrav.'))

# Significant errors but calculation can be used to restart
spec.exit_code(400, 'ERROR_OUT_OF_WALLTIME',
Expand Down
2 changes: 2 additions & 0 deletions src/aiida_quantumespresso/parsers/ph.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ class PhParser(BaseParser):
class_error_map = {
'No convergence has been achieved': 'ERROR_CONVERGENCE_NOT_REACHED',
'problems computing cholesky': 'ERROR_COMPUTING_CHOLESKY',
'FFT grid incompatible with symmetry': 'ERROR_INCOMPATIBLE_FFT_GRID',
'wrong representation': 'ERROR_WRONG_REPRESENTATION',
}

def parse(self, **kwargs):
Expand Down
Empty file.
95 changes: 95 additions & 0 deletions tests/parsers/fixtures/ph/failed_incompatible_fft/aiida.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@

Program PHONON v.6.3MaX starts on 9Aug2019 at 12:13:51

This program is part of the open-source Quantum ESPRESSO suite
for quantum simulation of materials; please cite
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
URL http://www.quantum-espresso.org",
in publications or presentations arising from this work. More details at
http://www.quantum-espresso.org/quote

*** WARNING: using old-style file format, will disappear from next version ***

Serial version
Title line not specified: using 'default'.
Message from routine phq_readin:
iverbosity is obsolete, use "verbosity" instead

Reading data from directory:
./out/aiida.save
Message from routine volume:
axis vectors are left-handed

IMPORTANT: XC functional enforced from input :
Exchange-correlation = PBE ( 1 4 3 4 0 0)
Any further DFT definition will be discarded
Please, verify this is what you really want


G-vector sticks info
--------------------
sticks: dense smooth PW G-vecs: dense smooth PW
Sum 859 433 127 16889 5985 965

3 / 3 q-points for this run, from 1 to 3:
N xq(1) xq(2) xq(3)
1 0.000000000 0.000000000 0.000000000
2 0.353553391 -0.353553391 -0.353553391
3 0.000000000 0.000000000 -0.707106781


Calculation of q = 0.0000000 0.0000000 0.0000000

Restart in Phonon calculation



bravais-lattice index = 0
lattice parameter (alat) = 7.2558 a.u.
unit-cell volume = 270.1072 (a.u.)^3
number of atoms/cell = 2
number of atomic types = 1
kinetic-energy cut-off = 30.0000 Ry
charge density cut-off = 240.0000 Ry
convergence threshold = 1.0E-12
beta = 0.7000
number of iterations used = 4
Exchange-correlation = PBE ( 1 4 3 4 0 0)


celldm(1)= 7.25577 celldm(2)= 0.00000 celldm(3)= 0.00000
celldm(4)= 0.00000 celldm(5)= 0.00000 celldm(6)= 0.00000

crystal axes: (cart. coord. in units of alat)
a(1) = ( 0.7071 0.7071 0.0000 )
a(2) = ( 0.7071 0.0000 0.7071 )
a(3) = ( 0.0000 0.7071 0.7071 )

reciprocal axes: (cart. coord. in units 2 pi/alat)
b(1) = ( 0.7071 0.7071 -0.7071 )
b(2) = ( 0.7071 -0.7071 0.7071 )
b(3) = ( -0.7071 0.7071 0.7071 )


Atoms inside the unit cell:

Cartesian axes

site n. atom mass positions (alat units)
1 Si 28.0855 tau( 1) = ( 0.00000 0.00000 0.00000 )
2 Si 28.0855 tau( 2) = ( 0.35355 0.35355 0.35355 )

Computing dynamical matrix for
q = ( 0.0000000 0.0000000 0.0000000 )

49 Sym.Ops. (with q -> -q+G )

s frac. trans.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Error in routine phq_setup (1):
FFT grid incompatible with symmetry
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

stopping ...
Empty file.
95 changes: 95 additions & 0 deletions tests/parsers/fixtures/ph/failed_wrong_representation/aiida.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@

Program PHONON v.6.3MaX starts on 9Aug2019 at 12:13:51

This program is part of the open-source Quantum ESPRESSO suite
for quantum simulation of materials; please cite
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
URL http://www.quantum-espresso.org",
in publications or presentations arising from this work. More details at
http://www.quantum-espresso.org/quote

*** WARNING: using old-style file format, will disappear from next version ***

Serial version
Title line not specified: using 'default'.
Message from routine phq_readin:
iverbosity is obsolete, use "verbosity" instead

Reading data from directory:
./out/aiida.save
Message from routine volume:
axis vectors are left-handed

IMPORTANT: XC functional enforced from input :
Exchange-correlation = PBE ( 1 4 3 4 0 0)
Any further DFT definition will be discarded
Please, verify this is what you really want


G-vector sticks info
--------------------
sticks: dense smooth PW G-vecs: dense smooth PW
Sum 859 433 127 16889 5985 965

3 / 3 q-points for this run, from 1 to 3:
N xq(1) xq(2) xq(3)
1 0.000000000 0.000000000 0.000000000
2 0.353553391 -0.353553391 -0.353553391
3 0.000000000 0.000000000 -0.707106781


Calculation of q = 0.0000000 0.0000000 0.0000000

Restart in Phonon calculation



bravais-lattice index = 0
lattice parameter (alat) = 7.2558 a.u.
unit-cell volume = 270.1072 (a.u.)^3
number of atoms/cell = 2
number of atomic types = 1
kinetic-energy cut-off = 30.0000 Ry
charge density cut-off = 240.0000 Ry
convergence threshold = 1.0E-12
beta = 0.7000
number of iterations used = 4
Exchange-correlation = PBE ( 1 4 3 4 0 0)


celldm(1)= 7.25577 celldm(2)= 0.00000 celldm(3)= 0.00000
celldm(4)= 0.00000 celldm(5)= 0.00000 celldm(6)= 0.00000

crystal axes: (cart. coord. in units of alat)
a(1) = ( 0.7071 0.7071 0.0000 )
a(2) = ( 0.7071 0.0000 0.7071 )
a(3) = ( 0.0000 0.7071 0.7071 )

reciprocal axes: (cart. coord. in units 2 pi/alat)
b(1) = ( 0.7071 0.7071 -0.7071 )
b(2) = ( 0.7071 -0.7071 0.7071 )
b(3) = ( -0.7071 0.7071 0.7071 )


Atoms inside the unit cell:

Cartesian axes

site n. atom mass positions (alat units)
1 Si 28.0855 tau( 1) = ( 0.00000 0.00000 0.00000 )
2 Si 28.0855 tau( 2) = ( 0.35355 0.35355 0.35355 )

Computing dynamical matrix for
q = ( 0.0000000 0.0000000 0.0000000 )

49 Sym.Ops. (with q -> -q+G )

s frac. trans.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Error in routine set_irr_sym_new (311):
wrong representation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

stopping ...
32 changes: 31 additions & 1 deletion tests/parsers/test_ph.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def test_ph_out_of_walltime(fixture_localhost, generate_calc_job_node, generate_
data_regression.check(results['output_parameters'].get_dict())


def test_pw_failed_computing_cholesky(fixture_localhost, generate_calc_job_node, generate_parser):
def test_ph_failed_computing_cholesky(fixture_localhost, generate_calc_job_node, generate_parser):
"""Test the parsing of a calculation that failed during cholesky factorization.
In this test the stdout is incomplete, and the XML is missing completely. The stdout contains
Expand All @@ -78,3 +78,33 @@ def test_pw_failed_computing_cholesky(fixture_localhost, generate_calc_job_node,
assert calcfunction.is_finished, calcfunction.exception
assert calcfunction.is_failed, calcfunction.exit_status
assert calcfunction.exit_status == node.process_class.exit_codes.ERROR_COMPUTING_CHOLESKY.status


def test_ph_failed_incompatible_fft(fixture_localhost, generate_calc_job_node, generate_parser):
"""Test the parsing of a calculation that failed finding an incompatible FFT grid."""
name = 'failed_incompatible_fft'
entry_point_calc_job = 'quantumespresso.ph'
entry_point_parser = 'quantumespresso.ph'

node = generate_calc_job_node(entry_point_calc_job, fixture_localhost, name, generate_inputs())
parser = generate_parser(entry_point_parser)
_, calcfunction = parser.parse_from_node(node, store_provenance=False)

assert calcfunction.is_finished, calcfunction.exception
assert calcfunction.is_failed, calcfunction.exit_status
assert calcfunction.exit_status == node.process_class.exit_codes.ERROR_INCOMPATIBLE_FFT_GRID.status


def test_ph_failed_wrong_representation(fixture_localhost, generate_calc_job_node, generate_parser):
"""Test the parsing of a calculation that failed finding a wrong representation."""
name = 'failed_wrong_representation'
entry_point_calc_job = 'quantumespresso.ph'
entry_point_parser = 'quantumespresso.ph'

node = generate_calc_job_node(entry_point_calc_job, fixture_localhost, name, generate_inputs())
parser = generate_parser(entry_point_parser)
_, calcfunction = parser.parse_from_node(node, store_provenance=False)

assert calcfunction.is_finished, calcfunction.exception
assert calcfunction.is_failed, calcfunction.exit_status
assert calcfunction.exit_status == node.process_class.exit_codes.ERROR_WRONG_REPRESENTATION.status

0 comments on commit 88347db

Please sign in to comment.