175
|
|
Changes to support synthetic atoms (VCA) Support for dealing with "synthetic atoms" has been added. Their basic feature is that they cannot be assigned a true integer atomic number:
- One could mix the pseudopotentials of two elements to generate an appropriate hybrid to be used in a "virtual crystal approximation". (See description of mixps program below) (Note that the ATOM program also allows the treatment of "atoms" with a fractional Z. This is an alternative choice for mixtures involving atoms which are contiguous in the periodic table. See Pseudo/atom/Tutorial/ON)
- By mixing a true atom's pseudopotential with a "null" pseudopotential, a "partial occupation" can be simulated.
Comparatively minor changes were needed to have Siesta process correctly synthetic species:
* Atomic numbers greater than 200 signal a synthetic atom. The symbol returned (in module periodic_table) is SX, where X is an integer from 1 to 9. In order to generate an appropriate "neutral atom" configuration, some extra information is needed about the "ground state" of the synthetic atom. It is taken from a SyntheticAtoms block (read in basis_specs.f). For example:
%block Chemical_Species_label 1 201 ON-0.50000 %endblock Chemical_Species_label %block SyntheticAtoms 1 # Species index 2 2 3 4 # n numbers for valence states with l=0,1,2,3 2.0 3.5 0.0 0.0 # occupations of valence states with l=0,1,2,3 %endblock SyntheticAtoms
* Changes in data structures and helper functions to support synthetic species:
New logical component "synthetic" in basis_types.f In atm_types, zval is now a real number. In atmfuncs, izvalfis has been renamed zvalfis, and now returns a real. (Same in old_atmfuncs, where the izvaltb array has been renamed zvaltb and now holds real numbers). Atm_transfer uses zvalfis. In basis_io, zval is now printed as a real number. Filename length enlarged to support long labels.
Calculation of total number of "pseudoprotons" in atomlist. Printed in siesta, together with the total number of electrons. Electrostatic.f uses real instead of integer nuclear charges. Optical.F and ksv.F use now a real "total number of electrons"
* Pseudopotential module changes:
- New routine read_ps_conf to crack the information about the configuration used to generate the pseudopotential (and used in atom to set the vps charge). Synthetic species do not have the appropriate text block in the .psf file, so the ability to process a new field ("gen_zval") has been added to read_pseudo_formatted (this extra field is optional and appears only in "synthetic" .psf files).
- New routine write_pseudo_formatted added.
* Atom.f changes:
- The code now in pseudopotential::read_ps_conf has been removed. - The species label and not the atomic number is now used for identification of the species. - Routine prinput now outputs a SyntheticAtoms block if needed.
* The output format in Outcoor.f has been changed to allow for long species labels. The label now comes last, and the atom number next to last. This could break non-supported user scripts.
A new program (mixps) has been written to mix pseudopotentials. It takes as command-line arguments the names (actually labels) of the two atoms involved (A and B), and the mixing parameter. Then it combines the information in A.psf and B.psf and creates a new file AB-0.xxxxx.psf, where 0.xxxxx is the mixing parameter (to five decimal places) specified. It outputs also a SyntheticAtoms block suitable for use by Siesta, and a MIXLABEL file which contains the final label used (useful for scripts).
This program is located in the top directory to ease compilation.
The new directory Util/VCA contains some documentation and the Programs zerops.f and zerops_rel.f to generate "null pseudopotentials". The resulting pseudos can also be found in Tests/Pseudos.
New tests:
oxyn: Molecule made up of ON hybrids partial: Molecule made up of O-Zero hybrids (a very artificial partial occupation)
The 'partial' test introduces a new idiom for tests: the use of a general script to perform more complicated operations. The handling of paths is still very primitive.
NOTES:
- The basis set is generated by Siesta using the "mixed" pseudopotential. There is no provision at this time to "mix" basis sets, or in general to build a basis set using information about the basis sets for the atoms involved in the mix. On the other hand, basis sets for synthetic atoms can be optimized as usual.
- PseudoCore charges are mixed if they exist in the individual atoms' pseudopotential files. This might lead to extra non-linearities in the solid-state calculation.
- Once Siesta reads the new .psf file for the hybrid, it generates a local-pseudopotential charge and a local pseudopotential from it. Note that this means that the local pseudopotential is not a true mix of the local pseudopotentials of the individual atoms.
- Once Siesta reads the "neutral-atom configuration" from the SyntheticAtoms block, it generates the appropriate neutral-atom potential using the local pseudopotential and the atomic charge density.
|
Alberto Garcia |
17 years ago
|
|
|