-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Grid virtual casing #217
base: master
Are you sure you want to change the base?
Grid virtual casing #217
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks quite good to me, thanks for implementing this! Looking forward to seeing the CI results and replies to a few minor comments.
@smiet Could you please also have a look at this? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the latest updates. As far as I can judge without looking at actual runs, the changes look good to me.
Added further performance improvements (MPI Parallelization in addition to OpenMP). Checked correctness of datasharing using Logging on 2 Ranks before and after allreduce
|
Both VC implementations exploit stellerator symmetry now to save 1/2 evaluations |
Grid-virtual-casing implementation didn't compute the surface currents over all field periods, and was incorrect for nfp>1 cases.
…r/SPEC into grid-virtual-casing2
I added an example config for the axysymmetric test case to the CI @jonathanschilling , it runs in about half the time and reaches the same result as the reference implementation (within tolerance). |
|
||
!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-! | ||
! vcintegrand( 4) = - three * vcintegrand(1) * rr(1) / distance(2) ! dBxdx; ! need to divide by distance(3) ; 14 Apr 17; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: indentation
I think, as far as I can tell without much more effort, that this is ready for merging. @jloizu Could you maybe also have a look and potentially try out this new feature on some of the free-boundary SPEC verification cases? |
Trying out the Feature should only require adding |
Addressing issue #32 with a faster virtual casing implementation.
I iteratively increase the resolution to get an estimate of how well the integral has converged, and could adaptively refine the grid until a given epsilon is reached. For now it just prints the error estimate and doesn't terminate if gBnstol isn't reached.
For the rotating ellipse test case at a given accuracy, it is approximately 10x faster than the current implementation (serial performance) and parallelizes trivially across both MPI ranks and OMP threads. Comparing to DCUHRE results at 1e-12 tolerance, the accuracy estimates of the new method seem accurate, and it converges exponentially to the correct result as expected.
Changes to Inputlist
Lvcgrid
was added to choose which virtual casing routine is being used.vcNt
,vcNz
the resolution parameters for the new integration routinePossible improvements