// fem_bihar2dps_la.java Galerkin FEM biharmonic 4th order // // solve uxxxx(x,y) + 2*uxxyy(x,y) + uyyyy(x,y) = f(x,y) // // f(x,y) := 4*sin(x)*sin(y) // // in the rectangle xmin< x maxerr) maxerr = err; avgerr = avgerr + err; System.out.println("ug["+i+","+ii+"]="+ug[i*ny+ii]+", Ua="+Ua[i*ny+ii]+ ", err="+(ug[i*ny+ii]-Ua[i*ny+ii])); } } System.out.println("xmax="+xmax+", ymax="+ymax+", nx="+nx+ ", ny="+ny+", npx="+npx+", npy="+npy); System.out.println(" maxerr="+maxerr+", avgerr="+ avgerr/(double)(nx*ny)); System.out.println("\n"); } // end fem_bihar2dps_la constructor // PDE problem definition functions f and ub double F(double x, double y) { return 4.0*Math.sin(x)*Math.sin(y); } double ub(double x, double y) { return Math.sin(x)*Math.sin(y); } double galk(double x, double y) { // Galerkin k stiffness function for this problem // solve uxxxx(x,y) + 2*uxxyy(x,y) + uyyyy(x,y) + // 2*uxx(x,y) + 2*uyy(x,y) + 2*u(x,y) = f(x,y) return ( L.phipppp(x,j,nx-1,xg)* L.phi(y,jj,ny-1,yg) + 2.0* L.phipp(x,j,nx-1,xg)* L.phipp(y,jj,ny-1,yg) + L.phi(x,j,nx-1,xg)* L.phipppp(y,jj,ny-1,yg) )* L.phi(x,i,nx-1,xg)* L.phi(y,ii,ny-1,yg); } // end galk used by integration double galf(double x, double y) // Galerkin f function for this problem { return F(x,y)*L.phi(x,i,nx-1,xg)*L.phi(y,ii,ny-1,yg); } // end galf used by integration void write_soln() { try { FileWriter fout = new FileWriter("fem_bihar2dps_la.dat"); BufferedWriter fileout = new BufferedWriter(fout); System.out.println("writing fem_bihar2dps_la.dat"); for(int i=0; i