Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Need Help About 2nd Order ABC

Status
Not open for further replies.

Sadabat

Member level 3
Joined
Dec 21, 2005
Messages
65
Helped
3
Reputation
6
Reaction score
3
Trophy points
1,288
Activity points
1,832
My friends I have coppied Fortran code of 2nd order derivation of Mur's ABCs( in Kunz book on page 406) and written it as C code but it does not exactly absorb the waves can anyone help me what should I do, for , the code for the first face is as follows please could you suggest me something or a better book in C not Dennis Sullivans because He uses PML thank for your interest.

void Apply_Absorbing_Boundary_Conditons_On_XY_Plane_1st_Face_(void)
{
/* for( k = 1; k < KE-1; k++ )
{
j = 2;
ez[1][j][k] = ezsx1[2][j][k] + cxd*( ez[2][j][k] - ezsx1[1][j][k] );
ez[IE][j][k] = ezsx1[3][j][k] + cxu*( ez[IE - 1][j][k] - ezsx1[4][j][k] );

j = JE - 1;
ez[1][j][k] = ezsx1[2][j][k] + cxd*(ez[2][j][k]- ezsx1[1][j][k]);
ez[IE][j][k] = ezsx1[3][j][k] + cxu*( ez[IE - 1][j][k]- ezsx1[4][j][k] );
}

for( j = 3; j <= JE - 2; j++ )
{
k = 1;
ez[1][j][k] = ezsx1[2][j][k] + cxd*( ez[2][j][k] - ezsx1[1][j][k]);
ez[IE][j][k] = ezsx1[3][j][k] + cxu*( ez[IE - 1][j][k] - ezsx1[4][j][k]);

k = KE - 1;
ez[1][j][k] = ezsx1[2][j][k] + cxd*( ez[2][j][k] - ezsx1[1][j][k] );
ez[IE][j][k] = ezsx1[3][j][k] + cxu*( ez[IE - 1][j][k] - ezsx1[4][j][k] );
}
*/
for( k = 2; k < KE -1 ; k++ )
for( j = 3; j <= JE - 1; j++ )
{
ez[1][j][k] = -ezsx2[2][j][k] + cxd*( ez[2][j][k] + ezsx2[1][j][k] )
+ cxx*( ezsx1[1][j][k] + ezsx1[2][j][k] )
+ cxfyd*( ezsx1[1][j + 1][k] - 2.*ezsx1[1][j][k] + ezsx1[1][j-1][k]
+ ezsx1[2][j+1][k] - 2.*ezsx1[2][j][k] + ezsx1[2][j-1][k] )
+ cxfzd*( ezsx1[1][j][k+1] - 2.*ezsx1[1][j][k] + ezsx1[1][j][k - 1]
+ ezsx1[2][j][k+1] - 2.*ezsx1[2][j][k] + ezsx1[2][j][k - 1] );

ez[IE][j][k] = -ezsx2[3][j][k] + cxd*( ez[IE-1][j][k] + ezsx2[4][j][k] )
+ cxx*( ezsx1[4][j][k] + ezsx1[3][j][k] )
+ cxfyd*( ezsx1[4][j+1][k] - 2.*ezsx1[4][j][k] + ezsx1[4][j-1][k]
+ ezsx1[3][j+1][k] - 2.*ezsx1[3][j][k] + ezsx1[3][j-1][k] )
+ cxfzd*( ezsx1[4][j][k+1] - 2.*ezsx1[4][j][k] + ezsx1[4][j][k-1]
+ ezsx1[3][j][k+1] - 2.*ezsx1[3][j][k] + ezsx1[3][j][k-1] );
}

for( k = 1; k < KE - 1; k++ )
for( j = 2; j <= JE - 1; j++ )
{
ezsx2[1][j][k] = ezsx1[1][j][k];
ezsx2[2][j][k] = ezsx1[2][j][k];
ezsx2[3][j][k] = ezsx1[3][j][k];
ezsx2[4][j][k] = ezsx1[4][j][k];
ezsx1[1][j][k] = ez[1][j][k];
ezsx1[2][j][k] = ez[2][j][k];
ezsx1[3][j][k] = ez[IE-1][j][k];
ezsx1[4][j][k] = ez[IE][j][k];
}
}
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top