Open qiaojunfeng opened 3 years ago
Reports from Giovanni: changing the call parameters of seekpath_structure_analysis
-from aiida_quantumespresso.workflows.functions.seekpath_structure_analysis import seekpath_structure_analysis
+from aiida_quantumespresso.calculations.functions.seekpath_structure_analysis import seekpath_structure_analysis
- self.inputs.structure, seekpath_parameters
+ structure=self.inputs.structure, **seekpath_parameters.get_dict()
This has been done in https://github.com/aiidateam/aiida-wannier90-workflows/commit/c00dd54f9fdab8e8bca080a594d4581dfb376147 and 655c0f92280c43848dc625037f8ec0413d495a80, for master
branch.
Reports from Giovanni: moving the import inside the if statement:
if self.inputs.use_opengrid:
+ from aiida_wannier90_workflows.workflows.opengrid import Wannier90OpengridWorkChain
Done in 30bd0f74afaa221d5a1c925d6f65af189be1df8e, for opengrid
branch.
Currently, the workchain uses pslibrary SOC pseudos, consider using the (norm-conserving) full-relativistic pseudos from the pseudo-dojo (FR v0.4, PBE, stringent)?
TODO: need cutoff table
problems with the function parse_number_of_pswfc_soc
:
with the pseudos of the pseudo-dojo, it crashes because there is no 'oc' field in the XML rows - i temporarily fixed by just removing the three lines
oc = float(child.get('oc')) if oc < 0: continue
but this might be wrong in general
Seems there are some slight differences between pseudos generated by different codes. I think we can skip these lines if there is no oc
attribute in the PP_RELWFC
tag. For all the pslibrary pseudos, all the oc
are >= 0 so this if conditional has no effect.
I skip the check of oc
in this commit 78b65e5120020bad7608b39e335397c53f3c3401
- I'm not sure I follow the logic num_projections += 2 * lchi if abs(jchi - lchi - 0.5) < 1e-6: num_projections += 2
For a given quantum number l
, there are 2 cases:
j = l - 1/2
then there are 2*j + 1 = 2l
statesj = l + 1/2
then there are 2*j + 1 = 2l + 2
states so we have to add another 2
E.g. for In
pseudo
state # 1: atom 1 (In ), wfc 1 (l=0 j=0.5 m_j=-0.5)
state # 2: atom 1 (In ), wfc 1 (l=0 j=0.5 m_j= 0.5)
state # 3: atom 1 (In ), wfc 2 (l=1 j=0.5 m_j=-0.5)
state # 4: atom 1 (In ), wfc 2 (l=1 j=0.5 m_j= 0.5)
state # 5: atom 1 (In ), wfc 3 (l=1 j=1.5 m_j=-1.5)
state # 6: atom 1 (In ), wfc 3 (l=1 j=1.5 m_j=-0.5)
state # 7: atom 1 (In ), wfc 3 (l=1 j=1.5 m_j= 0.5)
state # 8: atom 1 (In ), wfc 3 (l=1 j=1.5 m_j= 1.5)
state # 9: atom 1 (In ), wfc 4 (l=2 j=1.5 m_j=-1.5)
state # 10: atom 1 (In ), wfc 4 (l=2 j=1.5 m_j=-0.5)
state # 11: atom 1 (In ), wfc 4 (l=2 j=1.5 m_j= 0.5)
state # 12: atom 1 (In ), wfc 4 (l=2 j=1.5 m_j= 1.5)
state # 13: atom 1 (In ), wfc 5 (l=2 j=2.5 m_j=-2.5)
state # 14: atom 1 (In ), wfc 5 (l=2 j=2.5 m_j=-1.5)
state # 15: atom 1 (In ), wfc 5 (l=2 j=2.5 m_j=-0.5)
state # 16: atom 1 (In ), wfc 5 (l=2 j=2.5 m_j= 0.5)
state # 17: atom 1 (In ), wfc 5 (l=2 j=2.5 m_j= 1.5)
state # 18: atom 1 (In ), wfc 5 (l=2 j=2.5 m_j= 2.5)
In fact this python function is a translation of the QE Fortran code uspp.f90:n_atom_wfc
:
https://github.com/QEF/q-e/blob/7d5cebcf1250114756b88c6064ebe82e6f8fd835/Modules/uspp.f90#L69-L75
Thanks for the last clarification! It might be good to add this as a comment in the code so it's easier to understand.
Thanks for the last clarification! It might be good to add this as a comment in the code so it's easier to understand.
Thanks, done in a41bd7791cd282de9d9ced7b1d1607384f770beb
Now the
Wannier90BandsWorkChain
in the opengrid branch supports spin-orbit-coupling (SOC) calculations.Some prerequisites for using the workchain:
aiida-quantumespresso
should contain at least commit https://github.com/aiidateam/aiida-quantumespresso/commit/031b92b9c85ed01588de332f039af05738607375verdi data upf uploadfamily
. If you want to use other pseudos, just modify the json file.How to submit the workchain: just add one line like this https://github.com/aiidateam/aiida-wannier90-workflows/blob/1decab3321fe94ed53b1f0402161c201e6ac9893/examples/workflows/run_automated_wannier.py#L187
Let me know if you have comments, suggestions!