------------------------------------------------------------------------------
| 1911 | |
| 1912 | //------------------------------------------------------------------------------ |
| 1913 | void vtkStructuredAMRGridConnectivity::CoarsenExtent( |
| 1914 | int orient[3], int ndim, int fromLevel, int toLevel, int ext[6]) |
| 1915 | { |
| 1916 | assert("pre: ndim must be either 1, 2 or 3" && (ndim > 0 && ndim <= 3)); |
| 1917 | |
| 1918 | if (this->HasConstantRefinementRatio()) |
| 1919 | { |
| 1920 | assert("pre: invalid constant refinement ratio" && (this->RefinementRatio >= 2)); |
| 1921 | int levelDifference = std::abs(fromLevel - toLevel); |
| 1922 | int ratio = levelDifference * this->RefinementRatio; |
| 1923 | for (int i = 0; i < ndim; ++i) |
| 1924 | { |
| 1925 | int dimIdx = orient[i]; |
| 1926 | ext[dimIdx * 2] /= ratio; |
| 1927 | ext[dimIdx * 2 + 1] /= ratio; |
| 1928 | } // END for all dimensions |
| 1929 | } // END if |
| 1930 | else |
| 1931 | { |
| 1932 | assert("pre: refinement ratios has not been allocated" && |
| 1933 | this->RefinementRatios.size() == this->NumberOfGrids); |
| 1934 | |
| 1935 | for (int l = fromLevel - 1; l >= toLevel; --l) |
| 1936 | { |
| 1937 | int ratio = this->GetRefinementRatioAtLevel(l); |
| 1938 | for (int i = 0; i < ndim; ++i) |
| 1939 | { |
| 1940 | int dimIdx = orient[i]; |
| 1941 | ext[dimIdx * 2] /= ratio; |
| 1942 | ext[dimIdx * 2 + 1] /= ratio; |
| 1943 | } // END for all dimensions |
| 1944 | } // END for each level |
| 1945 | } // END else |
| 1946 | } |
| 1947 | |
| 1948 | //------------------------------------------------------------------------------ |
| 1949 | void vtkStructuredAMRGridConnectivity::GetRefinedExtent( |
no test coverage detected