-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Hi all,
Currently in get_builder_from_protocol from EpwPrepWorkChain we are choosing wannier workchain type as following:
if wannier_projection_type == WannierProjectionType.ATOMIC_PROJECTORS_QE:
if reference_bands is None:
raise ValueError(
f"reference_bands must be specified for {wannier_projection_type}"
)
w90_bands = Wannier90OptimizeWorkChain.get_builder_from_protocol(
...
)
w90_bands.separate_plotting = False
w90_bands.pop("projwfc", None)
elif wannier_projection_type == WannierProjectionType.SCDM:
w90_bands = Wannier90BandsWorkChain.get_builder_from_protocol(
...
)
else:
raise ValueError(
f"Unsupported wannier_projection_type: {wannier_projection_type}"
)
This means if we use wannier_projection_type == WannierProjectionType.ATOMIC_PROJECTORS_QE, we are forced to do a Wannier90OptimizeWorkChain.
But actually, if I understand the wannier workchain correctly, we are allowed not to do any optimization even if we want to use PDWF.
Is it better if we choose the work chain type according to the existence of reference_bands in the inputs ports? If there is an reference_bands, one is prone to use Wannier90OptimizeWorkChain and it will only proceed if wannier_projection_type == WannierProjectionType.ATOMIC_PROJECTORS_QE (@qiaojunfeng we can't do any optimization on WannierProjectionType.SCDM, right?).