-
Notifications
You must be signed in to change notification settings - Fork 139
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
GPAW to QMCPACK converter #3490
Comments
Definitely write everything in python. I think if we were starting again we would try to do that for all the converters. Ask questions about ESHDF as you go. We might want to update it. It has evolved accidentally over the years and now that more codes are being interfaced might need some polish. Definitely starting with planewaves. All electron won't be very useful in that case. RMG now implements semilocal evaluation so that the effect/errors of KB projectors can be checked. The UPF spec actually allows for these, though few/no codes make use of this flexibility. |
Thank you, Paul. I need to do some learning about the RMG capabilities that you mention. Meanwhile, I took some time to find out if there's already a scenario suitable for testing the conversion from GPAW to QMCPACK. It appears we are close but not quite there yet. The crux of the matter seems not to be the wavefunction conversion itself but the implementation of pseudopotentials in the UPF format. QMCPACK/ppconvert:
QE:
GPAW:
OPIUM:
Feel free to correct me if I'm wrong. What lead to me some of these conclusions was trying (among other things) to run H2 (ccECP) in GPAW. The ccECP for H looks quite exotic, and while QE works just fine, this blows up GPAW somehow. This tells me that the pseudo wavefunction or something else is not correctly implemented. What GPAW actually claims to support is the SG15 package of pseudopotentials, which doesn't seem to ship the pseudo wavefunction in a numerical form. Instead, it's constructed on runtime in some LCAO basis and I don't know if it is by design or not. It's an open investigation. I understand that the focus of my reports is quite scattered at the moment, but I'm just trying to bracket a reasonable test case for even a minimalistic converter tool. Maybe I should try Lithium instead. |
Update: the converter works fine for spin-unpolarized PW calculations with ccECP pseudopotentials with non-trivial k-point arrangement! Here's some VMC data based on bulk silicon with ccECP pseudos, 64-atom supercell, tilematrix -4232-2332-2, kgrid=(2,2,2) for twist averaging. Data based on GPAW SCF, then NSCF with custom set of 512 k-points:
Corresponding VMC data based on QE orbitals:
Differences in the averages are statistically insignificant, although some of the individual twists are not. Not sure if it's okay or not. There is some more work to do to make the bandinfos match between GPAW and QE, but I'll spare the details for the moment. Right now the tool is a standalone python script There's a bunch of action items to do including tests, examples and documentation. Foremost, it's important to figure out the best way to use the converter in a workflow, and implement the necessary framework. When we've settled that, and whatever else will be needed, I'd like to make an initial PR to get things in motion. |
I'm not really requesting as much as offering to write a converter from GPAW orbitals to QMCPACK. I'm anticipating some usability benefits (e.g. native and versatile python bindings) and potential new users from this capability. However, it would really help me out to get some answers from the experts instead of digging them up from the source codes.
Let me start with the following topics:
GPAW currently runs with three alternative representations of the wavefunction: real-space grid, plane-waves and LCAO. As far as I know, each of these can be converted for QMCPACK, albeit quite differently. The priority will be the plane-wave representation, and the rest can be left for later.
GPAW also implements at least the following Hamiltonians: all-electron, projector-augmented waves (PAW), and a limited support for norm-conserving KB pseudopotentials in the UPF format. The priority is AE, because it can be readily implemented and tested. The PAW method won't do. The UPF route is important, but a more general support for correlation-consistent ECPs will need consideration by the GPAW developers.
The GPAW release notes indicate support for simulation of (non-)collinear spin polarizations and spin-orbit coupling. I'll save these for later and start with spin-unpolarized calculations.
Does this sound correct and feasible?
GPAW is written in Python, so it seems natural to write the converter also in Python (in contrast to the present Fortran or C++ converters). The converter could take a GPAW restart file (.gpw) as an input, and if everything checks out, produce an output ES-HDF using h5py and a template XML input. All the modes outlined above could be considered by the same script.
A feature like that could ship with the GPAW package, if they are willing, and be invoked with a single command. Alternatively, it could be a part of Nexus or a standalone executable Python script.
I've been reverse engineering to understand the soul of an appropriate ES-HDF file for the plane-wave representation. Feel free to address the following propositions and questions:
I appreciate any comments and guidance with this project!
The text was updated successfully, but these errors were encountered: