UPDATE_IF
This is part of the generic module

Conditional update of other actions.

This action can be used to enable and disable the update step for the following actions depending on the value of its arguments. This allows for example to extract snapshots with value of some CVs in a given range.

When called with MORE_THAN and/or LESS_THAN keywords, this action starts an if block. The block is executed if all the arguments are less than all the respective values in the LESS_THAN keyword (if present) and all the arguments are more than all the respective values in the MORE_THAN keyword (if present).

When called with the END flag, this action ends the corresponding IF block. Notice that in this case one should also provide the ARG keyword. It is recommended to use the same ARG keyword that was used to begin the block, so as to make the input more readable.

Of course, blocks can be nested at will.

There are many potential usages for this keyword. One might e.g. decide to analyze some variable only when another variable is within a given range.

Warning
Notice that not all the possible usage make particular sense. For example, conditionally updating a METAD keyword (that is: adding hills only if a variable is within a given range) can lead to unexpected results.
Examples

The following input instructs plumed dump all the snapshots where an atom is in touch with the solute.

Click on the labels of the actions for more information on what each action computes
tested on v2.9
solute: GROUP 
ATOMS
the numerical indexes for the set of atoms in the group.
=1-124 coord: COORDINATION
GROUPA
First list of atoms.
=solute
GROUPB
Second list of atoms (if empty, N*(N-1)/2 pairs in GROUPA are counted).
=500
R_0
could not find this keyword
=0.5 # A coordination number higher than 0.5 indicate that there is at least one # atom of group `solute` at less than 5 A from atom number 500 UPDATE_IF
ARG
the input for this action is the scalar output from one or more other actions.
=coord
MORE_THAN
lower bound
=0.5 DUMPATOMS
ATOMS
the atom indices whose positions you would like to print out.
=solute,500
FILE
compulsory keyword file on which to output coordinates; extension is automatically detected
=output.xyz UPDATE_IF
ARG
the input for this action is the scalar output from one or more other actions.
=coord
END
( default=off ) end
Glossary of keywords and components
Compulsory keywords
STRIDE ( default=1 ) the frequency with which the quantities of interest should be output
Options
END

( default=off ) end

ARG the input for this action is the scalar output from one or more other actions. The particular scalars that you will use are referenced using the label of the action. If the label appears on its own then it is assumed that the Action calculates a single scalar value. The value of this scalar is thus used as the input to this new action. If * or *.* appears the scalars calculated by all the proceeding actions in the input file are taken. Some actions have multi-component outputs and each component of the output has a specific label. For example a DISTANCE action labelled dist may have three components x, y and z. To take just the x component you should use dist.x, if you wish to take all three components then use dist.*.More information on the referencing of Actions can be found in the section of the manual on the PLUMED Getting Started. Scalar values can also be referenced using POSIX regular expressions as detailed in the section on Regular Expressions. To use this feature you you must compile PLUMED with the appropriate flag.. You can use multiple instances of this keyword i.e. ARG1, ARG2, ARG3...
LESS_THAN upper bound
MORE_THAN lower bound