The first generator is the open-source ONCVPSP code implemented by D. Hamann to generate optimized multiple-projector norm-conserving pseudopotentials. The projectors are directly stored in the PSML format together with a choice for the local potential. In addition, a set of semi-local potentials, a by-product of the ONCVPSP algorithm, is also included in the PSML file. The patches needed to produce PSML output in ONCVPSP are available in Launchpad. To ease the production of XML, a special library (wxml, part of the xmlf90 project maintained by one of the authors (A.G.)) is used.
The second generator enabled for PSML output is the ATOM code, originally developed by S. Froyen, later modified by N. Troullier and J. L. Martins, and currently maintained by one of us (A. G.) within the SIESTA project. ATOM, freely distributed to the academic community, generates norm-conserving pseudopotentials in the semilocal form.
In addition, we have developed a post-processing tool (PSOP, currently available in a branch of SIESTA development) which takes as input the semilocal components and computes the local part of the pseudopotential and the KB projector functions in the same way as it is done within the SIESTA code. These new elements, together with a new provenance record, are incorporated in a new PSML file, which describes a well-defined, client-code independent and unique operator.
We have thus already two different generators of PSML files, their specific idiosyncrasies being describable by a common standard. Our plans are to enable PSML output in other pseudopotential-generation codes.