/* test_nav1_deriv.java */ #include #include #include "nav1.h" #include "nav1_deriv.h" int main(int argc, char* argv[]) { /* PDE definition */ nav1(); /* solution domain */ double xmin = 0.0; double xmax = 1.0; double ymin = 0.0; double ymax = 1.0; double zmin = 0.0; double zmax = 1.0; double tmin = 0.0; double tmax = 1.0; int nx = 5; /* minimum size */ int ny = 5; int nz = 5; int nt = 5; /* working storage */ double xc[81]; /* first derivative coeficients */ double yc[81]; /* including a[]/(b*h) */ double zc[81]; double tc[81]; double xxc[81]; /* second derivative coeficients */ double yyc[81]; /* including a[]/(b*h^2) */ double zzc[81]; double x, y, z, t; int i, j, k, m, ii; double hx, hy, hz, ht; double xd, yd, zd, td; double myd, mydd, navd, navdd; printf("test_nav1_deriv running \n"); test(); /* from nav1_deriv */ hx = (xmax-xmin)/(nx-1); hy = (ymax-ymin)/(ny-1); hz = (zmax-zmin)/(nz-1); ht = (tmax-tmin)/(nt-1); printf("nx=%d, xmin=%6.3f, xmax=%6.3f, hx=%8.6f \n",nx,xmin,xmax,hx); printf("ny=%d, ymin=%6.3f, ymax=%6.3f, hy=%8.6f \n",ny,ymin,ymax,hy); printf("nz=%d, zmin=%6.3f, zmax=%6.3f, hz=%8.6f \n",nz,zmin,zmax,hz); printf("nt=%d, tmin=%6.3f, tmax=%6.3f, ht=%8.6f \n",nt,tmin,tmax,ht); printf("\n"); printf("dx direction \n"); nav1_deriv(1,nx,xmin,xmax,xc); /* set up descrete derivative */ nav1_deriv(2,nx,xmin,xmax,xxc); /* first order, second order, x */ printf("dy direction \n"); nav1_deriv(1,ny,ymin,ymax,yc); nav1_deriv(2,ny,ymin,ymax,yyc); printf("dz direction \n"); nav1_deriv(1,nz,zmin,zmax,zc); nav1_deriv(2,nz,zmin,zmax,zzc); printf("dt direction \n"); nav1_deriv(1,nt,tmin,tmax,tc); /* end setup_deriv */ printf("test du/dx ddu/ddx \n"); y=ymin+hy; z=zmin+hz; t=tmin+ht; for( i=0; i