1. 04 Jun, 2020 8 commits
    • Nicolas CHEVAUGEON's avatar
      [xtls] xtls now use xmapping · 61e5f211
      Nicolas CHEVAUGEON authored
      xtls now use xmapping::xMapping instead of Trellis_Util::xMapping
      61e5f211
    • Nicolas CHEVAUGEON's avatar
      [xexport] xexport now use xmapping · c1279ad2
      Nicolas CHEVAUGEON authored
      xexport now use xmapping::xMapping instead of Trellis_Util::xMapping
      xExport.h clang-formated
      c1279ad2
    • Nicolas CHEVAUGEON's avatar
      [xcut] xcut now use xmapping · 452e93a8
      Nicolas CHEVAUGEON authored
      Trellis_Util::xMapping is replaced by xmapping::xMapping in xcut
      Modifyed files are clang-formated
      452e93a8
    • Nicolas CHEVAUGEON's avatar
      [xext] xext now use xmapping · 7ae0d7c2
      Nicolas CHEVAUGEON authored
       xext now use xmapping::xMapping instead of Trellis_Util::xMapping
       modifyied files are clang-formated.
      7ae0d7c2
    • Nicolas CHEVAUGEON's avatar
      [xgeom] using xmapping::xMapping instead of Trellis_Util::xMapping · 11d8ab0f
      Nicolas CHEVAUGEON authored
      xmapping usage implemented in xgeom.
      modifyed files are clang-formated.
      11d8ab0f
    • Nicolas CHEVAUGEON's avatar
      [xcrack] xmapping now used in xcrack · 031f9449
      Nicolas CHEVAUGEON authored
      + xcrack now use xmapping::xMapping instead of Trellis_Util::Mapping
      + some using xxx in xcrack scope of header files were removed. more need
        to be removed latter.
      031f9449
    • 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
    • Nicolas CHEVAUGEON's avatar
      [xmapping] xmapping is now a real library. · a4255521
      Nicolas CHEVAUGEON authored
      Up to now, xmapping was only containing the header xMapping/src/xMappingBuilderHolder.h, letting construct mapping from trellis.
      This commit changes it to a real library, in order to push there all the mapping need of eXlibris. Now mapping can be used with only name and include from xmapping, with no more direct include from trellis.
      
      Rationnal : paving the way to less dependecies in Trellis.
      
      For now, no modification are needed in client code. In next commits, the
      changes will be implemented so that only include from xmapping will be
      used in clients of mapping codes. after that, new implementation of
      mapping could appear with no mention of trellis.
      
      new file xMapping.h : define our own xMapping type, for now just a new name
      for Trellis_Util::Mapping.
      
      file xMappingBuilderHolder.h : some of the implementation have been
      moved to the new file xMappingBulderHolder.cc.
      new member function added to xMappingBuilderHolder : buildMapping. This
      simplify the creation of mapping in client code.
      
      new file xMappingBulderHolder.cc : contain some of the implementations.
      
      xMapping/CMakeLists.txt now builds a library.
      xUtil/cmakeUtil/FindxFEM.cmake : now xmapping library is requiered.
      
      updated and new files are clang-formated.
      a4255521
  2. 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
  3. 28 May, 2020 2 commits
    • Alexis SALZMAN's avatar
      [xtool] Add class to adpat iterator containt by casting · 873fe764
      Alexis SALZMAN authored
      castValueBidirIterator and castValueForwardIterator are two class that
      take control of an iterator 'it'. Both change information type pointed by
      'it' by use of static cast. So compare to 'it' only operator * is
      changed. The type used during casting is provided as a template
      parameter to those class.
      
      These classes aim to replace entitytovertexiteratorconvertor class of FM
      library which was used as a start for construction of this new family.
      Compare to this original version, iterator category coherence is more
      strongly achieved between 'it' and its warper. To simplify user task the
      function makeCastValueIterator provide a simple way to create
      castValueBidirIterator or castValueForwardIterator depending on 'it'
      iterator category type.
      
      As now cast type is a template parameter the user have more choice.
      The reverse operation (mVertex* to mEntity*) have been for example
      tested successfully in some appli. And in the same appli use of those
      class in replacement of entitytovertexiteratorconvertor was ok.
      
      TODO
      replace entitytovertexiteratorconvertor and certainely also
      citerobjecttovertexiteratorconvertor
      Add other category type and maybe do some rearrangement to minimize code
      duplication.
      873fe764
    • Gilles MARCKMANN's avatar
      Move simplexify function from xMesh to xMeshInterface/miAOMD. · f9f1cdd8
      Gilles MARCKMANN authored
      Replace exit(0) by throw in miBase.
      f9f1cdd8
  4. 27 May, 2020 2 commits
  5. 22 May, 2020 3 commits
    • Alexis SALZMAN's avatar
      [xGraph] add dist BFS+nodeTo API chg+use xExportStringDist · ea2ae6b7
      Alexis SALZMAN authored
      nodeAndConnectedEdgeDistInternal.h
      ==================================
      Replace IO with MPIIO by a call to xExportStringDist
      
      nodeAndConnectedEdge.h
      ======================
      Add xxVisited methods to class nodeTo. Dirty friend functions are
      not friend anymore as they now use new public API.
      
      nodeAndConnectedEdgeDist.h
      ==========================
      Add distributed breath first search (BFS) function with one unique
      source across a distributed oriented graph. This function is template on graph
      description ( but mainly use nodeTo graph API) and exchanger/functor run
      has call-back to do appropriate communication/work on each node/edge
      traversal. It aims to be rather generic.
      From a scaling point of view performance will certainly remain poor if
      the chosen source do not span on part of the graph shared by all the
      processes. Next move on that topic will be to implement many source BFS
      strategy that probably will covers more graph part and thus more
      processes. Communication will be higher but processes will have all
      something to do. And communication will be amortized (larger msg)
      
      This new function has been successfully tested with graph created by FM.
      Nevertheless a dedicated test case should be added.TODO
      
      Xfiles_dependence.dot
      =====================
      Update with FM->xGraph->xTool dependency
      ea2ae6b7
    • Alexis SALZMAN's avatar
      [xFEM] remove some warnings · 6ec84b69
      Alexis SALZMAN authored
      6ec84b69
    • Alexis SALZMAN's avatar
      [xTool]add xExportStringDist to write dist string to one file · b97a7039
      Alexis SALZMAN authored
      This Function give a way to use MPIIO transparently. It provide a way to
      write a file from distributed string (or osstream). The strings are
      written to file in ascending process id order.
      The string provided to the function by proc 0 is written first in the
      generated file. Then the one hold by proc 1 is written. And so on. All
      process are not obliged to provide a non null string but they must all
      participate to the call to this function even with empty string.
      
      An atomic test illustrate this function usage and shows how multiple
      files generation can be used to improve IO throughput. With large number
      of process H. Digonnet (ICI) experienced that multiple file output with
      adhoc communicator is better then one unique file with MPIIO (to be
      checked in our context with this test case enlarged to more
      data/process).
      
      A priori there is no limitation to string size except memory
      consumption. This function might be used in the future for xExport
      library.
      
      Note that initially this function was added to xExport library. But this
      library is dependent of xFem so it have been  introduced here in xTool.
      b97a7039
  6. 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
  7. 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
  8. 11 May, 2020 2 commits
    • Nicolas CHEVAUGEON's avatar
      [xcrack] replacing raw aomd tag by datamanager in xcrack · 3d1f4f8e
      Nicolas CHEVAUGEON authored
          All the raw AOMD tag have been removed from xcrack.
          They have been replaced by datamanager AOMD.
          They were appearing in lcrack.cc and in the xcFrontxxxxx files.
      
          The xcFrontxxx files have been cleaned up, the number of #include have
          been reduced to a mininimum for those file and using namespace xxx have
          bben removed from the headers.
      
          All the following files have been modifyied and clang-formated:
             xCrack/src/lCrack.cc
             xCrack/src/xcFront.cc
             xCrack/src/xcFront.h
             xCrack/src/xcFrontDomain.cc
             xCrack/src/xcFrontDomain.h
             xCrack/src/xcFrontDomainManager.cc
             xCrack/src/xcFrontDomainManager.h
             xCrack/src/xcFrontManager.cc
             xCrack/src/xcFrontManager.h
             xCrack/src/xcFrontPart.cc
             xCrack/src/xcFrontPart.h
             xCrack/src/xcFrontSpaceManager.cc
             xCrack/src/xcFrontSpaceManager.h
             xCrack/src/xcFrontSpaces.cc
             xCrack/src/xcFrontSpaces.h
      3d1f4f8e
    • Nicolas CHEVAUGEON's avatar
      [xfem] xMesh.h/cc cleaned up · 33fdcde8
      Nicolas CHEVAUGEON authored
      - the following static tags and related function in xMesh no longer exist :
      was_created_by_tag2, is_the_creator_of_tag2, is_the_element0_of_tag, refined_elements_tag, levelset_value_tag, cut_edge_tag, cut_element_tag
      They where mostly used by xPhysSurfOctre, rewritten using local datamanager in previous commit
      
      - The cut function previously declared in xMesh.h and implemented in xMeshCut_deprecated.cc are removed. The version implemented in xcut/xLegacySimpleCut should now be used instead.
      
      - file xMeshCut_deprecated.cc removed.
      
      - xMesh.cc/h cleaned up of unused function.
      
      Almost no entity creation/deletion now take place inside xMesh class, except in simplexify and copy function.
      This should facilitate migration to meshquery.
      
      Changes to be committed:
        modified:   xFEM/src/xMesh.cc
        modified:   xFEM/src/xMesh.h
        deleted:    xFEM/src/xMeshCut_deprecated.cc
      33fdcde8
  9. 10 May, 2020 4 commits
    • Nicolas CHEVAUGEON's avatar
      [xcut] xPhysSurf Updated to use cut function of xcut/xLegacySimpleCut/xMesh.h/cc · eae565dc
      Nicolas CHEVAUGEON authored
      xPhysSurf now store references to datamanager passed at construction to update them and pass them to the cut function. the datamanager have for now default value to the corresponding data Manager in xMesh. It uses the cut function defined in xcut/xLegacySimpleCut/xMesh.cc/.h
      
      XPhysSurfOctree and xPhysSurf3 (from xPhysics) have also been updated.
       xPhysSurfOctree octree now use internal datamanager instead of some xMesh static tags to store it's internal data.
      
      Since xPhysSurfOctree have been changed a lot, the interface and the implementation of xScalarFunctionDerivDiscXFEMOctree (xfem/xApproxFunction.h.cc) have been updated.
      
      some loop are rewritten as range loop.
      
       modified and clang-formated :
      
        xAnalyticalSolution/CMakeLists.txt
        xCut/xLegacySimpleCut/src/xPhysSurf.cc
        xCut/xLegacySimpleCut/src/xPhysSurf.h
        xFEM/src/xApproxFunction.cc
        xFEM/src/xApproxFunction.h
        xPhysics/src/xPhysSurf3.h
        xPhysics/src/xPhysSurf3.cc
      eae565dc
    • Nicolas CHEVAUGEON's avatar
      [xext] DoubleCutting updated · b9c75779
      Nicolas CHEVAUGEON authored
      DoubleCutting.h/cc now use xCut/xLegacySimpleCut/xMeshCut.cc/h cut
      function.
      b9c75779
    • Nicolas CHEVAUGEON's avatar
      [xcut] xMeshCut.h/cc : slight changes to avoid silent usage of xMesh::get_was_created_by() · dc7a1de9
      Nicolas CHEVAUGEON authored
      getOriginalCreator and , classifyElement,that return recursively the creator of an entity now take the datamanager that store the creator information as an input argument instead of using the xMesh::get_was_created_by() static member.
      dc7a1de9
    • Nicolas CHEVAUGEON's avatar
      [xcrack] xCrack now use the new xCut operators · 77ea09cd
      Nicolas CHEVAUGEON authored
          xCrack now use the new xCut operators from xMesh.h and trace from xLevelSet
          + uses range based loop instead for iterators.
      
      The following modifyed files were clag-formatted :
      
          xCrack/src/IntegratorSingularCrack3D.cc
          xCrack/src/JintParks.cc
          xCrack/src/lCrack.cc
      77ea09cd
  10. 08 May, 2020 2 commits
    • Benoit Le's avatar
      [xTLS] Added modes merging based on link on front. · d42135e7
      Benoit Le authored
      Added modes merging based on link on front, resulting from the definition of a stable Lagrange multiplier space on finite elements cut by a surface. It uses the xLinkOnFrontLinkGenerator class introduced in a previous commit.
      
      As it will probably more properly implemented in a future TLSGeomInterface class, it was decided to put it inside a "NEW_MERGNING" macro, defined at the begining of the TLSGeomInterfaceSignedVectorDistanceFunction.cc. To use it, just replace "#define NEWMERGING 1" by "#define NEWMERGING 3".
      
      TLSGeomInterfaceSignedVectorDistanceFunction.cc has been clang formated.
      
      The idea of using this mergning resulted from a discussion with N. Moes and N. Chevaugeon, and the introduction in eXlibris with A. Salzman.
      d42135e7
    • Benoit Le's avatar
      [xFEM] Added xLinkOnFrontLinkGenerator. · e5d4e0ed
      Benoit Le authored
      This class creates link between nodes, corresponding to a stable lagrange multiplier space for elements cut by a surface. To create this class, the corresponding pieces of codes have simply been taken from xValueCreatorLinkOnfront, which now has a xLinkOnFrontLinkGenerator member.
      
      The advantage of doing so it to be able to use these links between nodes, to do something else than creating xValuesLinearCombination (which is the purpose of xValueCreatorLinkOnfront). For now the only functionality implemented in xLinkOnFrontLinkGenerator is the only one necessary in xValueCreatorLinkOnfront, that is; given one node, returning the associated node. However we could imagine if necessary to add the possibility to retrieve vital edges or other information, or eventually to implement new criterion to define the links.
      
      The corresponding files have been clang-formated.
      
      The design of this class has been discussed with A. Salzman.
      e5d4e0ed
  11. 07 May, 2020 4 commits
    • Nicolas CHEVAUGEON's avatar
      [xFEM xLevelSet] · 0ef7f77b
      Nicolas CHEVAUGEON authored
      * xLevelSet members takeTraceOn and interpolateTo have an interface change :
      
        void takeTraceOn(const xMesh& target_mesh, const datamanagerxMesh_t<AOMD::mEntity*>& was_created_by,
                          const datamanagerxMesh_t<double>& r_on_edge, xLevelSet& trace) const;
      
        void interpolateTo(const xMesh& mesh_new,
                            const datamanagerxMesh_t<AOMD::mEntity*> &was_duplicated_from,
                            const datamanagerxMesh_t<AOMD::mEntity*> &was_created_by,
                            xLevelSet& lsnew) const;
      
        Rational : we need to know what data are needed for this function to work. I'm trying to make the silent
        use of data, previously managed directly by tagappear in the interface.
      
        Related changes :
          lCrack.cc, xMeshCut.cc, xRefCutToAOMD.cc, xDoubleCutting.cc
          now call the revised version of xLevelSet::takeTraceOn, xLevelSet::InterpolateTo
      
      * Added xLevelSet Function :
        double &at (const AOMD::mVertex& v);
        const double &at(const AOMD::mVertex& v) const;
        this function return ref to the value stored at vertex v or throw. Rational : we already have double & operator()(AOMD::mEntity  * ), used to set values at vertices, but this function can silently add data in the associative map, breaking the support. I think it's usage should be replaced everywhere by .at(const vertex &) and the function removed from xLevelSet.h
        other member function in xLevelSet are now implemented using .at(v)
      
      * Some other minor changes are applied in xLevelSet member function implementation to simplify them or get ride of compiler warning  :
        void xLevelSet::complement()
        bool xLevelSet::isDefinedAt(mEntity* v)
        void xLevelSet::setSupport(const xRegion& m, const double& val)
        std::vector<double> xLevelSet::getVals(const mEntity& e) const
        double xLevelSet::getVal(mEntity* e, const Trellis_Util::mPoint& uvw) const
        xtensor::xVector<> xLevelSet::getGrad(mEntity* e, const Trellis_Util::mPoint& uvw) const
      
      * xLevelSet.h and xVectorLevelSet.h were included in xAlgorithm.h for no reasons. I removed these inclusions.
      side effect : xVectorLevelSet.h was pushing std::set and std::string to global namespace ... After removing the inclusion
      of xVectorLevelset.h in xAlgorithm.h, xAlgorithm was not knowing set anymore. All the reference to set in xAlgorithm.h are replaced by std::set
      using std::set and using std::string are removed from xVectorLevelSet.h
      
      The following files are clang-formated :
      xCrack/src/lCrack.cc
      xCut/xLegacySimpleCut/src/xMeshCut.cc
      xCut/xLegacySimpleCut/src/xRefCutToAOMD.cc
      xExt/src/DoubleCutting.cc
      xFEM/src/xAlgorithm.h
      xFEM/src/xLevelSet.cc
      xFEM/src/xLevelSet.h
      xFEM/src/xLevelSetOperators.cc
      xFEM/src/xMeshCut_deprecated.cc
      xFEM/src/xVectorLevelSet.h
      0ef7f77b
    • Nicolas CHEVAUGEON's avatar
      [xFEM, xcut] Moving cut related function out of xMesh class to xcut namespace. · 97286dad
      Nicolas CHEVAUGEON authored
      Rationnal : xMesh class used to contain function related to the cutting of a mesh. This won't be acceptable in a future were we want to have a generic mesh query interface (that can not modify or create a mesh). All the cut function should be outside of xMesh, the functionalities should be implemented in xcut.
      
      In order to do that in staged commit, the file xMeshCut.cc that contain the old implementation of the cut function of xMesh is renamed to xMeshCut_depracted.cc. This file will be removed in a futur commit.
      
      All the needed function are reimplemented with a new interface in xCut/xLegacySimpleCut/src/xMeshCut.h/cc in the xcut namespace, as non-member function of xMesh. No tag are supposed to be used in theses  versions, only data_manager. For the current commit, these versions are not use in the library.
      
      Function declared in xMeshCut.h:
      
      void createIsoZeroMeshFromLevelSet(const xfem::xLevelSet& ls,
                                                xfem::xMesh & imesh,
                                                datamanager_t<AOMD::mEntity*>& was_created_by,
                                                datamanager_t<double>& r_on_edge, const bool simplex_only = true, const bool debug = false);
      
      inline void createIsoZeroMeshFromLevelSet(const xfem::xLevelSet& ls,
                                                xfem::xMesh & imesh,
                                         const bool simplex_only = true, const bool debug = false){
          datamanager_t<AOMD::mEntity*> was_created_by;
          datamanager_t<double> r_on_edge;
          createIsoZeroMeshFromLevelSet(ls, imesh, was_created_by, r_on_edge, simplex_only, debug);
      }
      
      void cutAlongInterface(const xfem::xMesh& interface,
                              const datamanager_t< AOMD::mEntity *> &was_created_by,
                              datamanager_t< xfem::xMesh > &partition,
                              datamanager_t< AOMD::mEntity *> &is_duplicated_in,
                              datamanager_t< AOMD::mEntity *> &was_duplicated_from,
                              datamanager_t< AOMD::mEntity *> &is_in_partition_of
                              );
      
      void cutAlongInterfaceRecursive(const xfem::xMesh &interface, const xfem::xLevelSet& ls,
                                       const datamanager_t< AOMD::mEntity *> &was_created_by,
                                       datamanager_t< xfem::xMesh > &partition,
                                       datamanager_t< AOMD::mEntity *> &is_duplicated_in,
                                       datamanager_t< AOMD::mEntity *> &was_duplicated_from,
                                       datamanager_t< AOMD::mEntity *> &is_in_partition_of);
      
      void cutMesh(const xfem::xMesh &base_mesh, const xfem::xLevelSet& ls, xfem::xMesh& iso_zero_mesh,
                   datamanager_t< AOMD::mEntity *> &was_created_by,
                   datamanager_t< double > &r_on_edge,
                   datamanager_t< AOMD::mEntity *> &is_duplicated_in,
                   datamanager_t< AOMD::mEntity *> &was_duplicated_from,
                   datamanager_t< xfem::xMesh >    &partition,
                   datamanager_t< AOMD::mEntity *> &is_in_partition_of,
                   xfem::xEntityToEntity classify_in,
                   xfem::xEntityToEntity classify_out,
                   bool create_partition,
                   bool keep_old_partition,
                   bool recursive);
      
      void cutMesh(const xfem::xMesh &base_mesh, const xfem::xLevelSet& ls, xfem::xMesh& iso_zero_mesh,
                   xfem::xEntityToEntity classify_in,
                   xfem::xEntityToEntity classify_out,
                   bool create_partition,
                   bool keep_old_partition,
                   bool recursive);
      
      AOMD::mEntity* getOriginalCreator(AOMD::mEntity* egros);
      
      Minor changes :
      
      - centroid function now implemented in xinterface::aomd in file xInterface/AOMD/general/src/xAOMDEntityUtil.h :
      Trellis_Util::mPoint centroid(const AOMD::mEntity& e)
      
       - xMeshFwd.h contains a new declaration :
      template <typename T>
      using datamanagerxMesh_t = xinterface::aomd::xAttachedDataManagerAOMD<T>;
      rational : it permit to export the data manger used internally in class xMesh whithout having to include xMesh.h It will be used more rationnaly in a next commit.
      
      - The following files are clang-formated to help the next commit:
      xCrack/src/IntegratorSingularCrack3D.cc
      xCrack/src/lCrack.cc
      97286dad
    • Nicolas CHEVAUGEON's avatar
      [xFEM/xMesh] static xMesh tags is_the_copy_of_tag and has_a_copy_tag are removed. · 65fe407b
      Nicolas CHEVAUGEON authored
      They where used by the void 'xfem::xCopyMesh (xMesh *in, xMesh *out, bool clean_tag_on_source_mesh = true)'  function. The previous function is therefore rewritten, in two variants in xMesh.h :
      
      void xCopyMesh(const xMesh& in, xMesh& out, xMesh::datamanager_t<AOMD::mEntity*>& is_copied_to, xMesh::datamanager_t<AOMD::mEntity*>& is_the_copy_of);
      void xCopyMesh(const xMesh& in, xMesh& out);
      The first one copy mesh in into mesh out, keeping track of the relations between entities of the 2 meshes, using datamanager. The second one do not keep track.
      xCut/xLegacySimpleCut/src/xPhysSurf.cc is updated for this change.
      65fe407b
    • Nicolas CHEVAUGEON's avatar
      [Xfem] Added range member function for xMesh and xSubMeshManager · a9248f16
      Nicolas CHEVAUGEON authored
      rational : operator that return "range" can be used in place where one call both begin and end functions that return iterator. It make it easier to use c++11 stil range loop. We already have the tool to construct a range from 2 iterators in xTool/xIteratorTools.h, and the range(int level) member already exist for xRegion. This commit add the operator for xMesh and xSubMeshManager, and use them in there respective implementation file.
      
      other minor change :
      xElementconstructor now take as in put a const xEntity * instead of an xEntity*. Rational:  xElment do not modify the Entity. easier to use in context when the
      
      The following files are clang-formated
      
       xFEM/src/xElement.cc
       xFEM/src/xElement.h
       xFEM/src/xMesh.cc
       xFEM/src/xMesh.h
       xFEM/src/xSubMeshManager.cc
       xFEM/src/xSubMeshManager.h
      a9248f16
  12. 05 May, 2020 3 commits
    • Alexis SALZMAN's avatar
      Illustration of right CMakeLists.txt file to run test · 8df55850
      Alexis SALZMAN authored
      With some combination of batch system and MPI library (for example
      slurm + intelMPI 2005) simple sequential program like this xCSRVector
      failed to be launched by ctest. As all program of eXlibris are now
      initiating an MPI context all of them for generality should be launched
      with mpiexec or equivalent (srun with intelMPI integration in slurm)
      
      Change made with this test case should be generalized to all test.
      8df55850
    • Alexis SALZMAN's avatar
      [cmakeUtil] make gmpcxx optional · ba470e37
      Alexis SALZMAN authored
      By adding a test the gmpxx library is now an optional lib for CGAL.
      ba470e37
    • Nicolas CHEVAUGEON's avatar
      [Trellis/AOMD] "constifying" some function · 56ef6631
      Nicolas CHEVAUGEON authored
      rational : some function in AOMD where taking pointer to mMesh while not modifying the pointed to mMesh, and some member function were not const while not modifying the object. They could not be use with const mMesh * without const_cast. This release change that for some :
      
          for mMesh : deleted assignment operator, added defaulted move assignement
      
          ** /Trellis/AOMD/AOMD/include/mAOMD.h/.cc, /Trellis/AOMD/AOMD/src/mSMS.cc
          * AOMD_Util :
               void ex_port (const char *, mMesh *, bool reduce_to_minimum = false);
          ->   void ex_port (const char *, const mMesh *, bool reduce_to_minimum = false);
               void   exportSmsFile   (const char *,mMesh *);
          ->   void   exportSmsFile   (const char *, const mMesh *);
               void   exportGmshFile  (const char *,mMesh *);
          ->   void   exportGmshFile  (const char *, const mMesh *);
               void   exportGmshFile  (std::ostream&,mMesh *) const;
          ->   void   exportGmshFile  (std::ostream&, const mMesh *);
               void   exportDGFile    (std::ostream&,mMesh *, bool reduce_to_minimum = false);
          ->   void   exportDGFile    (std::ostream&, const mMesh *, bool reduce_to_minimum = false);
               void   exportEnsightFile    (const char *,mMesh *, bool reduce_to_minimum = false);
          ->   void   exportEnsightFile    (const char *, const mMesh *, bool reduce_to_minimum = false);
               void   exportVTUFile(const char *,mMesh *, bool reduce_to_minimum = false);
          ->   void   exportVTUFile(const char *,const mMesh *, bool reduce_to_minimum = false);
               void   exportICIFile(const char *,mMesh *, bool reduce_to_minimum = false);
          ->   void   exportICIFile(const char *,const mMesh *, bool reduce_to_minimum = false);
      
          ** /Trellis/AOMD/AOMD/include/mMesh.h/.cc Trellis/AOMD/AOMD/src/mDebugUtil.cc
          * class mMesh :
          +    mMesh &operator=(mMesh &&) = default;
          +    mMesh &operator=(const mMesh &) = delete;
      
               mVertex *getVertex (int iD);
          ->   mVertex *getVertex (int iD) const;
               mEdge   *getEdge   (mVertex *v1, mVertex *v2);
          ->   mEdge   *getEdge   (mVertex *v1, mVertex *v2)const;
               mFace   *getTri    (mVertex *v1, mVertex *v2, mVertex *v3);
          ->   mFace   *getTri    (mVertex *v1, mVertex *v2, mVertex *v3) const;
               mFace   *getQuad   (mVertex *v1, mVertex *v2, mVertex *v3, mVertex *v4);
          ->   mFace   *getQuad   (mVertex *v1, mVertex *v2, mVertex *v3, mVertex *v4) const;
               mTet    *getTet    (mVertex *v1, mVertex *v2, mVertex *v3, mVertex *v4);
          ->   mTet    *getTet    (mVertex *v1, mVertex *v2, mVertex *v3, mVertex *v4) const;
               mHex    *getHex    (mVertex *v1, mVertex *v2, mVertex *v3, mVertex *v4,
                                   mVertex *v5, mVertex *v6, mVertex *v7, mVertex *v8);
          ->   mHex    *getHex    (mVertex *v1, mVertex *v2, mVertex *v3, mVertex *v4,
                                  mVertex *v5, mVertex *v6, mVertex *v7, mVertex *v8) const;
               void print(int);
          ->   void print(int) const;
               void printAll();
          ->   void printAll() const;
      
      The following files are clang-formated :
      
      Trellis/AOMD/AOMD/include/mAOMD.h
      Trellis/AOMD/AOMD/include/mMesh.h
      Trellis/AOMD/AOMD/src/mAOMD.cc
      Trellis/AOMD/AOMD/src/mDebugUtil.cc
      Trellis/AOMD/AOMD/src/mMesh.cc
      Trellis/AOMD/AOMD/src/mSMS.cc
      56ef6631
  13. 04 May, 2020 3 commits
    • Alexis SALZMAN's avatar
      [xInterfaceMumps] add correction relative to Mumps version+clg · f5dcbe3f
      Alexis SALZMAN authored
      Mumps API is not evolving a lot. But some minor change appears in
      some version regarding for example icntl array size. In this commit the
      interface is now analyzing mumps version and do some extra checking to
      secure Mumps usage.
      This interface is now compatible with mumps up to 5.3.1 version.
      
      The complex simple precision is now coded but not yet tested. TODO.
      
      clang-formated commit.
      f5dcbe3f
    • Alexis SALZMAN's avatar
      [xInterface] transform Parmetis setType prg in a sequential application · 4ccba8c6
      Alexis SALZMAN authored
      Within some set of compiler/MPI lib letting cmake compiles on the fly
      the ParMetis/src/setType/test.cc program that set types for Parmetis is
      rather cumbersome. To simplify compilation/running context of this
      program this commit removes MPI context usage. This little testing
      program is now a pure sequential application where mpi.h header is used
      due to Parmetis header usage.
      
      xFEM/src/xAlgorithm.h
      =====================
      set to null ptr to avoid warning with potential uninitialized value.
      4ccba8c6
    • Alexis SALZMAN's avatar
      [SOME] Add boost finding in some CMakelists.txt · 93d77713
      Alexis SALZMAN authored
      When boost lib is not installed in your system in /usr/include
      the set of lib modified by this commite were in default. As they
      use xTool xIteratorTools.h they depend on boost header and no
      cmake operation give them access to none system boost version. The simple
      addition of some Find Boost mechanism covers this prb. Not sure that
      it is the best way to solve this issue ... as already said
      modern-cmake may be used and in this case give dependency of xtool
      to correct boost.
      
      Please in future pay attention to boost dependency. If you add any don't
      forget to add find in cmake. Boost are not always installed in
      /usr/include.
      
      FindBLAS2.cmake
      ==============
      Durty hack to chose the right mkl lib on new c6 Liger install. Should be
      completely revisited ....
      93d77713
  14. 16 Apr, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xfem] some Tag in xMesh replaced by datamanager. · ed62fc25
      Nicolas CHEVAUGEON authored
            some static Tag in xMesh are replaced by static datamanager :
      
            is_duplicated_in, was_duplicated_from, is_in_partition_of
            Each one now as it's get and get_const associated member.
      
            -Applied in the following in xMesh.cc xMeshCut.cc :
              void xMesh::setDataManagers(), void xMesh::clear(mEntity *),
               mEntity *getSource(mEntity *e),
              xMesh *xMesh::refineInNewMesh(int n, bool debut),
              void xMesh::attachSimplicies(mEntity* e),
              xMesh* xMesh::cutElement(mEntity* e, mEntity* e_interface) and
              mVertex* xMesh::vertexInBetween(mEntity* v0, mEntity* v1,
                      const std::vector<mVertex*>& vertices)
            -Applied in xFEM/src/xEntityToEntity.cc/h :
               xPartitionCreatorRecursive and  xUpperAdjacencyPartition
            -Applied in xFEM/src/xEnv.cc : xEvalNormal
            -Applied in xFEM/src/xLevelSet.cc : xLevelSet::interpolateTo
      
          Implied interface change:
          xRefCutToAOMD.h/cc :xRefCutToAOMD does not use any of the all xMesh tag now.
          Instead it update and use datamanagers that are passed at construction
          xRefCutToAOMD constructor now takes as parameter the datamanagers to store
          the cut results (was_created by, r_on_edge, partition, was_duplicated_from
          and is_in partition of). Note That it still use it's own private tag
          (tag_entities and tag_support ) that will be removed in a next commit.
      
           applyied in :
            xCut/xLegacySimpleCut/src/xPhysSurfByTagging.cc Wich construct a xRefCutToAOMD
            using the static datamanager from xMesh.
      
      clang-format following mod files :
              modified:   xCut/xLegacySimpleCut/src/xPhysSurfByTagging.cc
              modified:   xCut/xLegacySimpleCut/src/xRefCutToAOMD.cc
              modified:   xCut/xLegacySimpleCut/src/xRefCutToAOMD.h
              modified:   xFEM/src/xApproxFunction.cc
              modified:   xFEM/src/xEntityToEntity.cc
              modified:   xFEM/src/xEntityToEntity.h
              modified:   xFEM/src/xEnv.cc
              modified:   xFEM/src/xLevelSet.cc
              modified:   xFEM/src/xMesh.cc
              modified:   xFEM/src/xMesh.h
              modified:   xFEM/src/xMeshCut.cc
      ed62fc25
  15. 13 Apr, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xfem, xcut] r_on_edge and is_the_creator_of · 79eb01a3
      Nicolas CHEVAUGEON authored
      CHANGES in xMesh.h/cc and xMeshCut.cc
      -static unsigned int xMesh::get_r_on_edge_tag() replaced by
        xMesh::datamanager_t<double> &xMesh::get_r_on_edge()
        and xMesh::datamanager_t<double> &xMesh::get_const_r_on_edge()
        The tag r_on_edge is for now replaced by a global datamanager in xMesh which
        is filled up by both   xRefCutToAOMD and createInterfaceFromLevelSet to store
        the position of the nodes of an interface mesh describing an isolevel of a
        level set on their parentedge. It is typically used in class xLevelSet to
        reinterpol data defined on the edge's node to the intersection point.
        void xMesh::clear(mEntity *) and void xMesh::setDataManagers() are updated.
      
      -The old global xMesh tag is_the_creator_of, was in fact used only
        "locally" both in xMesh member function  createInterfaceFromLevelSet and
        in xRefCutToAOMD. There is no need to keep a global data of any kind.
        Its is therefore replaced by a local datamanager for this two case.
        In The first case it is destroy at exit of the createInterfaceFromLevelSet
        and in the second at the destruction of the object xRefCutToAOMD.
      
      - xMesh::createInterfaceFromLevelSet -> interface changed:
         void createInterfaceFromLevelSet(const xLevelSet& ls) ->
         void createInterfaceFromLevelSet(const xLevelSet& ls,
                                     datamanager_t<AOMD::mEntity *> &was_created_by,
      		               datamanager_t<double> &r_on_edge);
      
        Now the function clearly take two datamanager to represent was_created by
        and r_on_edge.   It was possible to change the interface of
        createInterfaceFromLevelSet so that   (almost) all the data that it
        filled up appears in it's description.
        (it indeed filled up both a was_created_by_tag and r_on_edge.) There are still
        some stuff that happen behind the curtain in this function for cases where non
        -simplex entities in the support of the level-set are cut by the iso-zero
        ("simplexisation" ...) that I plan to improve in a next commit.
        The interface change is applyied were it is used :
        xCrack/src/JintParks.cc, xCut/xLegacySimpleCut/src/xPhysSurf.cc,
        xExt/src/DoubleCutting.cc, xLevelSet.cc
      
      - xCut/xLegacySimpleCut/src/xRefCutToAOMD.cc/.h are updated to reflect the
        changes with r_on_edge and is_the_creator_of.
      
      The 9 modified files are also clang-formated :
      xCrack/src/JintParks.cc
      xCut/xLegacySimpleCut/src/xPhysSurf.cc
      xCut/xLegacySimpleCut/src/xRefCutToAOMD.cc
      xCut/xLegacySimpleCut/src/xRefCutToAOMD.h
      xExt/src/DoubleCutting.cc
      xFEM/src/xLevelSet.cc
      xFEM/src/xMesh.cc
      xFEM/src/xMesh.h
      xFEM/src/xMeshCut.cc
      79eb01a3
  16. 10 Apr, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xfem] Reduces dependencies on xMesh.h. This has implications in other parts of the lib. · 9c703287
      Nicolas CHEVAUGEON authored
          Currently, xMesh.h, by cascading include, is visible by a too large part of
          the library. Change one Character of xMesh.h, and you need to recompile
          the world. The aim of this commit is to reduce these dependencies.
          It affect lots of files but only a little in each. As discuted in meeting,
          I won't clang format them all for this push, But I clang format the added files.
      
          ADDED FILES :
      
          1 xFEM/src/xMeshFwd.h
          2 xFEM/src/xIntegrationRuleFwd.h
          3 xInterface/AOMD/general/src/xAOMDEntityUtil.h
          4 xInterface/xOctree/src/OctreeUtilities.cc
      
          1 xMeshFwd.h : A forward header fo xMesh.h. Include this where you need to
           forward declare the type defined in xMesh, but not there full declaration.
           Typically include it in place of xMesh.h wherever you need the type previously
           defined in xMesh but not their full description (you only declare pointer or
           refs to xMesh, you just need xIter, xClassIter or xPartition or the type of
           partman used inside xMesh (parmanxMesh_t) )
      
          2 xIntegrationRuleFwd.h, same philosophie as above, a forward header for
           xIntegrationRule. it forward declare class xIntergrationRule and define the
           type def xGetPartion (the function used to parametrize how to get the sub
           elements in the xIntergrationRulePartition familly.
      
          3 xAOMDEntityUtil.h Some function previously defined in xMesh.h/cc,
           are in fact simple utility function applied on mEntity.
           There are place in the code where they are needed, but where you don't need
           xMesh. For now I moved the following one there, in namespace xiterface::aomd :
            - void getSubentities(AOMD::mEntity* e, const int d,
                                  std::vector < AOMD::mEntity * > &l);
            - void getSupportBoundary(AOMD::mEntity *in,
                                     std::set<AOMD::mEntity *> &supportBoundary )
           They are used in :
            xCut/xLegacySimpleCut/src/xRefCutToAOMD.cc,
            xGeom/src/xDistanceNearestPointGenerator_imp.h, xTLS/src/xRefCutToCGAL.cc
      
          4 OctreeUtilities.cc This is an implementation file for OctreeUtilities.h
            Following function are moved to the .cc :
            xLevelSetTo_ls_xyz_t_Adaptator::xLevelSetTo_ls_xyz_t_Adaptator(xLevelSet &ls_)
            double  xLevelSetTo_ls_xyz_t_Adaptator::operator()(x,y,z).
            using namespace xfem and using namespace xoctree; are removed from the global
            scope in OctreeUtilities.h
      
          INTERFACE CHANGES :
      
          - xIntegrationRulePartition familly : the getpartition function that
            parametrize how to go from the integ entity to it's sub entity must now be
            given explicitly as a first argument.
            Rational : when first introduced, this parametrization could be implicit
            thanks to a default argument set to the static xMesh::getPartition.
            This implied an unwanted dependencies of xIntegrationRule to xMesh, and make
            user code unclear on the real dependencies of there Integration rule to
            there cutting process. Concerned files :
            xCrack/src/IntegratorSingularCrack2D.cc,
            xCrack/src/IntegratorSingularCrack3D.cc, xFEM/src/xIntegrationRule.h,
            xFEM/src/xIntegrationRule.cc, xFEM/src/xIntegrationRuleStored.h,
            xFEM/src/xIntegrationRuleStored.cc, xPhysics/src/xpElastic.cc,
            xPhysics/src/xpFluidMechanics.cc, xPhysics/src/xpFluidMechanics.cc,
            xPhysics/src/xpThermic.cc, xTLS/src/TLSGeomInterface.cc,
            xTLS/src/TLSGeomInterfaceSignedVectorDistanceFunction.cc,
            xTLS/src/TLSGeomInterfaceSignedVectorLevelSet.cc,
            xTLS/src/TLSGeomInterfaceVectorLevelSet.cc
      
          - xCrack/src/xcFront.h : added begin and end to iterate on front_parts.
            used to simplify loops in
            in xCrack/src/xcFrontDomainManager.cc, xCrack/src/xcFrontManager.cc,
            xCrack/src/xcInteractionIntegralsOnCrack.cc
      
          - xCrack/src/xcInteractionIntegralsOnCrack.h
            xAcceptLocalPart is now template on the DATAMANAGER that store was_created_by
             affected files : xCrack/src/xcInteractionIntegralsOnCrack.cc
      
          - xFEM/src/xAlgorithm.h :
            DeclareInterpolationHanging : the datamanager needed need now to be
            explicitlty given (no default value). Rational:  again the default
            value hide to  the user the real dependencies of the algorithm.
      
          - xFEM/src/xValueCreators.h :
            * xMirrorCreator : used to interconnect xValue on "mirror" entity,
            typically used for periodic Boundary condition. Previously, it was
            using an xMesh pointer and internal call to AOMD's lookupForMirrorEntities,
            on this mesh. This is too dependend on both xMesh and AOMD. Looking closely,
            all that is needed for this algorithm to work is a way to get from one entity
            a list of entity it mirror. The new interface is based on that.
            At construction, full control is given to the user which just have to give
            an std::function that take a pointer to a mesh entity and return the list
            of mirror entity. the pointer to the mesh itself is not needed anymore.
            * xValueCreatorRegularAndHanging : no default value any more for the
            isHangingOn at construction (same rational as for the use of the other
            static datamanger of xMesh, if you use them, do it explicitly.)
            the pointer to the mesh is not needed any more at construction.
      
          IMPLIED MODIFICATIONS:
      
          - replaced xMesh.h by xMeshFwd.h or include xMeshFwd.h or remove include xMesh.h
           in the following files :
            xCrack/src/CrackPostpro.h, xCrack/src/lCrack.h, xCrack/src/xcFront.h,
            xCrack/src/xcFrontDomain.h, xCrack/src/xcCrackBase.h,
            xCrack/src/xcFrontDomainManager.h, xCrack/src/xcFrontPart.h,
            xCrack/src/xcFrontSpaceManager.h, xCut/xDoubleCut/src/xElemCutDomainData.h,
            xCut/xDoubleCut/src/xPhysDomain.h,   xCut/xDoubleCut/src/xPolytopeOFF.cc,
            xCut/xDoubleCut/src/xPolytopeToAOMDElem.h,
            xCut/xLegacySimpleCut/src/xPhysSurf.h,
            xCut/xLegacySimpleCut/src/xPhysSurfVLS.h,
            xCut/xLegacySimpleCut/src/xRefCut.cc,
            xCut/xLegacySimpleCut/src/xRefCutToAOMD.h,  xExport/src/xPostPro.h
            xExt/src/DoubleCutting.h, xFEM/src/xApproxFunctionCorrectedShifted.cc,
            xFEM/src/xData.h, xFEM/src/xElement.cc,  xFEM/src/xGatherMesh.h,
            xFEM/src/xIntegrationRule.cc, xFEM/src/xIntegrationRule.h, xFEM/src/xRegion.h,
            xFEM/src/xRegularGrid.h, xFEM/src/xMeshFwd.h, xFEM/src/xSubMesh.h,
            xFEM/src/xSubMeshManager.cc, xFEM/src/xSubMeshManager.h, xFEM/src/xValue.cc,
            xFEM/src/xValue.h, xFEM/src/xValueManager.h, xFEM/src/xValue_imp.h
            xFEM/src/xVectorField.cc (include xRegion instead), xFEM/src/xVectorField.h,
            xFEM/src/xVectorLevelSet.h, xGeom/src/xDistanceNearestPointGenerator.h
            (use "xAOMDEntityUtil.h"), xInterface/xOctree/src/surf2LevelSet.h,
            xPhysics/src/xpThermic.cc,
            xTLS/src/TLSGeomInterfaceSignedVectorDistanceFunction.h,
            xTLS/src/TLSGeomInterfaceSignedVectorLevelSet.h, xTLS/src/TLSVelocity.h,
            xTLS/src/xRefCutToCGAL.cc
      
          - include xMesh.h in the following files :
            xCrack/src/ExportSensors.cc, xCrack/src/JintModalParks.cc,
            xCrack/src/lCrack.cc,  xCrack/src/xcFront.cc
            xCrack/src/xcFrontDomain.cc,  xCrack/src/xcFrontDomainManager.cc
            xCrack/src/xcInteractionIntegralsOnCrack.cc,
            xCut/xDoubleCut/src/xPolytopeToAOMDElem.cc
            xCut/xDoubleCut/src/xSignedVectorLevelSetEnrichment.h,
            xExport/src/xPostPro.cc,  xExt/src/SpaceLagrangeDualBoundary.cc,
            xExt/src/SpaceLagrangeDualMinBoundary.cc,
            xExt/src/SpaceLagrangeDualNewBoundary.cc, xExt/src/SpaceLagrangeDualSimple.cc,
            xFEM/src/xApproxFunctionCorrectedShifted.cc, xFEM/src/xCommandOnGeomElem.h,
            xFEM/src/xExtendShapeFcts.h, xFEM/src/xGatherMesh.cc,
            xFEM/src/xNonLocalInfoForKeysAndFcts.h, xFEM/src/xRegularGrid.cc,
            xFEM/src/xSubMesh.cc, xFEM/src/xValueCreators.cc,
            xInterface/xOctree/src/surf2LevelSet.cc, xPhysics/src/xPhysSurf3.cc,
            xPhysics/src/xpElastic.cc, xPhysics/src/xpFluidMechanics.cc,
            xTLS/src/TLSGeomInterfaceSignedVectorDistanceFunction.cc
      
           -removed useless forward declaration of xMesh in :
            xCrack/src/xcFrontSpaces.h, xCrack/src/xcInteractionIntegralsOnCrack.h,
            xCut/xLegacySimpleCut/src/xPhysSurfByTagging.h,
            xCut/xLegacySimpleCut/src/xPhysSurfParameter.h, xExport/src/xSensors.h,
            xExt/src/xPhysBand.h, xPhysics/src/xpFluidMechanics.cc,
            xTLS/src/TLSEnrichment.h, xTLS/src/TLSGeomInterfaceVectorLevelSet.h,
            xTLS/src/TLSValueCreatorRampHeaviside.h, xTLS/src/TLSVelocity.h,
            xTLS/src/xEvalWeightedDirectionalAverage.h
      
           -replaced include xIntegrationRule.h by xIntegrationRuleFwd.h
            or remove xIntegrationRule.h :
            xCut/xDoubleCut/src/xPhysDomain.h, xFEM/src/xAlgorithm.h, xFEM/src/xField.h,
            xFEM/src/xIntegrationRule.h, xFEM/src/xSpace.h, xTLS/src/TLSGeomInterface.h
      
          - Trellis/Util/Util/include/mPoint.h
            Added stream operator <<  for mPoint.
          - lCrack.cc/h :
            int lCrack::dim() const,  void lCrack::setV1Ddebug(std::function ...),
            lCrack::~lCrack  are moved to lCrack.cc.
            using namespace xfem moved from global scope to inside namespace xcrack
          - xCut/xDoubleCut/src/xElemCutDomainData.cc :
            now include "mVertex.h"
          - xCut/xLegacySimpleCut/src/xPhysSurf.cc/h  :
            int   xPhysSurfBase::dim() const,   xPhysSurf::~xPhysSurf() and
            xPhysSurfOctree::xPhysSurfOctree  implementations moved to xPhysSurf.cc
          - xExt/src/SpaceLagrangeDualBoundary.cc/h :
            OutsideVertex::OutsideVertex(const xLevelSet* f) and
            AOMD::mEntity* OutsideVertex::operator()(AOMD::mEntity* e) are now
            implemented in the .cc file
          - xFEM/src/xData.cc : data member in xData::nb_evo now initialized to 0
          - xFEM/src/xElement.cc :
            xElement::xyz2uvw(const Trellis_Util::mPoint& xyz) this function that
            invert the mapping was constructing a temporary xMesh in case of QHAD and HEX,
            containing only one element..  This was way more to much than needed,
            since Trellis_Util::Mapping used in this function just need an mEntity.
            I replaced the construction of an xMesh by the construction of the correct
            mEntity only.
          - xFEM/src/xLevelSet.h :  added now needed include unordered_map
          - xFEM/src/xLevelSetOperators.cc :
            call xRegion::dim() instead of xRegion::getMesh()->dim() rational :
            remove deps on xMesh, clearer.
          - xFEM/src/xLevelSetOperators.h :
            removed using std::cout/endl at global scope, added include xEntityFilter
          - xFEM/src/xMesh.h :
            removed using std::map, std::vector, std::set, std::string at xfem scope,
            now   include  xMeshFwd.h, getSupportBoundary and getSubentities now moved to
            xInterface/AOMD/general/src/xAOMDEntityUtil.h
          - xFEM/src/xRegularGrid.h/cc :  xRegularGrid::xRegularGrid implementation
            moved to .cc
          - xFEM/src/xRegularGrid.h : #define TOL 1.e-06 at xfem scope,
            replaced by  constexpr static  double TOL  = 1.e-06; in xfem::xRegularGrid
          - xFEM/src/xSpace.cc now include "xIntegrationRule.h"
          - xFEM/src/xValueCreatorLinkOnFrontFiltered.cc, in ::buildTable
            a non-standard variable size array was used (vertices).
            Replaced by a std::vector.
          - xFEM/src/xVectorField.cc some loop where rewritted.
          - xInterface/xOctree/src/surf2LevelSet.cc implementation of  surface2LevelSet
            constructors,  computeWeightedPseudoNormals::proceed(),
            surface2LevelSetNarrowBand  are moved to the .cc
            rational : these functions call some xMesh member functions)
          - xPhysics/src/xpEval.h/cc ElementLengthMaterialVariablesVisitor_c moved to .cc
            rational : constructor use some member of xMesh.
          - xPhysics/src/xpPhysicalFormulation.cc  : used xRegion member dim, begin and end instead of asking the same on a region "all" meshes's. (rational : reduce deps on xMesh, clearer code)
      
          ADDED std:: in front of standard symbol
           By cascading inclusion, using namespace std was visible in some files
           (comming from some AOMD include). After the change in the inclusion hierachy,
           namespace std is not visible any more in some header file. I choose to not add
           using namespace std at global scope of a header file, and add to std::
           in front of standard symbols. Concerned files :
           xCrack/src/JintParks.h, xCrack/src/xcFrontManager.cc,
           xCut/xDoubleCut/src/xSignedVectorLevelSet.h,
           xCut/xDoubleCut/src/xSignedVectorLevelSet_imp.h,
           xExport/src/xExportAlgorithm.cc, xExport/src/xPostProVTU.h,
           xExt/src/MaterialCommand.h, xExt/src/SpaceLagrangeDualNewBoundary.cc,
           xExt/src/SpaceLagrangeDualNewBoundary.h, xExt/src/ValueOldAndCurrent.h,
           xFEM/src/xAlgorithm.h, xFEM/src/xDistStateOfValue_imp.h, xFEM/src/xElement.cc,
           xFEM/src/xMaterialSensitivity.h, xFEM/src/xSpacePolynomialQH.h,
           xFEM/src/xSubMesh.h, xFEM/src/xValueLinearCombination_imp.h,
           xFEM/src/xVectorLevelSet_imp.h, xFastMarching/src/FMUpdater.h,
           xTLS/src/TLSGeomInterface.h, xTLS/src/TLSVelocityModeEshelby_imp.h,
           xTLS/src/xEvalLSAdvanceFromImposedConditions_imp.h
      
          ADDED using namespace std :
           Same reason as above, I added using namespace std in .cc files that needed it :
            - xCrack/src/xcFrontDomain.cc, xCrack/src/xcFrontSpaceManager.cc,
              xExport/src/xPostProMSH.cc, xExt/src/SpaceLagrangeDualNewBoundary.h,
              xExt/src/SpaceLagrangeDualSimple.cc
      
          removed using namespace xfem :
            xFEM/src/xGatherMesh.h
      
          replace some old style cast by static_cast :
            - xExt/src/SpaceLagrangeDualNewBoundary.cc
      9c703287