ArrayIndexOutOfBound
Hi,
I am running my java code then its giving error " java.lang.ArrayIndexOutOfBoundsException: 6".................can some one help me to solve this problem.
package Chemplace1;
public class Chemplace1 {
private static final float Pwf = 1000;
private static final float Pi = 500;
private static final float u = 500;
static float ans=0,k=1,delr=5; static double delt=1,rw=5;// ***********change**************
static double fie=0.3;
static public float A1(int i) // 1/delr^2
{
ans = 1/(delr*delr);
return(ans);
}
static public float A2(float r[], int i)// ((1/delr^2)+1/(ri*delr))
{
ans = ((1/(delr*delr))+(r*(delr)));
return(ans);
}
static public float A3(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],int i) // krw/meuw +kro/meuo+krg/meug
{
ans = k*((3*(krw+krw[i-1])/(meuw+meuw[i-1]))+(3*(kro+kro[i-1])/(meuo+meuo[i-1]))+(3*(krg+krg[i-1])/(meug+meug[i-1])));
return(ans);
}
static public float A4(float kro[], float meuo[],float krg[], float meug[],int i)// kro/meuo+krg/meug
{
ans = k*((3*(kro+kro[i-1])/(meuo+meuo[i-1]))+(3*(krg
+krg[i-1])/(meug+meug[i-1])));
return(ans);
}
static public float A5(float krg[], float meug[],int i)// krg/meug
{
ans = k*((3*(krg+krg[i-1])/(meug+meug[i-1])));
return(ans);
}
static public float A6(float krw[], float meuw[],int i)// k*krw/meuw
{
ans = k*((3*(krw+krw[i-1])/(meuw+meuw[i-1])));
return(ans);
}
static public float A(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float r[], int i)
{
ans = A2(r, i)*A3(krw, meuw, kro, meuo,krg, meug, i);
return(ans);
}
static public float B(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float r[], int i)
{
ans = A2(r, i)*A3(krw, meuw, kro, meuo,krg, meug, i)+A1(i)*A3(krw, meuw, kro, meuo,krg, meug, i);
return(ans);
}
static float C(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],int i)
{
ans = A1(i)*A3(krw, meuw, kro, meuo,krg, meug, i);
return(ans);
}
static float D1(float kro[], float meuo[],float krg[], float meug[],float r[], int i)
{
ans = A2(r, i)*A4(kro, meuo,krg, meug, i);
return(ans);
}
static float D2( float kro[], float meuo[],float krg[], float meug[],float r[], int i)
{
ans = A2(r, i)*A4(kro, meuo,krg, meug, i)+A1(i)+A4(kro, meuo,krg, meug, i);
return(ans);
}
static float D3(float kro[], float meuo[],float krg[], float meug[],int i)
{
ans = A1(i)*A4(kro, meuo,krg, meug, i);
return(ans);
}
static float D4(float krg[], float meug[],float r[], int i)
{
ans = A2(r, i)*A5(krg, meug, i);
return(ans);
}
static float D5(float krg[], float meug[],float r[], int i)
{
ans = A2(r, i)+A1(i)*A5(krg, meug, i);
return(ans);
}
static float D6(float krg[], float meug[],int i)
{
ans= A1(i)*A5(krg, meug,i);
return(ans);
}
static float fn_c_mat(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float A1,float A2,float A3,float A4,float A5,float A, float B, float C, float r[], float pw[], int i)
{
ans = A(krw, meuw,kro, meuo, krg, meug, r, i)*pw[i-1]-B(krw, meuw,kro, meuo, krg, meug, r, i)*pw+C(krw, meuw,kro, meuo, krg, meug,i)*pw[i-1];
return(ans);
}
static float fn_sub_dia(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float r[], int i)
{
ans = A(krw, meuw,kro, meuo, krg, meug, r, i);
return(ans);
}
static float fn_dia(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float r[], int i)
{
ans = B(krw, meuw,kro, meuo, krg, meug, r, i);
return(ans);
}
static float fn_sup_dia(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],int i)
{
ans = C(krw, meuw,kro, meuo, krg, meug, i);
return(ans);
}
static float fn_rhs(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float pco[], float pcg[],float r[], int i)
{
if (i==1)
ans = u-(D1(kro, meuo, krg, meug, r, i)*pco[i+1]+D2(kro, meuo, krg, meug, r, i)*pco+D3(kro, meuo, krg, meug, i)*pco[i-1]+D4(krg, meug, r, i)*pcg[i+1]+D5( krg, meug,r,i)*pcg+D6(krw, meuw, i)*pcg[i-1]);
else
ans = -(D1(kro, meuo, krg, meug, r, i)*pco[i+1]+D2(kro, meuo, krg, meug, r, i)*pco+D3(kro, meuo, krg, meug, i)*pco[i-1]+D4(krg, meug, r, i)*pcg[i+1]+D5( krg, meug,r,i)*pcg+D6(krw, meuw, i)*pcg[i-1]);
return(ans);
}
static float ta_dia(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float r[], int i)
{
ans = fn_dia(krw, meuw,kro, meuo, krg, meug, r, i)-( fn_sub_dia(krw, meuw,kro, meuo, krg, meug, r, i)/fn_dia(krw, meuw,kro, meuo, krg, meug, r, i-1) *fn_sup_dia(krw, meuw,kro, meuo, krg, meug, i-1));
return(ans);
}
static float ta_rhs(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float pco[], float pcg[], float r[], int i)
{
ans = fn_rhs(krw, meuw,kro, meuo, krg, meug, pco,pcg, r, i)-( fn_sub_dia(krw, meuw,kro, meuo, krg, meug, r, i)/fn_dia(krw, meuw,kro, meuo, krg, meug, r, i-1)*fn_rhs(krw, meuw,kro, meuo, krg, meug, pco,pcg, r, i-1));
return(ans);
}
static float back_substn(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float ta_rhs[],float pco[],float pcg[], float pw[],float r[], int i)
{
ans = (ta_rhs(krw, meuw,kro, meuo, krg, meug, pco,pcg, r, i)-fn_sup_dia(krw, meuw,kro, meuo, krg, meug, i)*pw[i+1])/ta_dia(krw, meuw,kro, meuo, krg, meug, r, i);
return(ans);
}
static float sw(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float ta_rhs[],float pw[],float sw[],float r[],int i)
{
ans = sw+(float)((delt/fie)*(A2(r, i)*A6(krw,meuw, i)*pw[i+1]-(A2(r, i)*A6(krw,meuw, i)-A1(i)*A6(krw,meuw, i))*pw+A1(i)*A6(krw,meuw, i)*pw[i-1]));
return(ans);
}
static float krw(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float ta_rhs[],float pw[],float sw[],float r[],int i)
{
ans = sw(krw,meuw,kro,meuo,krg,meug,ta_rhs,pw,sw,r,i)*sw(krw,meuw,kro,meuo,krg,meug,ta_rhs,pw,sw,r,i);
return(ans);
}
static float kro(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float ta_rhs[],float pw[],float sw[],float r[],int i)
{
ans = (1-sw(krw,meuw,kro,meuo,krg,meug,ta_rhs,pw,sw,r,i))*(1-sw(krw,meuw,kro,meuo,krg,meug,ta_rhs,pw,sw,r,i));
return(ans);
}
static float krg(float krw[], float meuw[],float kro[], float meuo[],float krg[], float meug[],float ta_rhs[],float pw[],float r[],int i)
{
ans = 0;
return(ans);
}
static float pco(float sw[],int i)
{
ans = 0;
return(ans);
}
static float pcg(float sw[],int i)
{
ans = 0;
return(ans);
}
static float meuw(float r[],int i)
{
ans = 1;
return(ans);
}
static float meuo(float r[],int i)
{
ans = 1;
return(ans);
}
static float meug(float r[],int i)
{
ans = 1;
return(ans);
}
static float r(float rw, int i)
{
ans = rw +i*delr;
return(ans);
}
//--//
//--//
//--//
// Lid Driven Cavity problem
public static void main(String[] args) {
int i,i_max=5, NI=i_max+1;
//float ome_err_sum, max_ome_err,nt;
//float A1(),A2(),A3(),A4(),A5(),A(),B(),C(),D1(),D2(),D3(),D4(),D5(),D6(),fn_c_mat(),fn_sub_dia(),fn_dia(),fn_sup_dia(),ta_dia(),
//ta_c(),back_substn();
//FILE *p1,*p2,*p3,*p4,*p25,*p26,*p27,*p28,*p9,*p10,*p11,*p12,*p13,*p55;
//Object p1 = fopen("ugc.data","w");
//Object p2 = fopen("shi.plt","w");
//Object p3 = fopen("omega.plt","w");
//Object p4 = fopen("uv.plt","w");
//Object p13 = fopen("grid.plt","w");
//Object p55=fopen("domain.data","w");
float[] sw = new float[6];
//- Initial guess values //
float[]krw = new float[6];float[] pw = new float[6];float[]r = new float[6];float[] kro = new float[6] ; float[]krg = new float[6];float[]meuw = new float[6];float[]meuo = new float[6];float[]meug = new float[6];float[]pco = new float[6];float[]pcg = new float[6];float[]C = new float[6];float[]sub_dia = new float[6];float[]dia = new float[6];float[]sup_dia = new float[6];float[]fn_rhs = new float[6];
/*for(i=1;i<=NI;i++)
{
pw = 0;
sw =0;
krw = 0;
kro =0;
krg= 0;
meuw=1;
meuo=1;
meug=1;
pco=0;
pcg=0;
}
*/
//- Solution -//
float nt=1,sum_ome_err=0;
do
{
if(nt*delt>=10.0)//********************change***************
break;
//- pw at Boundaries //
for(i=1;i<=NI;i++)
{
//float temp = pw;
if (i==1)
pw = Pwf;// Left wall
if (i==NI)
pw = Pi; // Right wall
krw=(float) 0.1;
kro=(float) 0.1;
krg=0;
pco=0;
pcg=0;
//sum_ome_err = (float) (sum_ome_err+(pw-temp));
}
for(i=0;i<=i_max;i++)
{
r=r((float) rw,i);
}
// Tri - Diagonal matrix //
for(i=1;i<=NI-3;i++)
sub_dia= fn_sub_dia(krw,meuw,kro,meuo,krg,meug,r,i);//sub-diagonal
for(i=1;i<=NI-2;i++)
dia= fn_dia(krw, meuw,kro,meuo,krg,meug,r,i);//diagonal
for(i=1;i<=NI-3;i++)
sup_dia= fn_sup_dia(krw, meuw,kro,meuo,krg,meug,i);//super diagonal
for(i=1;i<=NI-2;i++)
fn_rhs= fn_rhs(krw, meuw,kro,meuo,krg,meug,pco,pcg,r,i);//rhs
///- end of TDM -//
for(i=2;i<=NI-2;i++)
{
dia = ta_dia(krw, meuw,kro,meuo,krg,meug,r,i);// diagonal
}
for(i=2;i<=NI-2;i++)
{
C = ta_rhs(krw, meuw,kro, meuo,krg,meug,pco,pcg,r,i);// RHS known values
}
System.out.println("ram");
//-- Solution - Back substitution -//
for(i=NI-2;i>=1;i--)
pw[i+1] = back_substn(krw, meuw,kro, meuo,krg,meug,C,pco,pcg,pw,r,i);
// end Ist step of ADI 'for' loop ie. 'j' rows sweep (NI-2) times
for(i=NI-2;i<=1;i--)
{
sw[i+1] =sw(krw, meuw,kro, meuo,krg,meug,C,pw,sw,r,i) ;
krw[i+1]=sw*sw;
kro[i+1]=(1-sw)*(1-sw);
krg=0;
pco=0;
pcg=0;
}
// velcoity vectors//
/*
for(i=NI-2;i<=1;i--)
sw[i+1] =sw(krw, meuw,kro, meuo,krg,meug,ta_rhs,pw,sw,r,i) ;
*/
//-//
System.out.println(sum_ome_err);
if( nt>40&&nt % 51==1)
{
//p2 = fopen("shi.plt","w");
// stream function -'shi.plt'
//fprintf(p2,"VARIABLES=\"X\",",\"S\"\nZONE T =BLOCK1 I=%d,J=%d,F=POINT\n",NI);
for(i=1;i<=NI;i++)
{
//fprintf(p2,"%f\t%f\t%f\n",x[i-1],y[j-1],sw);
}
//Object p25 = fopen("inputshi.data","w");
//Object p26 = fopen("inputome.data","w");
//Object p27 = fopen("inputu.data","w");
//Object p28 = fopen("inputv.data","w");
for(i=1;i<=NI;i++)
{
System.out.println(pw);
//fprintf(p25,"%f\t",pw);
//fprintf(p26,"%f\t",r);
//fprintf(p27,"%f\t",Sw);
//fprintf(p28,"%f\t",vol);
}
//fclose(p25);
//fclose(p26);
//fclose(p27);
//fclose(p28);
//fclose(p2);
}
// End of one time step calculations --//
nt=nt+1;
}while(nt>=5);//nt<=ntime&&prk!=1);// pseudo transient time step - total time step
////
//Results //
//printf("\nn=%d\t shi_min=%f\tRe=%f\nnj=%d,ni=%d\ndely=%f\tdelx=%f\tstep=%d\n",n,shi_max,Re,NJ,NI,dely,delx,step);
//--Geometric centre line u- velocity and v - velocity //
// vorticity - 'pw.plt'
}
}

