231
|
|
|
Alberto Garcia |
|
16 years ago
|
|
|
230
|
|
|
Alberto Garcia |
v2.5.0 |
16 years ago
|
|
|
229
|
|
|
Alberto Garcia |
|
16 years ago
|
|
|
228
|
|
|
Alberto Garcia |
|
16 years ago
|
|
|
227
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
226
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
225
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
224
|
|
Zmatrix optimization enhancements. Sign change in MM stress. * Added constant-volume optimization option to the Zmatrix code.
* Broyden option for Zmatrix optimization.
* The zmatrix optimization code for the "variable cell" case has been partially fixed. It now fails to work only if some of the coordinates of an atom specifed in "cartesian" form are variables (i.e., allowed to relax) and others are not.
For example:
cartesian ... 1 0.3 0.4 0.5 1 0 1 ...
will fail as the second coordinate is not allowed to relax.
1 0.4 0.2 -0.7 0 0 0 OK 1 0.4 0.2 -0.7 1 1 1 OK
* New file cell_broyden_optim.F implements "cell-only" optimizations.
This feature is enabled by setting the symbol
MD.RelaxCellOnly
to .true..
Only the cell parameters are relaxed (by the Broyden method). The atomic coordinates are re-scaled to the new cell, keeping the fractional coordinates constant. For Zmatrix calculations, the fractional position of the first atom in each molecule is kept fixed, and no attempt is made to rescale the bond distances or angles.
* Removal of intra-molecular pressure
If the symbol
MD.RemoveIntramolecularPressure
is set to .true., the contribution to the stress coming from the internal degrees of freedom of the molecules will be subtracted. This is done in an approximate manner, using the virial form of the stress, and assumming that the "mean force" over the coordinates of the molecule represents the "inter-molecular" stress. The correction term was already computed in earlier versions ("Pmol"). The correction is now computed molecule-by-molecule if the Zmatrix format is used.
NOTE: The reported "Molecular Pressure" might change slightly from previous versions as the "current" and not the "next iteration" coordinates are used for the computation of the virial term.
If the intra-molecular stress is removed, the corrected static and total stresses are printed in addition to the uncorrected items.
The corrected Voigt form is also printed.
(New test ch4 to exemplify this feature)
* Correction of the sign of the stress in molecularmechanics.F90
For MM potentials, attractive interactions are represented by *positive* C coefficients in the MM.Potentials block. Then the MM energy is negative, as it should be. However, the sign of the stress was wrong in the original implementation. Now (also printed as MM-Stress) it should come out as a positive contribution (negative pressure), forcing the cell to contract.
(Updated graphite_full test)
* New Utils/MM_Examples directory.
An example of the use of MM potentials to introduce van der Waals interactions in an approximate manner (for the artificial example of fcc He).
* Additional enthalpy-analog output.
The enthalpy is computed in two ways: as the "target enthalpy" using the target pressure, and as the "real" enthalpy using the trace of the current stress tensor as an estimation of the pressure. Ideally, both values should be identical at convergence, but the "target enthalpy" might have significant errors coming from the tolerances.
* NEW STRUCTURE OUTPUT FILES:
OUT.UCELL.ZMATRIX
It contains the structural information in fdf form, with blocks for unit-cell vectors and for Zmatrix coordinates. The Zmatrix block is in a ``canonical'' form with the following characteristics:
1. No symbolic variables or constants are used. 2. The position coordinates of the first atom in each molecule are absolute cartesian coordinates. 3. Any coordinates in ``cartesian'' blocks are also absolute cartesians. 4. There is no provision for output of constraints. 5. The units used are those initially specified by the user, and are noted also in fdf form.
Note that the geometry reported is the last one for which forces and stresses were computed.
NEXT_ITER.UCELL.ZMATRIX
In the same format but with a possibly updated geometry.
Label.STRUCT_NEXT_ITER.
Structure in crystallographic format (same as Label.STRUCT_OUT) for a possibly updated geometry.
(Call performed in siesta_write_positions, which is called after the structure has moved after the application of forces/stress.)
* New .make file for Hreidar at ETH Zurich.
|
Alberto Garcia |
|
17 years ago
|
|
|
223
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
222
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
221
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
220
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
219
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
218
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
217
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
216
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
215
|
|
New method for split-norm calculation The method for generating multiple-zeta orbitals is based on fitting a function of the form r^l (C_1*r^2 +C_2) at a certain point of the initial (1st zeta) orbital.
The criterion spelled out in the Siesta JPC paper seems to imply that the split-norm parameter refers to the norm of the tail of the initial orbital (i.e., the region to the right of the fitting point). However, the actual code in Siesta takes it to mean the norm of the tail *plus* the norm of the parabolic function in the inner region. The reasons are mostly historical, having to do with finding a "good enough, universal" default value for the split-norm parameter.
The problem with the "parabola+tail" method is that it does not always work, and this is bad for an unsupervised method like the simplex. For example, if the first-zeta orbital has a relatively large slope at or near rc , the smallest parabola one can fit (for radii very close to rc) has a significant norm, and there is a minimum value for the split-norm parameter. Thus the method will not work if the user (or simplex) requests a split-norm greater than this value, and Siesta will stop. This behavior is not uncommon.
On the other hand, the norm of the tail region is of course smooth and covers monotonically the whole range 0-1. It has very low contrast near rc, meaning that in order to fit a 2nd-zeta orbital with a 10% reduction in rc, one might need to use "tail-split-norms" of 0.001 or smaller.
New code for multiple split orbitals has been written to address these issues, while at the same time maintaining backwards compatibility with the old procedure. The code is controlled by the new fdf symbols:
* PAO.NewSplitCode
Enables a new, simpler way to match the multiple-zeta radii.
If an old-style (tail+parabola) calculation is being done, perform a scan of the tail+parabola norm in the whole range of the 1st-zeta orbital, and store that in split_table. The construction of the 2nd-zeta orbital involves simply scanning split_table to find the appropriate place. Due to the idiosyncracies of the old algorithm, the new one is not guaranteed to produce exactly the same results, as it might settle on a neighboring grid point for the matching.
* PAO.SplitTailNorm
split_table is set to sqrt(1-norm(r)), to more closely match the spirit of the JPC paper (the square root is introduced to make the split norm values larger for 2nd-zeta radii in the vicinity of rc).
* PAO.FixSplitTable
The old-style split-table is fixed by applying a damping function that takes it to zero at the 1st-zeta orbital radius. This option enables PAO.NewSplitCode.
By default, all three symbols are .false., resulting in the use of the old code. In this case, the program now stops if the requested split_norm is smaller than the values on the table, and prints an explanation.
* New test: ag (Original silver example exhibiting problems)
|
Alberto Garcia |
|
17 years ago
|
|
|
214
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
213
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|
212
|
|
|
Alberto Garcia |
|
17 years ago
|
|
|