Increasing the maximum molecule size

Currently, by default, the maximum allowed size for rigid bead molecules in PyRID is set to 20 particles/beads. To change this number, you need to edit the rigidbody_util.py file (pyrid.molecules.rigidbody_util.RBs). In there you find the data type for a structured array named ‘item_t_RB’. This data type contains a field named ‘topology’. By default, the data type of this field is np.int64(20,). Therefore, to increase the maximum number of particles a molecule can consist of in PyRID, you need to change the number 20 to a number of your choice.

Example where the maximum size has been increased to 50 particles per molecule:

item_t_RB = np.dtype([  ('next', np.int64),
                        ('name', 'U20'),
                        ('id', np.int64),
                        ('type_id', np.int64),
                        ('pos', np.float64, (3,)),
                        ('dX', np.float64, (3,)),
                        ('force', np.float64, (3,)),
                        ('torque', np.float64, (3,)),
                        ('topology', np.int64, (50,)),
                        ('topology_N', np.int64),
                        ('q', np.float64, (4,)),
                        ('dq', np.float64, (4,)),
                        ('B', np.float64, (4,4)),
                        ('orientation_quat', np.float64, (3,3)),
                        ('mu_tb', np.float64, (3,3)),
                        ('mu_rb', np.float64, (3,3)),
                        ('mu_tb_sqrt', np.float64, (3,3)),
                        ('mu_rb_sqrt', np.float64, (3,3)),
                        ('Dtrans', np.float64),('Drot', np.float64),
                        ('radius', np.float64),
                        ('loc_id', np.int64),
                        ('compartment', np.int64),
                        ('triangle_id', np.int64),
                        ('pos_last', np.float64, (3,)),
                        ('Theta_t', np.float64, (3,)),
                        ('Theta_r', np.float64, (3,)),
                        ('posL', np.float64, (3,)),
                        ('collision_type', np.int64),
                        ('next_transition', np.float64),
                        ('h', np.int64), ],  align=True)