Virtual Polywell
Given the speed of processor and memory bus, the trade off of space for time makes a lot of sense. Reducing the tables by a factor of 8 is one way of looking at it, the other way is to keep the table size the same but increase the accuracy by a factor of 2 in all directions.
Nice pictures too!! That really helps to understand the symmetry.
Nice pictures too!! That really helps to understand the symmetry.
I tried another approach:
http://www.mare.ee/indrek/ephi/symmetry/intersect.png
http://www.mare.ee/indrek/ephi/symmetry/intersect.gif
Long live POV-Ray and ImageMagick, they're perfect for this kind of stuff.
- Indrek
http://www.mare.ee/indrek/ephi/symmetry/intersect.png
http://www.mare.ee/indrek/ephi/symmetry/intersect.gif
Long live POV-Ray and ImageMagick, they're perfect for this kind of stuff.
- Indrek
Gorgeous! I was trying to figure out the factor of three, but the picture just shows it! Of course!
I guess I'd go for a reduction in file size rather than try to double the point density. I can reduce my file size by a factor of 6, and that will help me to bring both the E and B fields into ram simultaneously.
I think I'll look at brute force particle tracking when I get a chance. trying to solve the stuff analytically is getting a touch thick!
I guess I'd go for a reduction in file size rather than try to double the point density. I can reduce my file size by a factor of 6, and that will help me to bring both the E and B fields into ram simultaneously.
I think I'll look at brute force particle tracking when I get a chance. trying to solve the stuff analytically is getting a touch thick!
I worked out the transformation matrices and the code to do the mapping. You might find it useful:
http://www.mare.ee/indrek/ephi/symmetry ... rs.cpp.txt
- Indrek
http://www.mare.ee/indrek/ephi/symmetry ... rs.cpp.txt
- Indrek
That's right. You just multiply it with a vector to get a transformed vector. See this for more information:
http://en.wikipedia.org/wiki/Transformation_matrix
What I'm doing is, have a point in space, I run it through the cube_polywell_transform() - the function itself already transforms the point, search the field value at the transformed point (only 1/48 of the space now needed), and then finally apply the inversion matrix (the second of the returned pair of matrices) to the field values to transform them to the original point. Works perfectly.
- Indrek
http://en.wikipedia.org/wiki/Transformation_matrix
What I'm doing is, have a point in space, I run it through the cube_polywell_transform() - the function itself already transforms the point, search the field value at the transformed point (only 1/48 of the space now needed), and then finally apply the inversion matrix (the second of the returned pair of matrices) to the field values to transform them to the original point. Works perfectly.
- Indrek
Here's another piece of technology to use: tricubic interpolation. It comes with some implementation overhead but is doable. This website comes with info and code:
http://www.lekien.com/~francois/papers/LeMa05/
Though be careful, the code there is less than efficient, so look only, write your own (I got ~10x speed improvement over the original).
You don't need a big grid with this method. With 80MB grid (52K cells) I get accuracy to 6 digits. With simple one step numeric differentiation that requires about 28 field evaluations per grid cell if one is not to support shared points (so total 1.4M evaluations). Quite a lot so takes a bit over a minute to calculate here
I'll be able to quarter that though once I make it run on all 4 of my CPU cores 
- Indrek
http://www.lekien.com/~francois/papers/LeMa05/
Though be careful, the code there is less than efficient, so look only, write your own (I got ~10x speed improvement over the original).
You don't need a big grid with this method. With 80MB grid (52K cells) I get accuracy to 6 digits. With simple one step numeric differentiation that requires about 28 field evaluations per grid cell if one is not to support shared points (so total 1.4M evaluations). Quite a lot so takes a bit over a minute to calculate here


- Indrek
I made another release, ephi-0.14, this one has tricubic interpolation and sector based data division. See "otree.cpp" for a test application.
http://www.mare.ee/indrek/ephi/#download
- Indrek
http://www.mare.ee/indrek/ephi/#download
- Indrek
Indrek, I've been enjoying the pretty pictures and I'm impressed with your work. As a soon to be physics grad with a long history of software dev, I would be hard pressed to duplicate it.Indrek wrote:I made another release, ephi-0.14, this one has tricubic interpolation and sector based data division. See "otree.cpp" for a test application.
http://www.mare.ee/indrek/ephi/#download
- Indrek
One thing though. Though I have a half dozen (windows based) video player programs & editors, none of them can open polywell.avi.
On a separate note, I'm not entirely following why such high currents (1000A?) are needed thru the coils. Is the goal to create a multi-kilogauss field?