1. 09 Dec, 2020 2 commits
  2. 13 Nov, 2020 1 commit
  3. 10 Nov, 2020 2 commits
    • Nicolas CHEVAUGEON's avatar
      [xFEM] xBoundary.h/cc are moved to xFEM/src/attic · 5c4579b3
      Nicolas CHEVAUGEON authored
      class xBoundary was only used as a parameter to some
      Mechanics::TreatmentOfNatEnv that was never actually used and which was
      passed around via a member of xData. It is nothing more than an early
      implementation of xSubMesh that was passed around via cut and past for a
      long time ... Therefore, xBoundary is now made obsolete and the files
      xBoundary.h/cc are moved to xFEM/src/attic.
      
      all its' use will be removed from xTest.
      
      Note : My first clang-format related bug.
      The file xDistanceNearestPointGenerator.h need to be included before
      xDistanceNearestPoint.h, otherwise some test case can't compile !!! indeed,
      it add some overload to cgal AABBPrimitive that needs to be visible for
      template instanciation that can take place via  xDistanceNearestPoint.h.
      But clang-format messed around and I had to force the inclusion of xDistanceNearestPointGenerator.h before xDistanceNearestPoint.h, by including it at the
      beginning of xDistanceNearestPoint.h, and preventing clang-format to reorder
      the include by inserting some comment.
      5c4579b3
    • Nicolas CHEVAUGEON's avatar
      m] library xGeomTools added · bc14d18b
      Nicolas CHEVAUGEON authored
      Main changes :
      - A new library xGeomTools is added in xGeom.
        *This library is meant to collect "simple" geometrical classes/functions.
         By "simple" we mean that they dependent only on xtensor, and xtool.
        *All the classes and functions of xGeomTools are in namespace xgeom.
        *For this commit it contains :
         xBoundingBox.h/cc, xOctreeGrid.h, xRegularGrid.h/cc, xSimpleGeometry.h,
         moved from xTensor or xFEM.
        *Previous library xGeom is split in two libraries : xDistanceNearest and
         xScanElement in respectivevly xGeom/xDistanceNearest
         and xGeom/xScanElement,
        *The old xGeom library do not exist any more.
        *Note that the 3 libraries contained in directory xGeom populate
         the namespace xGeom.
        *Global build option BUILD_XGEOM is removed.
        *Global build option BUILD_XGEOMTOOLS, BUILD_XDISTANCENEAREST,
          BUILD_XSCANELEMENT are added.
        *xGeom/CMakeLists.txt is removed
        *xUTil/cmakeUtil :
         FindxGeomTools.cmake, FindxDistanceNearest.cmake, FindxScanElement.cmake
         added, FindxGeom.cmake is removed.
        *xAnalyticalSolution, xCrack, xDoubleCut, xLegacySimpleCut, xDomainDecomp,
         xExport, xExt, xFEM, xInterfaceAOMD, xMeshInterface, xOctree, xMapping,
         xTLS, now depend on  xGeomTools.
        *xOctree and xTLS now depends on xDistanceNearest
      - xBoundingBox :
        *added member functions  inclose(), now used in xMesh, xSubMesh
        and xLagrangeMapping.
        *added default constructor and constructor for 2 xPoint.
        *default constructor now build an  empty "bb"  by havinh min(i) > max (i)
      - xRegularGrid : dependencies to xMesh are removed.
      - xMesh.h :  part of previous xOctreeGrid that was dependent of xMesh are
        no directly implemented in xMesh. (see xMesh::createGrid() and
        xMesh::locateElement)
      
      Miscanelous changes along the way (removing useless dependencies)
      - xValue.cc : removed "useless" inclusions of "xApproxFunction.h",
        "xField.h", "xLevelSet.h", "xSpacePolynomial.h", "xTensors.h",
        "xTensorsPtr.h" "xVector.h" as well as useless using AOMD::mEdge
        and using AOMD::mEntity.
      - xValue.h : removed useless inclusions of  <set>,
        <boost/graph/adjacency_list.hpp>, <boost/graph/connected_components.hpp>,
        "xTensorsPtr.h", "xDebug.h", "xNearestNeighborInterface.h"
      - xValue_imp.h : removed useless includes "mEdge.h" and "xGeomeElem.h"
      - xValueManager.h - removed dependencies to xMesh.
      - some of AOMD include cascading in other files because of the previous
        removed inclusion were putting std::string in global namespace.
        std::string is now added in the following files :
        std::string xExport.h, xExportEnsight, xExportGmsh.h
        xExportTranslate.cc/h, xField.h, xFEM/src/xSpacePolynomial.h.
      - xData.cc inside void xData::ReadInfo(const char *filename),
        unused variable xBoundary crvboundary; is removed.
      - all modified and added files are clang-formatted.
      bc14d18b
  4. 06 Nov, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xFEM, xMapping] xGeomElem code is simplifyed mostlty by using improved xMapping interface. · b71ddff8
      Nicolas CHEVAUGEON authored
      xGeomElem code is simplifyed (and improved ?) in the following way :
      
      - All the members now have version with the correct camelCase style. The old version are kept (for example GetDetJac is "cloned" to getDetJac), but are marked as "deprecated" in the their doxygen documentation. I tryed to use the [[deprecated]] attribute on them but unfortunatly, it's c++14 and we still can't use this version of the standard. I kept all the old version there since xGeomElem is used all over the places, but I would like to remove them in a near future ...
      
      - xBoundingBox xGeomElem::getBoundingBox() const take the place of void xGeomElem::GetBoundingBox(xtensor::xPoint& min, xtensor::xPoint& max) const.
      
      - The implementation take advantages of improved interface to xMapping.h
        for example :
        xtensor::xPoint xGeomElem ::getCDGxyz() const
        {
         double u, v, w, x, y, z;
         mapping->COG(u, v, w);
         mapping->eval(u, v, w, x, y, z);
         return xtensor::xPoint(x, y, z);
        }
        is replaced by
        xtensor::xPoint xGeomElem::getCDGxyz() const { return mapping->eval(mapping->COG()); }
        and
        void xGeomElem::setUVWForVertex(int inod) which was almost 200 lines
        is replaced by
        void xGeomElem ::setUVWForVertex(int inod) { uvw = mapping->getMappingVertex(inod); }
        where mapping->getMappingVertex(inod); just return data that where already in xMapping.
      
      - setting/clearing  the mapping or integrator members of the class was complicated because we have to keep track of differents life  time for  these pointers depending if they where defaulty allocated or pass by the user and eventulaly shared by differents
        xGeomElem. This is now simplifyed using a unique_ptr and classic ptr, allowing to use the implicitly declared destructor for
        xGEomElem.
        This pave the way for better mapping management in the  futur (I'm thinking of high order mapping that would be expensive
        to construct, that we might wan't to store in the builder ...)
      
      - we now have move constructor, move assignment and swap for xGeomElem, making them more usable in standard containers.
      
      Note on xGeomElem :
       - I think set/getOrientation are not very usefull, probably bug prone, and I think they should be removed.
       - I'm not sure we still need the integrator to be included in the xGeomElem, Integration behing performed in most cases using an
         xIntegrationRule  and xCommandOnGeomElem that could set directly the current point instead of setting it using both xGeomElem::setIntegrationPointNumberForDegree and xGeomElem::setUVW(int ipt)
      
      4 access functions have been added in class xMapping to access data that where already there, but not accessible outside xMapping.cc :
         -size_t getNbMappingVertices() const;
         -xtensor::xPoint getMappingVertex(size_t i) const;
         -static size_t getNbMappingVertices(xReferenceElementType type);
         -static xtensor::xPoint getMappingVertex(xReferenceElementType type, size_t i);
      b71ddff8
  5. 05 Nov, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xFEM/test] added 2 atomic test for 3d search structure · a7cd5a68
      Nicolas CHEVAUGEON authored
      First, I added a test directory inside xFEM for xFEM Atomic test that was missing. (As usual Atomic test means that the test do not need other library that the current tested library dependencies)
      A new Build option is added, corresponding to the xFEM Atomic test  : BUILD_XFEM_TEST. It must be set to ON in your parent CMakeFiles.txt for this test to be builded, thanks to the Xfiles/CMakeLists.txt that will add the subdirectory xFEM/test to the build if BUILD_XFEM_TEST is set to ON
      
      In xFEM/test I added two tests cases :
      testxOctreeGrid and testxRegularGrid, along with there references.
      
      Some other tests from in Xtest/xfem-seq-test for example could also be moved here.
      a7cd5a68
  6. 04 Nov, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [XFEM, xExport, xInterface/xOctree] dependences to AOMD's octree is removed and related changes. · 22fa74d5
      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
  7. 03 Nov, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xMapping] adding some virtual member to xMapping. · 661796b4
      Nicolas CHEVAUGEON authored
      xMapping now include xTensor/src/xBoundingBox.
      
      The following virtual member function of xMapping have been added.
      They all have default implementation in terms of the one existing before.
      They mostly simplify code when using them, and do not need to be implemented i
      in derived class (but could for optimization purpose)
      
       virtual xtensor::xPoint eval(const xtensor::xPoint &uvw) const;
       virtual tensor deval(const xtensor::xPoint &uvw) const;
       virtual bool invert(const xtensor::xPoint &xyz, xtensor::xPoint &uvw) const;
       virtual double jacInverse(const xtensor::xPoint &uvw, tensor &invjac) const;
       virtual double detJac(const xtensor::xPoint &uvw) const;
       virtual bool inReferenceElement(const xtensor::xPoint &uvw) const;
       virtual xtensor::xPoint COG() const;
       virtual double pushBack(const xtensor::xPoint &uvw, size_t vsize, vector3d *vec) const;
       virtual double pushBack(const xtensor::xPoint &uvw, std::vector<vector3d> &vec) const;
       virtual double pushBack(const xtensor::xPoint &uvw, size_t vsize, tensor *tens) const;
       virtual xtensor::xBoundingBox boundingBox() const;
      
      interface change in xMapping :
          virtual bool interiorCheck(const xtensor::xPoint &p, double u, double v, double w) const; changed to virtual bool interiorCheck(const xtensor::xPoint &p, xtensor::xPoint &uvw) const;
      
       Modified files :
         xMapping/src/xMapping.cc
         xMapping/src/xMapping.h
      
       and
         xFEM/src/xRegularGrid.cc
         modified to reflect xMapping::interiorCheck interface change
      661796b4
  8. 05 Oct, 2020 3 commits
    • Alexis SALZMAN's avatar
      [xFEM] a priori performance enhancement of xfieldStorageFull · d26022a1
      Alexis SALZMAN authored
      This commit remove usage of AOMD EntityHashKey and EntityEqualKey for unordered_map
      container. Using default hash and equalkey based on address (the key is a
      pointer) is a priori more efficient.
      d26022a1
    • Alexis SALZMAN's avatar
      [xFEM] hopefully simplifying xMesh source · 62dcf4fb
      Alexis SALZMAN authored
      Has we are in the middle of a big change the modify state stuff were
      appearing in xMesh despite their AOMD nature. To simplify, comments are
      removed and  xinterface::aomd::modifyAllState function is use in replacement
      of the ugly set of  12 calls to modifyState method. This will certainly
      disappear in the future
      
      Remove comment regarding printMesh/printEntity. A future commit will
      bring them back alive.
      62dcf4fb
    • Alexis SALZMAN's avatar
      Xfiles] miscellaneous change related to warnings · 953b8f8d
      Alexis SALZMAN authored
      Changes are:
        * unused variable
        * wrong order for explicit member creation
        * wrong sign comparison
        * change int to size_t
        * virtual destructor addition to avoid in future a possible memory leek
      953b8f8d
  9. 28 Sep, 2020 4 commits
  10. 17 Sep, 2020 1 commit
    • Alexis SALZMAN's avatar
      [xFEM,xCut] remove AOMD dependancy and friend to xSupportComponent class · 5f4ffd7b
      Alexis SALZMAN authored
      In this commit xSupportComponent is no longer derived from attachable
      model of AOMD. This make it more general.
      
      In the same spirit the friend class xPhysDomain is removed. It was
      intended to avoid some component creation in instance of
      xSupportComponent by anything but xPhysDomain. Now the method is made
      public and  xSupportComponent instance can be modified.
      
      As this class is a key feature of future mesh tool chain this
      generalization was mandatory to fit to : A block of the tool chain
      provide a service to access support component via a functor that return
      const xSupportComponent.
      
      This functor type is now given by xSupportComponent.h header.(TODO
      must replace some typdef in xDoubleCut)
      
      xDoubleCut has to be modified accordingly. Now in xPhysDomain class
      use of tag for xSupportComponent is replaced by
      xAttachedDataManagerAOMDGeneric mechanism. Not that knowsupportcomponent
      member is suppressed and its action treated via the new usage of
      xAttachedDataManagerAOMDGeneric.
      Note also that update with change of definition is now dealing
      correctly with support (see dom5 in disk example which is now cleanly
      updated)
      5f4ffd7b
  11. 16 Sep, 2020 2 commits
    • Alexis SALZMAN's avatar
      [xFEM] add security to avoid potential memory leek in xData · 5d11f62f
      Alexis SALZMAN authored
      One recent commit change 'mesh' data member access of class xData. It is now
      a private member. Two get/set methods were added to access to this pointer.
      But if we read with xData a mesh from a file and choose afterword to  use setMesh
      method to reassign the 'mesh' pointer to a new mesh instance user had to
      pay attention to the way he treat memory allocated done during first read from file.
      If he did want to avoid potential memory leak he had to call the getMesh
      method and with the return pointer free memory, all this before calling setMesh ...
      
      This commit choose to add a state to xData to say if the 'mesh' data
      member point to a memory maintained by xData or not. A new delMesh
      method is then in charge of freeing memory pointed by 'mesh' pointer only if
      this memory was allocated by xData. This function is called in setMesh
      to avoid memory leek. It is also called in destructor to avoid to free memory
      allocated by user (double free error). And it is made public to offer a
      simple way to free memory allocated by xData if any.
      
      Hop this make things more clear to user. For sure it is not ideal for
      thread safety ...
      5d11f62f
    • Gilles MARCKMANN's avatar
      Remove last reference to Trellis_Util::LagrangeMapping in xFEM and change it... · bd464931
      Gilles MARCKMANN authored
      Remove last reference to Trellis_Util::LagrangeMapping in xFEM and change it in xmapping::xLagrangeMapping.
      bd464931
  12. 09 Sep, 2020 1 commit
  13. 01 Sep, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [Xfiles] removing using xxx in global namespace in headers. · af6f2b76
      Nicolas CHEVAUGEON authored
          - lot of using std or using xfem or using std::string etc ..  were still present in global namespace in some header. Following a discussion with A. Salzman, I removed most of them.
      
          - In the transition from mPoint to xPoint, Some using point = xtensor::xPoint were defined inside some class (xMapping, xElementfor example... ). They were identifyed as confusing by A. Salzman and are now removed.
      
          Most of the changes in this commit reflect the previous change. The guideline is to avoid hiding namespace at least at global scope in header-file. This can avoid some confusion and some surprising and hard to track effects where some stuff compil or not depending on the order of inclusion of header files.
      af6f2b76
  14. 22 Jul, 2020 2 commits
  15. 14 Jul, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xfem] xExtendShapeFcts : some aomd tagging removed · 13337f62
      Nicolas CHEVAUGEON authored
          xExtendShapeGeneratorBase now use a DATAMAMANAGER to store the
          xExtendShapeFcts instead of AOMD tag mechanism.
      
          since there is no tag to associated to xExtendShapeFcts, getTag() member is removed and replaced by : getExtendedShapeFcts
      
          xExtendShapeGeneratorBase is not template any more on typename ITERFRONT since
          this type was only used by the constructor. Only the constructor is
          template ont ITERFRONT.
      
          consequence of the above implyied slight changes in xSpaceExtendedShape.cc/h
          and TLSVelocity.h/_imp.h xApproxFunctionExtendedShape.h
      
          xFEM/src/xAttachableExtendShapeFcts.h is not used any more and moved to attic.
      13337f62
  16. 13 Jul, 2020 1 commit
  17. 02 Jul, 2020 1 commit
  18. 01 Jul, 2020 1 commit
  19. 30 Jun, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xfem] About xMesh::del · 746332b0
      Nicolas CHEVAUGEON authored
      When changing xMesh from a derived class of mMesh to a class containing an mMesh,
      the fact that void xMesh::del(AOMD::mEntity *pe) was an overload was overlooked.
      mMesh::DEL(AOMD::mEntity *pe) call the del virtual function. Since xMesh is not derived from mMesh any more xMesh's del is not called any more when calling DEL on an mMesh pointer or reference.
      
      To avoid the ambiguity, I removed the del function from xMesh. Whenever one want to DEL a mEntity from a mMesh embedded in an xMesh, one should first call clear(pe) on the xMesh to make sure all the data belonging to the xMesh and associated to pe are cleared.
      
      This change have been implemented where needed in the library. It fix the issue with test case simple_use_xphysurfCutDom.
      746332b0
  20. 25 Jun, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xmapping] made fully independent from Trellis · 23c79dc2
      Nicolas CHEVAUGEON authored
      xmapping now have it's own enum type xReferenceElementType defined in
      xReferenceElement. It is there to replace Trellis mType inside xMapping.
      The xMappingBuilder are moved to xfem. Rational : The builder work on
      mEntity that are not supposed to be known by mapping.
      This being done the only dependencie left in xMapping is the dependecies to
      xtensor.
      
      a function is added in xAOMDEntityUtil.h to get the xReferenceElement from
      the mEntity, as well as conversion fonction from xReferenceElement to
      mType. In the current version of the library, this function is only used
      in xfiles to create  a Trellis_Util::GausIntegrator out of a xMapping.
      Therefore these conversion function might become useless when we make
      our own Trellis free Integrator.
      
      Most of the other change in this commit are consequencies of the above.
      Small other minor change are listed below :
      
      -xfiles_dependence.dot has been updated with xmapping dependencies.
      -delete mapping added in xElement::xyz2uvw ...
       this was missing and was causing a memory leak.
        (Note : It might be better for the builder to return smart pointer to
        mapping instead of newed pointer ... )
      - xTensor2 semi-colon were removed where it was useless and issued a warning.
      - xVector : copy assignement added. Rational : since we have a no default copy
        constructor, a default copy assignement is deprecated in the standard
        according to gcc
      23c79dc2
  21. 17 Jun, 2020 2 commits
    • Nicolas CHEVAUGEON's avatar
      [xmapping] xmapping now use xtensor::xPoint instead of Trellis_Util::mPoint · a4f93f74
      Nicolas CHEVAUGEON authored
           Reducing again the deps of mapping to Trellis, Trellis_Util::mPoint is replaced by  xtensor::xPoint in xmapping.
           xMapping/src/xMapping.h do not include mPoint.h anymore.
      
          consequences outside xmapping :
          - xCrack/src/SingularCrackMapping.cc : SingularCrackMapping : member bounding box now take xtensor::xpoint as outpout parameter.
          - xFEM/src/xGeomElem.cc : now include "xPoint.h". xGeomElem Member GetBoundingBox corrected to call xmapping's bounding box using xtensor::xPoint.
          - xInterface/AOMD/general/src/xAOMDEntityUtil.h now include xPoint.h.
             function getPoint signature changed to std::vector<xtensor::xPoint> getPoints(const AOMD::mEntity &e).
      a4f93f74
    • Nicolas CHEVAUGEON's avatar
      [xmapping] xmapping now use xtensor::xVector<> and xtensor::xTensor2<> · 05482f34
      Nicolas CHEVAUGEON authored
          up to now, xmapping was using Trellis_Util::mVector and Trellis_Util::mTensor2.
          This commit change that to further reduce it's dependencies to Trellis, and replace them with xtensor::xVector<> and xtensor::xTensor2<>.
          implyed changes in xmapping :
          - FEM/src/xMapping.h : do not include mTensor2.h and mVector.h any more.
          - xMapping/test/testxLagrangeMapping/main.cc : a binary operator - for mTensor2 was implemented to facilitate the tests. This operator already exist for xTensor2<> and is removed from this main.
      
          Implyed or other changes outside of xmapping :
          - xCut/xLegacySimpleCut/src/xRefCutToAOMD.h was including xMapping.h. It is useless at current stage and this include is removed.
      
          - xFEM/src/xGeomElem.cc : some implemetation are simplifyed since we do not need to convert some xVector<> to mVector or xTensor2<> to mTensor2 when calling xMapping members functions.
      
          - xTLS/src/xRefCutToCGAL.h was including xMapping.h when it just needed a forward declaration of xMapping. This is fixed.
      05482f34
  22. 16 Jun, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xmapping] xMapping now a full class, independant of Trellis_Util::Mapping. · 0c02f81b
      Nicolas CHEVAUGEON authored
          This is a continuation of the work of previous commit. The goal behing
          to reduce the dependancies to AOMD. This intermediate commit do that
          with minimal interface change and minimal other change to Xfiles
          libraries.
          new files  in xMapping/src :
          xLagrangeMapping.cc, xLagrangeMapping.h, xLagrangeMappingBuilder.cc,
          xLagrangeMappingBuilder.h, xMapping.cc, xMappingBuilderHolder.cc, xMappingBuilderHolder.h
      
          class xMapping, xLagrangeMapping, xConstantLagrangeMapping ...
          are now fully implemented in xmapping instead of behing typedef of some Trellis_Util::Mapping.
          This come with some minor interface change to minimize remaining deps to Trellis in xmapping :
          xMapping do not store any more the associated AOMD::mEntity, instead it just store the entityType (mType defined in AOMD_Internals.h) This type will probably
          change in a next commit, it's still needed for now in the present form, so that the the type returned by member getType() remain compatible with Trellis_Util::Integrator.
          interface change in xMapping :
          - member getEntity is removed.
          - member getType is added.
          - member interiorCheck was taking a useless AOMD::mEntity *loc as input, it is removed.
          - members PushBack are replaced by pushBack to conform to general xfile convention.
          - unused member simplexation is removed
          - There are now 3 normalVector members and they are not pure virtual any more :
      
            virtual void normalVector(double u, double v, double w, vector3d &n) const :
            compute the "natural" normal to a face mapping. it also work with line, making the assumption that the normal is orthogonal
            to the third axis. direction of the normal of course depends on the order of the nodes in the face up to a sign.
      
            virtual vector3d normalVector(const unsigned short *face_vertices, double s, double t) const:
            compute the normal to the face (resp line) given by face_vertices in term of the nodes number of the
            reference solid (resp face) upon with the mapping is constructed. s,t are the local parameter in the reference space of face
            (resp s in the reference space of the line). It proceed by finding out if the face is really a valid face of the solid,
            if so which one and how it is rotated compared to the corresponding reference face on the solid.
            Then it compute the coordinate u,v,w in the solid reference face corresponding to point s,t on the face,
            taking into account face number and rotations. It then select the normal in reference space according to the face number,
            and push it back to geometric space.
            For this to work,  data are defined in xMapping.cc for each type of mapping supported.
      
            vector3d normalVector(const unsigned short iface, double u, double v, double w) const:
            compute the exterior normal to the  numbered iface face relative to the underlying solid at point u,v,w  of the solid.
            iface is the relative face number to the solid we want to take the normal of.
            From this value, the normal in ref space is retrived.  it is then push to geometric space using the jacobian at u,v,w.
            This is the simplest candidate to use to replace previous usage of normalVector in the library.
      
          Consequences elsewhere :
          -  xMapping/src/xLagrangeMappingBuilder.cc/.h
             xRegularCubeLagrangeMappingBuilder and  xCylindricalCoordinatesLagrangeMappingBuilder are moved to this file
            (previously they were in xMappingBuilderHolder.h/cc).
            xLagrangeMappingBuilder Familly now call new version of constructors for xLagrangeMapping.
      
          - Trellis/Util/Util/calculus/Integrator.h/cc
            GaussIntegrator do not store any more the entity, just the entityType. Constructor modifyed accordingly
      
          - xCrack/src/IntegratorSingularCrack2D.cc
            call to Trellis_Util::GaussIntegrator constructor modifyed accordingly
      
          - xCrack/src/SingularCrackMapping.h_cc xExt/src/InfiniteMapping.h_cc
            constructor of SingularCrackMapping and InfiniteMapping now call new version of xMapping and xLagrangeMapping Constructor and
            do not overload normalVector any more.
      
          - xExt/src/InfiniteOrLagrangeMappingBuilder.cc now call new version of xLagrangeMAppingConstructor.
      
          - xForm.h/.cc :
            bool integ_is_appro(xGeomElem* geo_integ, xGeomElem* geo_appro) is now implemented in the .cc file (otherwise xMapping need to be fully defined in xForm.h )
      
          - xGeomElem.h/.cc
           now xGeomElem store a AOMD::mEntity* ent as a direct member, since xMapping do not any more. Constructors and members are modifyed accordingly.
           xGeomElem member normalVector is implemented according to the new implementation of xMapping.
      
          - xRegularGrid.cc : implemented using the new version of interiorCheck.
      
          - xMapping/test/testxLagrangeMapping/main.cc has been modifyed to test the normal implementation and conform to the change in xMapping interface.
      
          - TLSVelocity.h :  Small changes to conform to the new xMapping interface.
      
          - Element.h now include "AOMD_Internals.h" because it needs AOMD::mEntity::mType
             which is not included throught xMapping.h any more.
      0c02f81b
  23. 15 Jun, 2020 1 commit
  24. 04 Jun, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xfem] xfem now use xmapping · 125c8dd5
      Nicolas CHEVAUGEON authored
       follow up of previous commit. xfem now use xmapping::xMapping instead of
       xmapping::xMapping. direct include from Trellis in xfem are removed and
       replaced by include from xmapping.
       The modifyed files were cleaned up a bit and clang-formated
      125c8dd5
  25. 03 Jun, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xfem] xMeshFwd.h and xIntegrationRuleFwd.h removed. · 071f55cd
      Nicolas CHEVAUGEON authored
          Added xPartition.h where can be found the definition of xPartition and
          xGetPartition
      
          Added xIter.h where can be found the definition of xIter and xClassIter
      
          xScalarFunctionDerivDiscXFEMOctree, previoulsy in xApproxFunction.h is
          moved to it's own file : xApproxFunctionDerivDiscXFEMOctree.h
      
          datamanagerxMesh_t and partmanagerxMesh_t are removed.
      
          Other files are modifyied accordingly and clang-formated.
      071f55cd
  26. 28 May, 2020 1 commit
  27. 22 May, 2020 1 commit
  28. 18 May, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xfem] xNonLocalInfoGeneratorForKeysAndFcts · f0a19c17
      Nicolas CHEVAUGEON authored
          The class hierachy with base  xNonLocalInfoGeneratorForKeysAndFcts is modifyed to store the data it build for each element in a data manager instead of using a raw AOMDtag.
          details :
          changes
          in  class xNonLocalInfoForKeysAndFcts
           -  member functions
          int getAllKeysFromSlavesAndFree(xValKey::ids_size_t phys, xSpace::femKeys * keys, xSpace::femKeys * other_master_keys);
          and femfemRelKeys& getCoefAndKeysForKey( const xValKey & key );
          are changed to :
          int getAllKeysFromSlavesAndFree(xValKey::ids_size_t phys, xSpace::femKeys * keys, xSpace::femKeys * other_master_keys) const;
          const femRelKeys& getCoefAndKeysForKey( const xValKey & key ) const;
          (These member functions do not modify the xNonLocalInfoForKeysAndFcts. It is changed to a const member function, so that it could be use in contant where the object is const.)
      
          in class xNonLocalInfoGeneratorForKeysAndFcts
          - virtual  member
          virtual unsigned int generateNonLocalInfoForKeysAndFcts(spacePtr_t  space, const int polynomial_order)=0;
          is changed to       virtual void generateNonLocalInfoForKeysAndFcts(spacePtr_t  space, const int polynomial_order)=0;
          rational : previously it returned the tag to recover the data xNonLocalInfoForKeysAndFcts associated to each entity.
          Now this data is stored internally in a datamanager. The tag do not exist any more nd is no longer returned.
          The data for one element can now be recover by calling the new const pure virtual  member function :
          virtual const xNonLocalInfoForKeysAndFcts * getNonLocalInfo(const AOMD::mEntity & e) const =0;
          - a virtual destructor is added.
      
          in class  xNonLocalInfoGeneratorForKeysAndFctsForHangingNode:
          constructor xNonLocalInfoGeneratorForKeysAndFctsForHangingNode(xMesh &mesh,unsigned int tag,  const DATAMANAGER < AOMD::mEntity *> &isHangingOn =  xMesh::get_const_is_hanging_on(), const DATAMANAGER < std::vector<AOMD::mEntity *> > &downGroup =xMesh::get_const_down_group(),  const DATAMANAGER < std::vector<AOMD::mEntity *> > &bndGroup= xMesh::get_const_bnd_group(), double thresold = 1.e-12);
          is replaced by
          xNonLocalInfoGeneratorForKeysAndFctsForHangingNode(xMesh &mesh, DATAMANAGER< xNonLocalInfoForKeysAndFcts * >& _nli_data, const DATAMANAGER < AOMD::mEntity *> &isHangingOn =  xMesh::get_const_is_hanging_on(), const DATAMANAGER < std::vector<AOMD::mEntity *> > &downGroup =xMesh::get_const_down_group(), const DATAMANAGER < std::vector<AOMD::mEntity *> > &bndGroup= xMesh::get_const_bnd_group(), double thresold = 1.e-12);
          Rational :  the previous constructor was used to force the created datas to be attached using an imposed tag. This is replaced by passing the data manager that will store the data.
          -a virtual destructor is added.
          The data are constructed on the current mesh for a given space by calling :
           void generateNonLocalInfoForKeysAndFcts(spacePtr_t  space, const int polynomial_order) override;
          - The data can be recovered using the override :
          const xNonLocalInfoForKeysAndFcts * getNonLocalInfo(const AOMD::mEntity & e) const override;
      
          class xNonLocalInfoGeneratorForKeysAndFctsForHangingNodeOldAndCurrent :
          This class is also modifyed to conform to the new base class.
      
          A xNonLocalInfoGeneratorForKeysAndFcts object pointer is used as an input for  xSpacePolynomialOctree based objects.
          This class hierachy as been modify to integrate the new interface.
      
          File xFEM/src/xAttachableNonLocalInfoForKeysAndFcts.h is removed from the repository since it is not used anymore. (it was used to define and access to xNonLocalInfoForKeysAnfFcts has a mAttachableData)
      
          Other minor change :
           header xAttachableVector.h remove from the include list in  xInterface/xOctree/src/InterfaceOctreeToAOMD.cc  since it is not used here anymore.
      
          deleted:    xFEM/src/xAttachableNonLocalInfoForKeysAndFcts.h
          modified:   xFEM/src/xNonLocalInfoForKeysAndFcts.cc
          modified:   xFEM/src/xNonLocalInfoForKeysAndFcts.h
          modified:   xFEM/src/xNonLocalInfoForKeysAndFcts_imp.h
          modified:   xFEM/src/xSpacePolynomial.cc
          modified:   xFEM/src/xSpacePolynomial.h
          modified:   xInterface/AOMD/CMakeLists.txt
          modified:   xInterface/xOctree/src/InterfaceOctreeToAOMD.cc
      f0a19c17
  29. 12 May, 2020 2 commits
    • Nicolas CHEVAUGEON's avatar
      clang-formated · de534315
      Nicolas CHEVAUGEON authored
          removed comment and added file xFEM/src/xDomain.h
      
      [xfem] xDomain, zone_tag.
      
      Previously, we had a raw aomd tag, zone-tag, created throught xDomainStringManager with the name "zone". It was use to set that a mesh entity was belonging to a "zone" with a id related to a zone_name throught xZone. It was set for example using xClassifyOn and It was used in particular by the xEntityFilter xAccept, xAcceptNot, xAcceptOnZoneId, xAcceptUpperAdjancencies And xGeomElem getZone() member function.
      
          * I replaced the usage of a raw aomd tag by a new class xDomain defined in xDomain.h, implemented using an xDataManagerAOMD.
          * xClassifyOn, xAccept, xAcceptNot, xAcceptUpperAdjancencies and  xGeomElem::getZone() are reimplemented using this xDomain.
          *xAcceptOnZoneId was not reimplemented since it was almost the same as  xAccept. Previous usage of xAcceptOnZoneId(int) can be safely replaced by xAccept(int)
      
          *xDomainStringManager.h and xDomainStringManager.cc that where previously only use to set up the aomd tag zone_tag are removed.
          *xDomainAttachableData.h that used to define an mAttachableData suittable to attach domain information is now useless and removed
      
          *Since it was previously stored as an attachData, it was automatically destroyed each time an mEntity was destroyed. To have the same effect, the xMesh::del(mEntity *e) have been updated to clear the xDomain from mention of e.
      
          *The header inclusion #include "xDomainAttachableData.h", "xDomainStringManager.h" are removed where needed in the library :
           - xCut/xLegacySimpleCut/src/xMeshCut.cc, xFEM/src/xEntityFilter.cc, xFEM/src/xEntityToEntity.cc, xFEM/src/xGeomElem.cc, xFEM/src/xIntegrationRule.cc, xFEM/src/xMesh.cc, xPhysics/src/xpThermic.cc
      
          all the following files are clang-formated :
             xCut/xLegacySimpleCut/src/xMeshCut.cc
             xFEM/src/xEntityFilter.cc
             xFEM/src/xEntityFilter.h
             xFEM/src/xEntityToEntity.cc
             xFEM/src/xEntityToEntity.h
             xFEM/src/xGeomElem.cc
             xFEM/src/xIntegrationRule.cc
             xFEM/src/xMesh.cc
             xPhysics/src/xpThermic.cc
       Changes to be committed:
      	modified:   xCut/xLegacySimpleCut/src/xMeshCut.cc
      	new file:   xFEM/src/xDomain.h
      	deleted:    xFEM/src/xDomainAttachableData.h
      	deleted:    xFEM/src/xDomainStringManager.cc
      	deleted:    xFEM/src/xDomainStringManager.h
      	modified:   xFEM/src/xEntityFilter.cc
      	modified:   xFEM/src/xEntityFilter.h
      	modified:   xFEM/src/xEntityToEntity.cc
      	modified:   xFEM/src/xEntityToEntity.h
      	modified:   xFEM/src/xGeomElem.cc
      	modified:   xFEM/src/xIntegrationRule.cc
      	modified:   xFEM/src/xMesh.cc
      	modified:   xPhysics/src/xpThermic.cc
      de534315
    • Nicolas CHEVAUGEON's avatar
      [xfem] remove raw tag usage in xApproxFunction · 9c385ade
      Nicolas CHEVAUGEON authored
      xApproxFunction.cc/h -> in class xScalarFunctionDerivDiscXFEMOctree, tag to store enrichement function at nodes of integration element replaced by mutable datamanager member eint2enrichment of the  xScalarFunctionDerivDiscXFEMOctree.
      
      xVectorLevelSet.cc -> removed now useless #include "xAttachableChar.h"
      
      clang-formated :
      xApproxFunction.cc, xApproxFunction.h, xVectorLevelSet.cc
      9c385ade