You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Before the electric potential is calculated via SOR, the initial boundary conditions are applied onto the grid
and some constant weights (needed in the SOR) are precalculated. This also happens after each grid refinement.
If there are many objects in the world, e.g. highly pixelated detectors, and the grid becomes finer and finer,
these precalculations actually can take quite some time.
There are some ways to improve this:
Get rid of unnecessary point conversions
The time critical part is the lookup to which object each individual point belongs: the in-method.
Right now, we only parse the grid point in form of the coordinate system of the world, e.g. cylindrical coordinates, to this method. Depending on the geometry of the object, the parsed point might be converted into the other coordinate system, e.g. cartesian. And this several times. We should do this just once and parse the point in both forms to the in methods.
Clustering of objects
Divide the grid in subgrids and add an external additinal loop running over those subgrids (in parallel).
But before executing this loop, all objects should be assigned to all subgrids in which they might be located.
Thus, in each subgrid there are less objects to be checked reducing the calls of in.
This might also be used in order to speed up the charge drift.
The text was updated successfully, but these errors were encountered:
Before the electric potential is calculated via SOR, the initial boundary conditions are applied onto the grid
and some constant weights (needed in the SOR) are precalculated. This also happens after each grid refinement.
If there are many objects in the world, e.g. highly pixelated detectors, and the grid becomes finer and finer,
these precalculations actually can take quite some time.
There are some ways to improve this:
Get rid of unnecessary point conversions
The time critical part is the lookup to which object each individual point belongs: the
in
-method.Right now, we only parse the grid point in form of the coordinate system of the world, e.g. cylindrical coordinates, to this method. Depending on the geometry of the object, the parsed point might be converted into the other coordinate system, e.g. cartesian. And this several times. We should do this just once and parse the point in both forms to the in methods.
Parallize (Improve application of boundary conditions #206)
Right now, no multithreading is used here.
But the loop running over the grid points can be parallized.
Remove allocations in
in
method for larger CSG'sSee Allocations in
pt in CSG
for large CSG's #207Clustering of objects
Divide the grid in subgrids and add an external additinal loop running over those subgrids (in parallel).
But before executing this loop, all objects should be assigned to all subgrids in which they might be located.
Thus, in each subgrid there are less objects to be checked reducing the calls of
in
.This might also be used in order to speed up the charge drift.
The text was updated successfully, but these errors were encountered: