-
Nicolas CHEVAUGEON authored
xFEM/src/xOctreeGrid.h is a new file. It introduce a octree grid search structure to use in place of the AOMD::octree that was used in xMesh for the locateOctree members functions. It permits to construct an octree search structure on top of a collection of mesh entity. xFEM/src/xRegularGrid.h/cc has been modifyed so that : - it uses the xBoundingBox class. - The member function name have been changed to reflect the camel case convention, common to the rest of the xFEM library. - getElementsForPoint now return a vector of {element, localcoordinate} pair, so that the local coordinate of the target point in each element that contains it is now accessible. - The code have been clarifyed and simplifyed. xBoundingBox.h : - added 2 member function in xBoundingBox : /// return the center of the bounding box xPoint center() const { return (min + max) * 0.5; } /// return a vector from min to max xVector<double> diag() const { return xVector<double>{min, max}; } - Note that following a discussion with A. Salzmann, xBoundingBox could be moved in a near futur to namespace xgeom and the file might be part of a new library (xGeomTools maybe) xFEM/src/xMesh.h/cc has been modifyed so that : - It uses the xBoundingBox class were usefull, implying some interface change : * std::pair<xPoint, xPoint> compute_bounding_box(mEntity* e) is changed to : xBoundingBox compute_bounding_box(const mEntity& e); * void compute_bounding_box(xPoint& min,xPoint& max) const; is "deprecated", but is still there during the transition. it is replaced by : xtensor::xBoundingBox compute_bounding_box() const; - locateElementOctree and locateElement have changed interface, reflecting the changes in xRegularGrid and the use of xOctreeGrid instead of AOMD's octree. - Better control of the search structure in xMesh, since now the octree or the regular grid can both be cleared, updated or accessed by calling respectively xMesh Members createOctree(), clearOctree(), getOctreeGrid(), createGrid(), clearGrid(), getRegularGrid. - The search structure pointers are now managed in a unique_ptr. - xMesh::copyMeshInternal now copy the search structures if needed instead of throwing. - AOMD_SharedInfo.h, autopack.h, OctreeCreate2.h (from AOMD) are not included anymore. xCrack/src/CrackPostpro.cc, xCrack/src/ExportSensors.cc/h, modified so that it reflect the change in xMesh::locateElement xExport/src/xSensors.cc/h : -modified so that it reflect the change in xMesh::locateElement, -Trellis_Util::mPoint replaced by xtensor::xPoint -small changes to simplify the implementation -clang-format first the first time I think. xInterface/xOctree/src/surf2LevelSet.cc/h -modifyed to use xBoundingBox -surface2LevelSet::getBB(xPoint&, xPoint&) is replaced by const xBoundingBox &getBB() const { return BB; } -surface2LevelSet members xPoint BBmin, BBmax are replaced xBoundingBox BB; -a bug was found in the process : In surface2LevelSet::createMeshBBox that create an xMesh out of grid, the grid point coordinate were computed as : double xyz[3] = {BB.min(0) + i * elemSizeX, BB.min(1) + j * elemSizeY, BB.min(2) + k * elemSizeY}; instead of : double xyz[3] = {BB.min(0) + i * elemSizeX, BB.min(1) + j * elemSizeY, BB.min(2) + k * elemSizeZ}; The bug is corrected, but reference of test case xinterface-xoctree-test/surface2LevelSet had to be changed. All modifyed files have been clang-fomated.
22fa74d5