amuse icon indicating copy to clipboard operation
amuse copied to clipboard

Brutus does not use given wordlength when initializing

Open koenlooijmans opened this issue 1 year ago • 0 comments

Describe the bug When using the AMUSE-version of Brutus, it does not fully utilize the given wordlength when initializing, leading to higher-than-expected error margins down the line.

To Reproduce Run a Brutus simulation with a sufficiently high wordlength (more than 64) and BS_tolerance (approx. more precise than 1e-23, although this might vary with simulation parameters and initial conditions), and note that higher BS_tolerance and wordlength with identical init. conditions do not give the expected increased precision.

Here is my specific code I used, with logeps between -20 and -30.

brutus = Brutus(redirection="none")
brutus.parameters.bs_tolerance = np.pow(10., logeps)
brutus.parameters.word_length = -4 * logeps + 32
brutus.particles.add_particles(ast)
brutus.particles.add_particles(cluster)

Expected behavior We'd expect the precision to increase with BS_tolerance (and the appropriate wordlength), but this does not happen with sufficiently precise simulations.

Temporary fix Increasing the default wordlength (int numBits in interface.cc) to a higher value relieves the problem.

koenlooijmans avatar Feb 18 '25 15:02 koenlooijmans