// test_phiquad2D.java test evaluation of derivatives class test_phiquad2D { test_phiquad2D() { double x, y, up, upp; double xx[] = new double[12]; double yy[] = new double[12]; double u[] = new double[12]; double u2[][] = new double[12][12]; double Q[] = new double[8]; int i, j; double hx=0.15; int nx=10; double hy=0.2; int ny=10; int a1[] = new int[ 5]; int b1[] = new int[ 1]; // first derivative int a2[] = new int[ 9]; int b2[] = new int[ 1]; // second derivative double dx, dxx; double dy, dyy; double dxy; System.out.println("test_phiquad2D.java running"); phiquad2D P = new phiquad2D(); nderiv N = new nderiv(); N.deriv(1, 5, 2, a1, b1); N.deriv(2, 9, 4, a2, b2); x=0.1; for(i=0; i<10; i++) { xx[i]=x; x=x+hx; } y=0.2; for(i=0; i<10; i++) { yy[i]=y; y=y+hy; } Q[0]=0.1; Q[1]=0.2; Q[2]=1.3; Q[3]=0.3; Q[4]=1.4; Q[5]=2.4; Q[6]=0.6; Q[7]=2.3; System.out.println("x1="+Q[0]+", y1="+Q[1]); System.out.println("x2="+Q[2]+", y2="+Q[3]); System.out.println("x3="+Q[4]+", y3="+Q[5]); System.out.println("x4="+Q[6]+", y4="+Q[7]); System.out.println("phi(x1,y1)="+P.phi(Q,Q[0],Q[1])+" should be 1"); System.out.println("phi(x2,y2)="+P.phi(Q,Q[2],Q[3])+" should be 0"); System.out.println("phi(x3,y3)="+P.phi(Q,Q[4],Q[5])+" should be 0"); System.out.println("phi(x4,y4)="+P.phi(Q,Q[6],Q[7])+" should be 0"); for(i=0; i<5; i++) // base phi quad 2D { for(j=0; j<5; j++) { u2[i][j]=P.phi(Q,xx[i],yy[j]); // base phi } } dx=(1.0/(b1[0]*hx))*(a1[0]*u2[0][2]+a1[1]*u2[1][2]+a1[2]*u2[2][2]+ a1[3]*u2[3][2]+a1[4]*u2[4][2]); up=P.phix(Q,xx[2],yy[2]); System.out.println("at x="+xx[2]+", y="+yy[2]); System.out.println("phiquad2D,phix="+up+", dx="+dx+", err="+(up-dx)); dy=(1.0/(b1[0]*hy))*(a1[0]*u2[2][0]+a1[1]*u2[2][1]+a1[2]*u2[2][2]+ a1[3]*u2[2][3]+a1[4]*u2[2][4]); up=P.phiy(Q,xx[2],yy[2]); System.out.println("at x="+xx[2]+", y="+yy[2]); System.out.println("phiquad2D,phiy="+up+", dy="+dy+", err="+(up-dy)); for(i=0; i<9; i++) { for(j=0; j<9; j++) { u2[i][j]=P.phi(Q,xx[i],yy[j]); // base phi } } upp=P.phixx(Q,xx[4],yy[4]); System.out.println("at x="+xx[4]+", y="+yy[4]); dxx=(1.0/(b2[0]*hx*hx))*(a2[0]*u2[0][4]+a2[1]*u2[1][4]+a2[2]*u2[2][4]+ a2[3]*u2[3][4]+a2[4]*u2[4][4]+a2[5]*u2[5][4]+ a2[6]*u2[6][4]+a2[7]*u2[7][4]+a2[8]*u2[8][4]); System.out.println("phiquad2D,phixx="+upp+", dxx="+dxx+", err="+(upp-dxx)); upp=P.phiyy(Q,xx[4],yy[4]); dyy=(1.0/(b2[0]*hy*hy))*(a2[0]*u2[4][0]+a2[1]*u2[4][1]+a2[2]*u2[4][2]+ a2[3]*u2[4][3]+a2[4]*u2[4][4]+a2[5]*u2[4][5]+ a2[6]*u2[4][6]+a2[7]*u2[4][7]+a2[8]*u2[4][8]); System.out.println("at x="+xx[4]+", y="+yy[4]); System.out.println("phiquad2D,phiyy="+upp+", dyy="+dyy+", err="+(upp-dyy)); for(i=0; i<5; i++) { u[i]=(1.0/(b1[0]*hy))*(a1[0]*u2[i][0]+a1[1]*u2[i][1]+a1[2]*u2[i][2]+ a1[3]*u2[i][3]+a1[4]*u2[i][4]); } dxy=(1.0/(b1[0]*hx))*(a1[0]*u[0]+a1[1]*u[1]+a1[2]*u[2]+a1[3]*u[3]+a1[4]*u[4]); up=P.phixy(Q,xx[2],yy[2]); System.out.println("at x="+xx[2]+", y="+yy[2]); System.out.println("phiquad2D,phixy="+up+", dxy="+dxy+", err="+(up-dxy)); } // end test_phiquad2D public static void main (String[] args) { new test_phiquad2D(); } } // end test_phiquad2D class