.. _list-of-potential-modifiers: *************************** List of Potential Modifiers *************************** Potential modifiers are described here: :ref:`potential-modifiers`\ . A list of available potential modifiers is provided here. .. _modifier-pow: ``pow()`` ========= Modifier that raises each potential-form to the power of the next. If the potentials provide analytical derivatives, the ``pow()`` modifier will combine these correctly. Example: -------- To take the square of the :ref:`modifier-sum` of a series of potential forms you could use:: [Pair] # This would evaluate to 0.16 A-B : pow(sum(as.constant -1, as.constant 0.1, as.constant 0.5), as.constant 2) ``pow()`` can take more than two potential forms as its arguments:: [Pair] # This would evaluate to 2^(2^3) = 256 A-B : pow(as.constant 2, as.constant 3, as.constant 2) You aren't restricted to using constant values as arguments:: [Pair] # This is equivalent to 2^(0.5r + r^2) A-B : pow(as.constant 2, as.polynomial 0 0.5 1) .. _modifier-product: ``product()`` ============= Modifier that takes the product of the potential-forms provided to it as arguments. If the potentials provide analytical derivatives the ``product()`` modifier will combine these correctly. Example: -------- Any number of potential instances can be multiplied by each other:: [Pair] # Evaluates to 16 A-A : product(as.constant 2.0, as.constant 2.0, as.constant 4.0) # Apply a soft-cutoff at 2.5 Angs to a Buckingham potential # This defines a custom function in the [Potential-Form] section # based on the complementary error function for this purpose. B-B : product(as.buck 1000.0 0.2 32.0, truncate 2.5) [Potential-Form] truncate(rij, cutoff) = erfc(4*(rij-cutoff))/2.0 .. _modifier-spline: ``spline()`` ============ Modifier that smoothly splines between two potential forms by linking them with an intermediate spline. ``spline()`` takes a single argument which is defined as a :ref:`multi-range potential `. This must define three ranges: #. Start potential #. Interpolating spline #. End potential The **Interpolating spline** section has the form:: SPLINE_LABEL SPLINE_PARAMETERS Where the ``SPLINE_LABEL`` defines the type of spline to be used and the (optional) ``SPLINE_PARAMETERS`` is a list of space separated options taken by the spline function. A list of spline types usable with ``SPLINE_LABEL`` is now given: ``buck4_spline`` ---------------- :Spline Signature: ``buck4_spline`` :math:`r_\text{min}` :Description: Combination of a fifth and third order polynomial joined by a stationary point at :math:`r_\text{min}`. This is the spline used in the well-known :ref:`four-range Buckingham potential form `\ . :See also: * :ref:`spline-buck4` * :ref:`potform-buck4` \ ``exp_spline`` -------------- :Spline Signature: ``exp_spline`` :Description: Exponential of fifth order polynomial. :See also: * :ref:`spline-exp_spline` * :ref:`potform-exp_spline` Example: -------- A configuration string might be defined as:: [Pair] Si-O : spline(>0 as.zbl 14 8 >=0.8 exp_spline >=1.4 as.buck 180003 0.3 32.0) This would create a :ref:`zbl ` and :ref:`Buckingham ` potential connected by an exponential spline when `r` is between 0.8 and 1.4. .. seealso:: * Splining is introduced in more detail here: :ref:`aspot-splining`\ . * List of examples: - :ref:`spline-exp_spline-example`\ . - :ref:`spline-buck4_spline-example`\ . .. _modifier-sum: ``sum()`` ========= Modifier that sums all the potentials given as arguments. If the potentials provide analytical derivatives the ``sum()`` modifier will combine these correctly. Example: -------- Any number of potential instances can be summed:: [Pair] # Evaluates to 3 A-A : sum(as.constant 1.0, as.constant 2.0) # Evaluates to 6 B-B : sum(as.constant 1.0, as.constant 2.0, as.constant 3.0) .. seealso:: * This modifier is used in the following examples: - :ref:`quick-start` - :ref:`potable-potential-form-basak-example` .. _modifier-trans: ``trans()`` =========== Modifier that applies the following transformation to a given potential function:: potential(r+X) Where X is the transformation value. This modifier takes two arguments, the first is a potential form instance. The second must be an instance of ``as.constant`` that takes ``X`` as its argument. Example ------- To shift a Buckingham paair potential two angstroms to the left the ``trans()`` modifier could be used like this:: [Pair] A-B : trans(as.buck 1000.0 0.1 32.0, as.constant 2)