Skip to content

EpwPrepWorkChain: How do we determine the wannierization scheme #11

@ymzhang0

Description

@ymzhang0

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?).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions