Parameter for relaxation by the Nudged Elastic Band (NEB) method 
(<tt>nebrelax</tt>) or the string method (<tt>stringrelax</tt>).

<p>
<b><u>When used by</u></b>
<tt>nebrelax</tt>, <tt>nebspec</tt> has the following meaning.

<p>
<tt>nebspec = [ <i>relax_surround k moveleftend moverightend yesclimbimage</i> ]</tt>

<p>
If <tt><i>relax_surround</i> = 1</tt>, then relaxing the surrounding atoms
of the constrained atoms during <tt>nebrelax</tt>.
We usually use <tt><i>relax_surround</i> = 0</tt>, then the surrounding atoms
will be a linear interpolation between <tt>SR1</tt> and <tt>SR2</tt>.
When all atoms are included in <tt>constrainatoms</tt>, then this option has no effect.
<tt><i>relax_surround</i> = 1</tt> does not work for parallel version of <tt>nebrelax</tt>.


<p>
<tt><i>k</i></tt> is the spring constant of the nudged elastic band. 
If <tt><i>k</i> = 0</tt>, then the spring constant will be automatically chosen as the maximum force 
magnitude times the number of chains.

<p>
If <tt><i>moveleftend</i> = 0</tt>, then the left end replica of the chain does not move 
during NEB relaxation. This is the correct setting if the left end is already at
an energy minimum. <br>
If <tt><i>moveleftend</i> = 1</tt>, then the left end moves following spring force in the 
normal to the real force direction.   This constrains the left end to a constant energy
isosurface.  (We found that it is difficult to find the appropriate parameters to stablize
<tt>nebrelax</tt> with this option.  Hence we prefer to use <tt>stringrelax</tt> when the end
needs to move.  For details, see T. Zhu, J. Li, et al. PNAS vol.104, pp.3031-3036, 2007. <br>
If <tt><i>moveleftend</i> = 2</tt>, then the left end is constrained to move along the chain 
tangential direction (constrained free fall). <br>
If <tt><i>moveleftend</i> = 3</tt>, the left end moves along the force direction (free fall).

<p>
<tt><i>moverightend</i></tt> has similar meaning for the right end.

<p>
If <tt><i>yesclimbimage</i> = 1</tt>, then the image (or replica) of the highest energy starts 
to climb up the hill when <tt>curstep</tt> &gt; <tt>equilsteps</tt>.   This means that if 
<tt><i>yesclimbimage</i> = 1</tt>, <b>we need to set</b> <tt>equilsteps</tt> 
<b>to a non-zero value</b>, e.g.
1000, and set <tt>totalsteps</tt> &gt; <tt>equilsteps</tt>.  
Otherwise, <tt>equilstep = 0</tt> by default and running with <tt><i>yesclimbimage</i> = 1</tt>
from the beginning makes <tt>nebrelax</tt> more unstable. 
Typically, we can set <tt>totalsteps</tt> to be <tt>equilsteps</tt> + 500, 
which means that the climbing image method will be applied to the last 500 steps of 
<tt>nebrelax</tt>.  

(In the future, we may want to use a different variable to replace <tt>equilsteps</tt>.)


<p>

<b><u>When used by</u></b>
<tt>stringrelax</tt>, <tt>nebspec</tt> (or, equivalently
<tt>stringspec</tt>) has the following meaning.

<p>
<tt>nebspec = [ <i>relax_surround redistr_freq moveleftend moverightend yesclimbimage islengthconstant</i> ]</tt>

<p>
The main difference from above is in <tt><i>redistrib_freq</i></tt> 
(instead of <tt><i>k</i></tt>) and in <tt><i>islengthconstant</i></tt>. 

<p>
In the string method, there is no need to specify a spring constant.  Instead,
<tt><i>redistr_freq</i></tt> specifies how often the path gets reparameterized.
We recommend <tt><i>redistrib_freq</i> = 1</tt>, which means reparameterization
at every step of <tt>stringrelax</tt>.

<p>
If <tt><i>islengthconstant</i> = 1</tt>, the total length of the string will be kept 
constant duringn <tt>stringrelax</tt>.  This option is neglected if both ends are fixed.
This option only works for parallel version of <tt>stringrelax</tt>.

<p>
Note that if <tt><i>yesclimbimage</i> = 1</tt>, <tt>equilsteps</tt> need to be set
to a non-zero value (e.g. 1000) to avoid instability.

<p>
Also see <tt>nebrelax</tt>, <tt>stringrelax</tt>.
