-
Notifications
You must be signed in to change notification settings - Fork 78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Provide option to set an explicit ibrav
value
#347
Comments
CC'ing @lekah |
CC'ing @lorisercole |
It looks like we will need to implement this option, as Giannozzi deprecated the use of Also reported in the release notes of QE 6.4.1:
|
Indeed I have discussed with him and I don't agree with the term 'deprecated'. Deprecated means it's going to be removed, while here I think the point is that he wants to warn people of potential problems if not used properly. The tricky part is that it's not trivial to convert from ibrav=0 to another ibrav if you have numerical inaccuracies. I'm ok in adding a 'force_ibrav' but how would this exactly work? is there an error if I say "force ibrav" to be cubic, but the system isn't? And for e.g. an orthorhombic system, who decides the order of the three a, b, c axes? |
@giovannipizzi Yes, the idea is to have force_ibrav, and then check with a tolerance (i.e. force_ibrav_tol, by default 1e-5 or similar) that the cell vectors of the structure can be recreated. I.e. if someone wants the system to be cubic, i.e. take the mean cell vector length as alat. Then I can check if the |
I see. I would strongly advise not to reimplement the logic in that paper. This is now part of spglib + seekpath; this however means an stronger dependency on these two libraries. There might still be the need to do some patching between the plugin and seekpath (e.g. seekpath also standardises with respect to the Cartesian axes, while with this flag you need to accept the orientation of axes decided by QE - but if a user wants this explicitly with a Any takers for an implementation? |
Is the goal here to determine For the latter, I think all that is needed is to convert between matrix form and the |
I think the idea is to have the user specify the Note: the logic for this is already in qe-tools |
I think we should put it in the We could allow any of
Nice! |
✋ Once we're agreeing on the interface I'll have a crack at this. |
Actually, regarding the interface: Since we anyway want a Of course, we would then need to validate that the cell matches what QE will produce. Does qe-tools also provide a "get parameters from cell", or would we need to implement that ourselves? |
That was the part that worried me most ;-) I'm not sure qe-tools has it (@lekah correct me if I'm wrong). If you feel confident trying to implement it I'm ok, but I fear we will end up in a lot of tiny checks and thresholds... but OK to try, maybe I'm too pessimistic :-D |
I think the real problem is exactly going to be to define what it means for the |
I would just extract the parameters without checks (e.g. for hexagonal, celldm(1) is the norm of cell[0], and celldm(2) = (norm of cell[2]) / celldm(1)). Then add one check at the end, whether qe-tools's |
I think 99% of use cases would be covered by just allowing a (single) absolute tolerance on the individual unit cell entries to be set by the user. |
I guess the only way to know is to see an implementation :-D |
@sphuber could you assign me, so I don't forget about it? |
With pleasure :) |
Currently this parameter from the
CONTROL
list is explicitly forbidden from being set directly in the input parameters, as it is always set to0
by the calculation plugin. However, for some purposes people want to enforce a specificibrav
if for example they know their structure is FCC and want to keep that symmetry even during volume relaxation for example.@giovannipizzi are there any objections to providing this as an option through, for example, a key
force_ibrav
in thesettings
input?The text was updated successfully, but these errors were encountered: