# Variable period specification¶

Most updaters and analyzers in hoomd accept a variable period specification. Just specify a function taking a single argument to the period parameter.

For example, dump gsd files at time steps 1, 10, 100, 1000, ...:

dump.gsd(filename="dump.gsd", period = lambda n: 10**n)


More examples:

dump.gsd(filename="dump.gsd", period = lambda n: n**2)
dump.gsd(filename="dump.gsd", period = lambda n: 2**n)
dump.gsd(filename="dump.gsd", period = lambda n: 1005 + 0.5 * 10**n)


The object passed into period must be callable, accept one argument, and return a floating point number or integer. The function should also be monotonically increasing.

• First, the current time step of the simulation is saved when the analyzer is created.
• n is also set to 1 when the analyzer is created
• Every time the analyzer performs it’s output, it evaluates the given function at the current value of n and records that as the next time step to perform the analysis. n is then incremented by 1