diff --git a/program/source/interpol/interpol.cc b/program/source/interpol/interpol.cc index 06b470c472490a49a545b7874716e4c650b826a9..15722aa4fa473b0da1deb5d39723542a40181481 100644 --- a/program/source/interpol/interpol.cc +++ b/program/source/interpol/interpol.cc @@ -140,17 +140,19 @@ void Interpolate_on_structured_grid::update_Interpolate_on_structured_grid(Block D3vector lam; - + blockgrid = &blockgrid_; + ug = blockgrid->Give_unstructured_grid(); + //Variable<double> coordXYZ(*blockgrid); X_coordinate Xc(blockgrid_); Y_coordinate Yc(blockgrid_); Z_coordinate Zc(blockgrid_); //D3vector pWSD, pENT; - pWSD.x = Minimum(Xc); pWSD.y = Minimum(Yc); pWSD.z = Minimum(Zc); - pENT.x = Maximum(Xc); pENT.y = Maximum(Yc); pENT.z = Maximum(Zc); + Boundary_Marker boundary(ug); + + pWSD.x = Minimum(Xc,boundary); pWSD.y = Minimum(Yc,boundary); pWSD.z = Minimum(Zc,boundary); + pENT.x = Maximum(Xc,boundary); pENT.y = Maximum(Yc,boundary); pENT.z = Maximum(Zc,boundary); - blockgrid = &blockgrid_; - ug = blockgrid->Give_unstructured_grid(); @@ -835,11 +837,17 @@ Interpolate_on_structured_grid::Interpolate_on_structured_grid(int nx_, int ny_, Y_coordinate Yc(blockgrid_); Z_coordinate Zc(blockgrid_); //D3vector pWSD, pENT; - pWSD.x = Minimum(Xc); pWSD.y = Minimum(Yc); pWSD.z = Minimum(Zc); - pENT.x = Maximum(Xc); pENT.y = Maximum(Yc); pENT.z = Maximum(Zc); + // pWSD.x = Minimum(Xc); pWSD.y = Minimum(Yc); pWSD.z = Minimum(Zc); + // pENT.x = Maximum(Xc); pENT.y = Maximum(Yc); pENT.z = Maximum(Zc); blockgrid = &blockgrid_; ug = blockgrid->Give_unstructured_grid(); + + Boundary_Marker boundary(ug); + + pWSD.x = Minimum(Xc,boundary); pWSD.y = Minimum(Yc,boundary); pWSD.z = Minimum(Zc,boundary); + pENT.x = Maximum(Xc,boundary); pENT.y = Maximum(Yc,boundary); pENT.z = Maximum(Zc,boundary); + nx = nx_; ny = ny_; @@ -936,9 +944,15 @@ Interpolate_on_block_grid::Interpolate_on_block_grid(int nx_, int ny_, int nz_, Y_coordinate Yc(*blockgrid_to); Z_coordinate Zc(*blockgrid_to); - pWSD.x = Minimum(Xc); pWSD.y = Minimum(Yc); pWSD.z = Minimum(Zc); - pENT.x = Maximum(Xc); pENT.y = Maximum(Yc); pENT.z = Maximum(Zc); - + //pWSD.x = Minimum(Xc); pWSD.y = Minimum(Yc); pWSD.z = Minimum(Zc); + //pENT.x = Maximum(Xc); pENT.y = Maximum(Yc); pENT.z = Maximum(Zc); + + Boundary_Marker boundary(blockgrid_to->Give_unstructured_grid()); + + pWSD.x = Minimum(Xc,boundary); pWSD.y = Minimum(Yc,boundary); pWSD.z = Minimum(Zc,boundary); + pENT.x = Maximum(Xc,boundary); pENT.y = Maximum(Yc,boundary); pENT.z = Maximum(Zc,boundary); + + interpolatorStructured = new Interpolate_on_structured_grid(nx,ny,nz, pWSD, pENT, *blockgrid_from); data = new double[nx*ny*nz]; @@ -1064,8 +1078,13 @@ PointInterpolator::PointInterpolator(int nx_, int ny_, int nz_, X_coordinate Xc(*blockgrid_from); Y_coordinate Yc(*blockgrid_from); Z_coordinate Zc(*blockgrid_from); - pWSD.x = Minimum(Xc); pWSD.y = Minimum(Yc); pWSD.z = Minimum(Zc); - pENT.x = Maximum(Xc); pENT.y = Maximum(Yc); pENT.z = Maximum(Zc); + //pWSD.x = Minimum(Xc); pWSD.y = Minimum(Yc); pWSD.z = Minimum(Zc); + //pENT.x = Maximum(Xc); pENT.y = Maximum(Yc); pENT.z = Maximum(Zc); + + Boundary_Marker boundary(blockgrid_from->Give_unstructured_grid()); + + pWSD.x = Minimum(Xc,boundary); pWSD.y = Minimum(Yc,boundary); pWSD.z = Minimum(Zc,boundary); + pENT.x = Maximum(Xc,boundary); pENT.y = Maximum(Yc,boundary); pENT.z = Maximum(Zc,boundary); interpolatorStructured = new Interpolate_on_structured_grid(nx,ny,nz, pWSD, pENT, *blockgrid_from, trilinearInterpolation_);