From: Thomas M. <tho...@gm...> - 2009-03-06 18:59:18
|
Hi, I appear to be getting the following bus error and I have tracked it down to my call of the Laplacian2D(P) method but I am not sure what I am doing wrong. The error that I am getting is Process: a.out [5280] Path: ./a.out Identifier: a.out Version: ??? (???) Code Type: X86 (Native) Parent Process: bash [2437] Date/Time: 2009-03-06 12:54:46.466 -0600 OS Version: Mac OS X 10.5.6 (9G55) Report Version: 6 Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000031800 Crashed Thread: 0 Thread 0 Crashed: 0 a.out 0x00006a85 blitz::FastArrayIterator<double, 2>::shift(int, int) + 43 1 a.out 0x00006ae6 blitz::FastArrayIterator<double, 2>::T_numtype blitz::Laplacian2D<blitz::FastArrayIterator<double, 2> >(blitz::FastArrayIterator<double, 2>&) + 78 2 a.out 0x00006bbf blitz::Laplacian2D_et<double, 2>::fastRead(int) + 55 3 a.out 0x00006bfc blitz::_bz_ArrayExpr<blitz::Laplacian2D_et<double, 2> >::fastRead(int) + 24 4 a.out 0x0000c565 blitz::Array<double, 2>& blitz::Array<double, 2 > ::evaluateWithStackTraversalN <blitz::_bz_ArrayExpr<blitz::Laplacian2D_et<double, 2> >, blitz::_bz_update<double, double> >(blitz::_bz_ArrayExpr<blitz::Laplacian2D_et<double, 2> >, blitz::_bz_update<double, double>) + 787 5 a.out 0x0000c85d blitz::Array<double, 2>& blitz::Array<double, 2>::evaluate<blitz::_bz_ArrayExpr<blitz::Laplacian2D_et<double, 2> >, blitz::_bz_update<double, double> >(blitz::_bz_ArrayExpr<blitz::Laplacian2D_et<double, 2> >, blitz::_bz_update<double, double>) + 81 6 a.out 0x0000c8aa blitz::Array<double, 2>& blitz::Array<double, 2>::operator=<blitz::_bz_ArrayExpr<blitz::Laplacian2D_et<double, 2> > >(blitz::ETBase<blitz::_bz_ArrayExpr<blitz::Laplacian2D_et<double, 2> > > const&) + 58 7 a.out 0x000030cd init(blitz::Array<double, 2>&, blitz::Array<double, 2>&, blitz::Array<double, 3>&, blitz::Array<double, 3>&) + 939 8 a.out 0x000036a0 main + 592 9 a.out 0x0000264e start + 54 I'm not sure if any of this is useful but who knows. The offending code appears to be void init(Array<double,2>& c, Array<double,2>& P, Array<double,3>& pStep, Array<double,3>& pPower){ //Defines a 1m^3 domain cout << "e" << endl; Array<double,3> pDiff(2*n+1,N,N); Array<double,2> temp(N,N); cout << "f" << endl; pDiff = 0; temp = 0; spatialStep = 1.0/(N-1); timeStep = .1; //Sets the conductive velocity c = 0.2; //Initial conditions using namespace blitz::tensor; int cr = N/2-1; int cc = 7.0*N/8.0-1.0; float s2 = 64.0*9.0/pow2(N/2); P = exp(-(pow2(i-cr) * s2)); //gaussian pulse cout << "g" << endl; temp = Laplacian2D(P); cout << "h" << endl; pDiff(0, Range::all(), Range::all()) = P; cout << "i" << endl; pDiff(1, Range::all(), Range::all()) = temp; cout << "j" << endl; for(int i = 2; i < n; i++) //Finds the Nth derivitave. Laplacian2D(P), etc { temp = pDiff(i-1,Range::all(),Range::all()); cout << "k" << endl; pDiff(i,Range::all(), Range::all()) = Laplacian2D(temp); } } Where the temp = Laplacian2D(P); is throwing the error. Array<double, 3> pStep(2*n+1,N,N), pPower(2*n+1,N,N); are defined as such. |