- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hello Sir,

I am trying to solve electrostatic Poisson's equation using Poisson MKL library 'd_Poisson_2D_c.c' but my boundary conditions are periodic (X direction) and fixed in Y direction. How shall i incorporate periodic condition in the X direction ?

I tried in this way but i donot think it is correct,

for( iy = 0; iy <= ny; iy++){

bd_ax[iy] = bd_bx[iy];

}

and applied BCtype='PPDD' .

I am very new in this field. Please help me.

Thanks

Link Copied

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi,

Everything is correct. Moreover, you don't need to describe value of boundary condition on x=ax and x=bx - you set them as periodical so bd_ax and bd_bx have not use in computational.

Thanks,

Alex

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Dear Alex,

Thanks for your reply, but i am not getting it. Do you mean that if i impose the condition 'bd_ax[iy] = bd_bx[iy]', the routine doesnot

at all use this in the computation ? If so, then what kind of value will it take ? Actually it is not clear to me.

sorry for the inconvinience.

Thanks,

Soumya

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi Soumya,

It will use condition like u(i,j) = u(N+i,j) for any i,j. That's mean left edge of square is equal to right one.

Thanks,

Alex

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

I got it..Thanks alot....!!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi,

i have a query. when i am imposing periodic boundary condition do i need to write both the conditions as shown in the manual.

For periodic in X direction i gave bd_ax(iy) = bd_bx(iy)(for iy = 0:ny)

Now do i need to specify the derivative boundary condition also ? if yes how to specify in terms of bd_ax and bd_bx or when i impose bc_type as

'PPDD' it automatically takes care of both the conditions ? Please help.

Thanks,

Soumya

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi

> 'PPDD' automatically takes care of both the conditions - correct

Thanks,

Alex

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi, I am using the d_Helmholtz_2D routine to solve the poisson equation with full Neumann boundary conditions (NNNN). I am sure that the output is correct but the warning message ''The problem is degenerate up to rounding errors! ...'' on screen bothers me. I found in previous forums that one solution is to set ipar(2) equals to zero. I tried it but I didn't work. I realized that the warning message appears after the call of routine d_Helmholtz_2D. If it might help find below an excerpt of the code and the output.

Thanks in advance

%%%%%%%%%%%%%

do i=1,128

ipar(i)=0

enddo

! print*,ipar(2),' setting warning signal'

! Initializing simple data structures of Poisson Library for 2D Poisson Solver

call d_init_Helmholtz_2D(0.D0, sizex, 0.D0, sizey, nx, ny, BCtype, q, ipar, dpar, istat)

print*,ipar(2),' first warning'

ipar(2)=0

if (istat.lt.0) goto 999

! Initializing complex data structures of Poisson Library for 2D Poisson Solver

! NOTE: Right-hand side f may be altered after the Commit step. If you want

! to keep it, you should save it in another memory location!

call d_commit_Helmholtz_2D(f, bd_ax, bd_bx, bd_ay, bd_by, xhandle, ipar, dpar, istat)

print*,ipar(2), ' second warning'

if (istat.lt.0) goto 999

! Computing the approximate solution of 2D Poisson problem

! NOTE: Boundary data stored in the arrays bd_ax, bd_bx, bd_ay, bd_by

! should not be changed between the Commit step and the subsequent call to

! the Solver routine! Otherwise the results may be wrong.

call d_Helmholtz_2D(f, bd_ax, bd_bx, bd_ay, bd_by, xhandle, ipar, dpar, istat)

print*,ipar(2),' third warning'

if (istat.lt.0) goto 999

! Cleaning the memory used by xhandle

call free_Helmholtz_2D(xhandle, ipar, istat)

print*,ipar(2),' fourth warning'

if (istat.lt.0) goto 999

! Now we can use xhandle to solve another 2D Poisson problem

%%%%%%%%%%%%%%%%%%%%%%%%

1 first warning

0 second warning

-------------------------------------------------------------------------------

MKL POISSON LIBRARY WARNING:

The problem is degenerate up to rounding errors! The approximate solution

that provides the minimal Euclidean norm of the solution will be computed...

0 third warning

0 fourth warning

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi,

I see that you use Fortran based code to call Helmholtz solver. In such case set ipar(3) to zero instead of ipar(2)

Thanks,

Alex

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Dear

Alex

Thanks for your reply. I did what you suggested and it worked.

Best regards,

Leonardo

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page