Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6993 Discussions

feature request: 2d and 3d cylindrical poisson solver

ringlenscl_msu_edu
500 Views
2d azimuthally symmetric (r,z) and 3d (r,z,theta) cylindrical poisson solver routines would be a nice addition to the FFT PDE solver routines already in place. These types of geometries are very common in real world problems. Also, a method for specifying internal points with a value would be handy. In the world of electrostatics this is analogous to creating electrodes within the volume and specifying the potentials. This can be achieved by precalculating a capacity matrix. I've coded all of this myself, but a nicely optimized MKL solution would be appreciated.
0 Kudos
8 Replies
Gennady_F_Intel
Moderator
500 Views
2d azimuthally symmetric (r,z) and 3d (r,z,theta) cylindrical poisson solver routines would be a nice addition to the FFT PDE solver routines already in place. These types of geometries are very common in real world problems. Also, a method for specifying internal points with a value would be handy. In the world of electrostatics this is analogous to creating electrodes within the volume and specifying the potentials. This can be achieved by precalculating a capacity matrix. I've coded all of this myself, but a nicely optimized MKL solution would be appreciated.
Hello Ryan,
This is really Feature Request for now ( especially if take into account that
there are Poison Solver for Cartesian and Spherical coordinate systems )

quesion:
it's not clear what do you mean:
... Also, a method for specifying internal points with a value would be handy. ...

Can you provide more details ,, what do you want to have?
should it be the separate routine... any details?
--Gennady



0 Kudos
ringlenscl_msu_edu
500 Views
Hello Ryan,
This is really Feature Request for now ( especially if take into account that
there are Poison Solver for Cartesian and Spherical coordinate systems )

quesion:
it's not clear what do you mean:
... Also, a method for specifying internal points with a value would be handy. ...

Can you provide more details ,, what do you want to have?
should it be the separate routine... any details?
--Gennady



Hi Gennady,
I realize that it's a pretty specialized feature request, but it has many applications in areas such as fluid dynamics in a pipe and charged particle beam transport. Both of these types of systems make use of cylindrical boundary conditions.

In terms of "internal points" it's most easy to consider Coulombic systems where you're solving Poisson's equation. Regardless of what type of domain you have (Cartesian, spherical, cylindrical, etc.) you specify the boundary conditions (or they're determined by the type of transform you employ). Let's say within this domain you want to place an electrode which is held at a given potential. What is required is that the correct amount of charge is assigned to each mesh point which represents your electrode such that when the system is solved the potential on all electrode points is what you had specified. In order to achieve this, it actually requires two iterations of the solving routine. The first solve determines the potential at the electrode points due to the presence of charges within the domain. Then the necessary charge is added to the electrode points which will bring it to the desired potential. The next solve routine is performed and the potential will be correct everywhere.

What must be precalculated is something called a capacitance matrix which contains information on how much charge is induced on all other electrode points if one charge unit is placed on a given electrode point.

Maybe this is too specialized but I thought that I'd throw it out there in case anyone else would find it useful. If so, I can provide information on how to implement it.
0 Kudos
Alexander_K_Intel2
500 Views
Hi Gennady,
I realize that it's a pretty specialized feature request, but it has many applications in areas such as fluid dynamics in a pipe and charged particle beam transport. Both of these types of systems make use of cylindrical boundary conditions.

In terms of "internal points" it's most easy to consider Coulombic systems where you're solving Poisson's equation. Regardless of what type of domain you have (Cartesian, spherical, cylindrical, etc.) you specify the boundary conditions (or they're determined by the type of transform you employ). Let's say within this domain you want to place an electrode which is held at a given potential. What is required is that the correct amount of charge is assigned to each mesh point which represents your electrode such that when the system is solved the potential on all electrode points is what you had specified. In order to achieve this, it actually requires two iterations of the solving routine. The first solve determines the potential at the electrode points due to the presence of charges within the domain. Then the necessary charge is added to the electrode points which will bring it to the desired potential. The next solve routine is performed and the potential will be correct everywhere.

What must be precalculated is something called a capacitance matrix which contains information on how much charge is induced on all other electrode points if one charge unit is placed on a given electrode point.

Maybe this is too specialized but I thought that I'd throw it out there in case anyone else would find it useful. If so, I can provide information on how to implement it.

Hi Ryan,
Thanks a lot for deep definition your problem. Butcould youdesribe another two questions: What type of boundary conditionyou want to use on eachsurface? And what type of grid you need on each dimesion (uniform/nonuniform)?
With best regards,
Alexander Kalinkin
0 Kudos
ringlenscl_msu_edu
500 Views

Hi Ryan,
Thanks a lot for deep definition your problem. Butcould youdesribe another two questions: What type of boundary conditionyou want to use on eachsurface? And what type of grid you need on each dimesion (uniform/nonuniform)?
With best regards,
Alexander Kalinkin
Hi Alexander,
In my case I use Dirichlet boundary conditions on all boundaries in the 3D case. With the 2D case I use Dirichlet at r=Rmax and then either 0 or dphi/dz=0 at z=0=zmax, chosen by the type of transform you use, sine or cosine, respectively. I use nonuniform grids, primarily. Thanks for your attention.

Ryan
0 Kudos
Alexander_K_Intel2
500 Views
Hi Alexander,
In my case I use Dirichlet boundary conditions on all boundaries in the 3D case. With the 2D case I use Dirichlet at r=Rmax and then either 0 or dphi/dz=0 at z=0=zmax, chosen by the type of transform you use, sine or cosine, respectively. I use nonuniform grids, primarily. Thanks for your attention.

Ryan
Hi Ryan,
Are you need nonuniform grid only on one dimension or on several? In first case variables could be separated but not in second so it isfundamentally different problems.
With best regards,
Alexander Kalinkin

0 Kudos
ringlenscl_msu_edu
500 Views
Hi Ryan,
Are you need nonuniform grid only on one dimension or on several? In first case variables could be separated but not in second so it isfundamentally different problems.
With best regards,
Alexander Kalinkin

Hi Alexander,
In the 2D azimuthally symmetric case (r,z), there are only two dimensions so it works there. For the 3D case you can specify the number of grid points in the r,z, and theta directions. By expressing the solution as a truncated Fourier series with respect to theta the problem is reduced to ntheta 2D problems, where ntheta is the number of mesh points chosen for theta. Hopefully that makes sense.

Ryan
0 Kudos
Alexander_K_Intel2
500 Views
Hi Alexander,
In the 2D azimuthally symmetric case (r,z), there are only two dimensions so it works there. For the 3D case you can specify the number of grid points in the r,z, and theta directions. By expressing the solution as a truncated Fourier series with respect to theta the problem is reduced to ntheta 2D problems, where ntheta is the number of mesh points chosen for theta. Hopefully that makes sense.

Ryan
Hi Ryan
Thanks a lot for deep explanation of problem you need to solve so this information will insert in proper Feature Request.
With best regards,
Alexander Kalinkin
0 Kudos
woleakande
Beginner
500 Views

Hi there,

To me your post looks like you need a solver (programmatically) for this project of yours.

I will like to assist if only you can post the equation you want to solve.

Thanks.

0 Kudos
Reply