1. 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.
    • 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.
          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
      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.
  2. 09 Sep, 2020 1 commit
  3. 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.
  4. 22 Jul, 2020 1 commit
  5. 02 Jul, 2020 1 commit
  6. 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
      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
  7. 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
          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.
  8. 15 Jun, 2020 1 commit
  9. 04 Jun, 2020 1 commit
  10. 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
          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.
  11. 10 May, 2020 1 commit
  12. 07 May, 2020 1 commit
    • 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 :
  13. 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 :
  14. 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 :
            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
          - 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/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,
          - 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.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.
          - 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/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,
            xTLS/src/TLSGeomInterfaceSignedVectorLevelSet.h, xTLS/src/TLSVelocity.h,
          - 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
            xExport/src/xPostPro.cc,  xExt/src/SpaceLagrangeDualBoundary.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,
           -removed useless forward declaration of xMesh in :
            xCrack/src/xcFrontSpaces.h, xCrack/src/xcInteractionIntegralsOnCrack.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,
           -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
          - 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,
           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,
          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,
          removed using namespace xfem :
          replace some old style cast by static_cast :
            - xExt/src/SpaceLagrangeDualNewBoundary.cc
  15. 08 Apr, 2020 2 commits
    • Nicolas CHEVAUGEON's avatar
      [xFEM] replace xMesh was_created_by_tag by a static DataManager in xMesh. · f2906dd0
      Nicolas CHEVAUGEON authored
          - As usual in this process of removing raw AOMD tag usage, this
            release remove yet another tag :
          was_created_by_tag(), which is use in lots of place in the library
          to refer to the entity that created the current one when it was cut.
          This commit remove the famous was_created_by_tag and replace it with
          a static DATAMANAGER inside xMesh, accessible via get_was_created_by() and
          Not suprisingly, the produced at first  some error in the test case,
          again due to some data still In the manager while the entity is already
          The following point solved this issue.
          -cleaning process of xMesh and an entity of the xmesh is improved.
          In particular we rewrite the override of mMesh::del(AOMD::mEntity *)
          in xMesh, to make sure it actually cleaned all the data related to the
          entity that are owned by xMesh.
          A clear() member function is also defined that empty the mesh
          and all the Data related to it.
         - In xMesh, the DATAMANAGER implementation used can now be easily
           changed.  This is in previsison of what will be needed withe the mesh
           interface ... We need to be able to use something else than
           xAttachedDataManagerAOMD. To try with a new DATAMANAGER implementation,
          just change the definition of template type alias datamanager_t in
          xMesh. It was tested in particular with xUnorderedMapDataManager,
          and it imposed some slight changes in other files updated in this commit.
          In particular some class and function are now template on the
          DATAMANAGER implementation used.
          Testing with other implementation also reveiled some mistake in the
          implementation of .at(key) which are now corrected both in
          xUnorderedMapDataManager and xGeneralUnorderedMapDataManager.
          - changing the name of the preproc guards in xMesh.h that did not
            follow the
            usual format  in Xfiles
          - Racionaliz better the usage of xMesh.get_xxdatamanager() versus
            xMesh.get_xxconstdatamanager(). This make things more clear
            regarding to what function might or might not modify the xMEsh's data.
          - mMesh.createVertex(id, point, ...) is know used almost wherever
            possible in the library, improving
            readability (and may be cleaner compiled programm)
      	modified:   xCrack/src/CrackPostpro.cc
      	modified:   xCrack/src/IntegratorSingularCrack3D.cc
      	modified:   xCrack/src/Jint3D.cc
      	modified:   xCrack/src/Jint3D.h
      	modified:   xCrack/src/lCrack.cc
      	modified:   xCrack/src/xcFront.cc
      	modified:   xCrack/src/xcFrontManager.cc
      	modified:   xCrack/src/xcInteractionIntegralsOnCrack.h
      	modified:   xCut/xDoubleCut/src/xPhysDomain.cc
      	modified:   xCut/xDoubleCut/src/xPhysSurfCut.cc
      	modified:   xCut/xLegacySimpleCut/src/xPhysSurf.cc
      	modified:   xCut/xLegacySimpleCut/src/xRefCutToAOMD.cc
      	modified:   xExt/src/DoubleCutting.cc
      	modified:   xExt/src/SpaceLagrangeDualBoundary.h
      	modified:   xExt/src/SpaceLagrangeDualMinBoundary.cc
      	modified:   xExt/src/SpaceLagrangeDualNewBoundary.cc
      	modified:   xExt/src/SpaceLagrangeDualSimple.cc
      	modified:   xFEM/src/xApproxFunction.cc
      	modified:   xFEM/src/xEntityToEntity.cc
      	modified:   xFEM/src/xEntityToEntity.h
      	modified:   xFEM/src/xGatherMesh.cc
      	modified:   xFEM/src/xGatherMesh.h
      	modified:   xFEM/src/xLevelSet.cc
      	modified:   xFEM/src/xMesh.cc
      	modified:   xFEM/src/xMesh.h
      	modified:   xFEM/src/xMeshCut.cc
      	modified:   xFEM/src/xNonLocalInfoForKeysAndFcts.h
      	modified:   xFEM/src/xNonLocalInfoForKeysAndFcts_imp.h
      	modified:   xFEM/src/xValueCreators.h
      	modified:   xInterface/xOctree/src/AdaptOctreeToAOMD.cc
      	modified:   xInterface/xOctree/src/AdaptOctreeToAOMD.h
      	renamed:    xInterface/xOctree/src/AdaptOctreeToAOMD.cc -> xInterface/xOctree/src/AdaptOctreeToAOMD_imp.h
      	modified:   xInterface/xOctree/src/InterfaceOctreeToAOMD.cc
      	modified:   xInterface/xOctree/src/InterfaceOctreeToAOMD.h
      	renamed:    xInterface/xOctree/src/InterfaceOctreeToAOMD.cc -> xInterface/xOctree/src/InterfaceOctreeToAOMD_imp.h
      	modified:   xInterface/xOctree/src/OctreeUtilities.h
      	modified:   xInterface/xTemplateRefineMesh/src/xSplitAOMD.cc
      	modified:   xTLS/src/TLSVelocity.cc
      	modified:   xTLS/src/reInitLevelSetFromFront.cc
      	modified:   xTLS/src/reInitLevelSetFromFront.h
      	new file:   xTLS/src/reInitLevelSetFromFront_imp.h
      	modified:   xTLS/src/xAcceptNotHanging.cc
      	modified:   xTLS/src/xAcceptNotHanging.h
      	modified:   xTLS/src/xEvalWeightedDirectionalAverage.cc
      	modified:   xTLS/src/xEvalWeightedDirectionalAverageMode.cc
      	modified:   xTool/src/xGeneralUnorderedMapDataManager.h
      	modified:   xTool/src/xUnorderedMapDataManager.h
    • Nicolas CHEVAUGEON's avatar
      [xFEM, xCut, xExt] removing raw tags : partition_tag · 8be52876
      Nicolas CHEVAUGEON authored
      Main Changes :
          in xMesh, the static tag partition_tag used to attach the submeshes
          a cutted entities is replaced by a static xAttachedDataManagerAOMD<xMesh>
          called xMesh::partition.
          as for the other tag replacement in xMesh, it is a private static
          member, one cas access it in const or non const version bien calling
          xMesh::get_const_partition() or
          All the previous use in the library and the test case of
          get_was_created_by_tag() have been corrected. It first leads to some memory problemes
          revealed by the test cases
          at final destructions, and some related changes had to follow to
          solve them.
      Related changes :
         - xMesh * xfem::xData::mesh, usually allocated by xData is now
           properly destroyed by
            calling delete, .mesh is not a nullptr.
            Since it was not the case before, lots of test cases were crashing
            at exit destruction
            since the dataManager where still refering to some destroyed
            In the test cases, for the rare cases where the user was manually
            setting the the .mesh pointer to a stack variable adress or
            to a pointer that he newed on his side, the data.mesh pointer is
            set to nullptr before
            the destruction  of the data variable. This insure that in most
            used cases the mesh in xData is cleanly destroyed in xData destructor.
          - We need to ensure that the static datamanager of xMesh are
            constructed after and   destroyed before the AOMD::Util::instance()
            construction and destruction, that manage the meshdata id.
            They are  now therefore constructed as static inside the get functions,
            instead of relying on default static member variable initialization.
            Only the  get_xxx() and get_const_xxx() are now visible in the
            .h file. The  get_xxx() and get_const_xxx are now the only way to get
            access to the    datamanager, even in a member function of xMesh.
          - Correcting some trouble with some test cases, it appeared that,
            all the  xAttachedDAtaManagerAOMD needs to be initialized at the creation
            of the first xMesh :  Other wise, an other AOMD tag could be created and
            then  destroyed, without having all the data associated to it properly
            cleaned. Then at a xMesh detruction, we could get for the first
            time one of the static xAttachedDAtaManagerAOMD in order to clean
            it up, so that a tag previously used could be reused while some
            data   with the same tag still exist at time of the xMesh destruction.
      Minor Changes
          - xSignedVectorLevelSet_imp.h constructor from iterator and stream
            has been updated, so that we don't have strong dependencies in the order
            of the vertices in the iterators relative to the order of the data in
            the  mesh. This was usefull to solve troubles with test case
            hammerhead for example.
          - using createVertex(id, point, ...)  in xPhysSurfCut.cc
          - some clean up of commented out stuff in xMesh.cc
      	modified:   xCut/xDoubleCut/src/xPhysSurfCut.cc
      	modified:   xCut/xDoubleCut/src/xSignedVectorLevelSet_imp.h
      	modified:   xCut/xLegacySimpleCut/src/xPhysSurf.cc
      	modified:   xCut/xLegacySimpleCut/src/xRefCutToAOMD.cc
      	modified:   xExt/src/DoubleCutting.cc
      	modified:   xFEM/src/xData.cc
      	modified:   xFEM/src/xExtendShapeFcts_imp.h
      	modified:   xFEM/src/xMesh.cc
      	modified:   xFEM/src/xMesh.h
              modified:   xFEM/src/xMeshCut.cc
  16. 31 Mar, 2020 1 commit
    • Gilles MARCKMANN's avatar
      Convert ISO-8859 files inti UTF-8: · edaf2d66
      Gilles MARCKMANN authored
      - xCrack/src/CrackPostpro.cc
      - xCrack/src/IntegratorSingularCrack3D.cc
      - xCrack/src/JintParks.cc
      - xCrack/src/SingularCrackMapping.h
      - xExport/src/xExportTranslate.cc
      - xExt/devel/double-cut/main.cc
      - xExt/src/DoubleCutting.cc
      - xLinAlg/xSolverBase/src/xCSRMatrix.h
  17. 05 Mar, 2020 1 commit
    • Nicolas CHEVAUGEON's avatar
      [xFEM xCrack xCut xExt xTLS] unifying (a bit ..) tag usage from xMesh · 5b5841a1
      Nicolas CHEVAUGEON authored
      xMesh gives acces to (a huge number of ) statically defined tag used to attach information on mEntity. before this commit there was to was to access theses tag :  either by directly accessing the static data member xxxx_tag or by calling the static member  function  get_xxxx_tag(). This to way of doing the same thing complicate the cleaning up of the tag usage in the library.
      After this commit, all the static member xxx_tag becomes private. Only the get_xxx_tag() function are public.
  18. 03 Feb, 2020 1 commit
    • Alexis SALZMAN's avatar
      [xFEM] change creator/updator argument type in xAlgo. declar/update · 0be44bc9
      Alexis SALZMAN authored
      Original DeclareInterpolation,UpdateInterpolation,DeclareState, ....
      were all using a std::function as argument type for creation/updating
      operation passed to those functions.
      G.L. discovers during xField templatization that old compiler where in
      default with the new signature of these arguments.
      In fact the problem comes from the fact that in general we provides a
      instance (xValueCreator, xStateDofCreator, ....) for these arguments.
      Says we rely on the compiler to do some binding of the instance to the
      std::function. With linked template instance things where to complex apparently
      for g++ 4.8.2.
      A more general approach is to consider a new template parameter for those
      arguments. This way either object function, std:function, lambdas, ...
      can be passed to these function. Now it's clear for the compiler and for
      the user: what is passed is something that correspond to a function
      with specific argument and returned value.
      For DeclareInterpolation, ....
      it's xValue<typename FIELD::value_t>* (const xValKey&) const
      Those argument are passed by reference to insure that "creator" are
      not copied. And to be able to call DeclareInterpolation,... with
      on the fly creation of "creator" those arguments are considered as
      const. This imply now that () operator of "creator" must be const.
      This is why in this commit many other files have been modified to
      respect this constness. Note that in most case "creator" () operator
      were intrinsically const. For some, mutable data member were needed.
      In all case considering that  DeclareInterpolation,... do not
      change the "creator" is rather logical.
  19. 27 Jan, 2020 1 commit
    • Grégory LEGRAIN's avatar
      Let there be template fields ! · 3cc692f4
      Grégory LEGRAIN authored
      This is a first implementation of template fields in eXlibris.
      Thanks a lot to Alexis (@asalzman) and Nicolas (@nchevaugeon) for fruitful discussions !
      Fields can now handle other quantities than double (complex for instance).
      This has led to multiple changes:
      * xDoubleManager disappears
      * xValueDouble disappears
      * Assembly is now templatized
      However, the changes are small with respect to the interface in your applications (see the testcases).
          Notable changes
      Is replaced by  xValueManagerDist<T> ("Dist" stands for "distributed"). This template class handles other values  than double.
      Example : xValueManagerDist<double> value_manager;
      In your end-user code (AND NOWHERE ELSE), you can define a convenient typedef :
      using  xDoubleManager = xValueManagerDist<double>;
      xValueDouble is replaced by xSingleValue<T> where T stands for the type which is stored.
      Move value creators in xValueCreators.h
      is now template (should not influence end-user code)
      xStateDofCreator, xStateFixedCreator are also template.
      now template against the approximated quantity: xField<double> for a double-valued field
      Major internal modifications: "everything" is handled by the specialization of getVal and getGrad. For example:
      template <class iterFct, class iterVal>
      static void getVal (iterFct it, iterFct ite, iterVal first, iterVal last, int size_Fct_Val,
                    const xGeomElem* geo_appro, const xGeomElem* geo_integ, std::complex<double>& v);
      xFormBilinear, xFormLinear:
      A new template is added (double by default):
      template <typename VT = double> class xFormBilinear;
      It corresponds to the type of quantity which is stored in the elementary stiffness matrices (note that xFemMatrix and other are now template). Usually, you can keep it as double, but this is not mandatory (see BUILD_COMPLEX_VALUED_OPERATORS in test case complex2d).
      xAssembler, xAssemblerTraitPolicy, xDispatcher are modified to take into account the other changes.
      An example of complex-valued field is given in Xtest/xfem-para-test/complex2d (however, see issue #58)
      KNOWN limitations/issues (that will be fixed later on):
      * type dependent code in xField is still part of the class. We should try to move this code away from the core of the class (issue #60).
      * float and complex version of mumps are still not available, so you cannot fully run any float or complex testcases for the moment  (see issue #58)
      * the compiler on titan (gcc 4.8) has troubles during template deduction for some template functions (DeclareInterpolation, DeclareState), see issue #59. The syntax had to be modified in order to help the compiler, leading to verbose notations.
  20. 09 Dec, 2019 1 commit
    • Nicolas CHEVAUGEON's avatar
      remove the depencies of xFEM on xExport · 967e0a06
      Nicolas CHEVAUGEON authored
          Before the current commit, we had the problem that the xfem library depends on the export library and vice versa. This cyclic dependencies causes lot of problemes for the build.
          In particular, it was very difficult to make some of our test case build with cmake version 3.13.4
          To make xFEM independant of xExport, the main task was to move the Export algorithms out of the xFEM library. All these algorithm are now implemented in xExportAlgorithm.h/cc int the xExport library, under the xexport name space.
          That done, some dependencies remained in the xVectorLevelset.h/cc. This file previously contain our first version of vectorlevelset (that came before the signed vector distance function) and the first version of the 2d doublecut algorithm, embedded in the class xPhysSurfVLS. The class xPhysSurfVLS itself has been moved where I think it belong, to xCut/xLegacy and the xcut namespace in file xPhysSurfVLS.h/cc. This being done we are one step closer to also have removed the cyclic dependencies between xfem and xcut.
          Most of the other changes in the library reflect the fact that we now have to include xExportAlgorithm.h to have access to the Export algorithm which is now in name space xexport. The same work as been done in the xTest repository and will be commited next.
          A small "bug" in  xUtil/cmakeUtil/FindNoHeaderLibrary.cmake as also been corrected. (it was always printing lapack REQUIRED whatever the library that was missing)
       + small modif in FindTAUCS.cmake. It was freezing when TAUCS_INCLUDE_PATH was not set.
      Squashed commit of the following:
      commit 1f50932ee6a6a4dde8cd35d5793112a6f4b934d4
      Merge: 9e3ba9e db82eb04
      Author: Nicolas CHEVAUGEON <nchevaug@titan.ec-nantes.fr>
      Date:   Mon Dec 9 10:36:16 2019 +0100
          Merge remote-tracking branch 'origin/master' into remove_xexport_dep
      commit 9e3ba9e57013dfa2de1e39163b29faa409a2cb21
      Author: Nicolas CHEVAUGEON <nchevaug@titan.ec-nantes.fr>
      Date:   Mon Dec 9 10:02:36 2019 +0100
          finishing the move of Export algo to xexport.
          + small modif in FindTAUCS.cmake. It was freezing when TAUCS_INCLUDE_PATH was not set.
      commit fa64d29ddc406acd5225774b7aae487072b0666c
      Merge: 8a6a9557 f94d6e0
      Author: Nicolas CHEVAUGEON <nchevaug@titan.ec-nantes.fr>
      Date:   Fri Dec 6 12:05:11 2019 +0100
          Merge branch 'tryingtobuild' of http://git.gem.ec-nantes.fr/nchevaugeon/Xfiles_Save into remove_xexport_dep
      commit f94d6e0b722c7066f526d7e45970a2c02ed27d9d
      Author: chevaugeon <nicolas.chevaugeon@ec-nantes.fr>
      Date:   Fri Dec 6 09:38:34 2019 +0100
      commit b3ac48f0d5d5d29ea8ab8f5798775e607598525b
      Author: chevaugeon <nicolas.chevaugeon@ec-nantes.fr>
      Date:   Wed Dec 4 16:30:33 2019 +0100
          remove the depencies of xFEM on xExport
          Before the current commit, we had the problem that the xfem library depends on the export library and vice versa. This cyclic dependencies causes lot of problemes for the build.
          In particular, it was very difficult to make some of our test case build with cmake version 3.13.4
          To make xFEM independant of xExport, the main task was to move the Export algorithms out of the xFEM library. All these algorithm are now implemented in xExportAlgorithm.h/cc int the xExport library, under the xexport name space.
          That done, some dependencies remained in the xVectorLevelset.h/cc. This file previously contain our first version of vectorlevelset (that came before the signed vector distance function) and the first version of the 2d doublecut algorithm, embedded in the class xPhysSurfVLS. The class xPhysSurfVLS itself has been moved where I think it belong, to xCut/xLegacy and the xcut namespace in file xPhysSurfVLS.h/cc. This being done we are one step closer to also have removed the cyclic dependencies between xfem and xcut.
          Most of the other changes in the library reflect the fact that we now have to include xExportAlgorithm.h to have access to the Export algorithm which is now in name space xexport. The same work as been done in the xTest repository and will be commited next.
          A small "bug" in  xUtil/cmakeUtil/FindNoHeaderLibrary.cmake as also been corrected. (it was always printing lapack REQUIRED whatever the library that was missing)
  21. 27 Sep, 2019 1 commit
    • Grégory LEGRAIN's avatar
      [xTensor] Templatize xTensor · c8b56a21
      Grégory LEGRAIN authored
      xVector, xTensor2* and xTensor4 are now template classes
      xTensor4Isotropic, xTensor4AnisoPlaneStrain and xTensor4AnisoPlaneStress
      remain double-valued objects as they make sense only in this context.
      By default, value type is double, so that you may only have to replace
      xVector by xVector<> and so on in your code.
      Update Tensor operations such that xTranspose, xVonMisesNorm etc...
      Theya are also double-valued by default : xTranspose<> is equivalent to
      Update the rest of the repository accordingly
  22. 10 Sep, 2019 1 commit
    • Grégory LEGRAIN's avatar
      [xFEM,xLinalg,...] Templatize xDistVector / Introduce xCPPBlasDef<T> · 70fc502c
      Grégory LEGRAIN authored
      Thanks a lot to @asalzman for his help.
      xDistVector is now a template class: it can hold any numerical types
      such as float, double, std::complex<double> etc...
      By default, double values are assumed, so that in your code, you should
      only need to replace xDistVector by xDistVector<>
      In addition, xlinalg::xCPPBlasDef<T> is introduced in order to simplify
      blas calls, and allow easy template blas code. All the available calls
      are listed in xBlasDef.h. Today, float, double and complex<double>
      values are considered (not with feature parity).
      xCSRVector, xDenseMatrix etc... are modified to use xCPPBlasDef.
      Update xDistVector atomic test case to float/double/complex values
  23. 14 Jun, 2019 1 commit
    • Gilles MARCKMANN's avatar
      refactoring 2019: renames namespace, creates new directories, ... · e6039c6a
      Gilles MARCKMANN authored
          rename directory and namespaces. Modifications below:
          Original directory (Master)    ->             New directory (refactoring)                 Namespace (refactoring)
          ===========================                   ===========================                 =======================
             |_eXlibris_tools                           xTool                                     xtool::
             |                                          xUtil
             |_cmakeUtile                                   |_cmakeUtile
             |_FloUtil                                      attic
             |_Split                                        attic
             |_doxygen_tools                                attic
             |_tags_tools                                   attic
          Xcrack                                        xCrack
               |_ xCrack                                     |_ src                               xcrack::
               |_ xCrackFMM                                  attic
          Xcut                                          xCut
             |_XdoubleCut                                  |_xDoubleCut                           xcut::
          Xdomaindecomp                                 xDomainDecomp
                      |_DomainManager                               |_DomainManager               xdomaindecomp::
                      |_Solvers                                     |_Solver                      xdomaindecomp::
             |_AnalyicalSolutions                       xAnalyticalSolution
             |                  |_Elastic2D                               |_Elastic2D             xanalyticalsolution::
             |_Xext                                     xExt
                  |_src                                    |_src                                  xext::
                  |_ImageProcessing                        attic
             |_Xfem ___________________________________ xFEM                                      xfem::
                                               \_______ xCut
                                                \          |_xLegacySimpleCut                     xcut::
                                                  \____ xExport                                   xexport::
                                                   \___ xTensor                                   xtensor::
                                                    \__ xMapping                                  xmapping
                                                     \_ xQuadrature                               xquadrature::
          FastMarching                                  xFastMarching
                     |_src                                          |_src                         xfastmarching::
                     |   |_FMSkeleton                               |   |_Skeleton                xfastmarching::skeleton
                     |                                              |
                     |_xDistFM                                      |_xDistFM                     xfastmarching::
                             |_xDistFM                                      |_src                 xfastmarching::
          Geom                                          xGeom                                     xgeom::
          Xinterfaces                                   xInterface
                    |_XAOMDInterface                             |_AOMD                           xinterface::aomd::
                    |                                            |
                    |_GraphInterface                             |_Graph
                    |              |_ParMetis                    |     |_ParMetis                 xinterface::parmetis::
                    |                                            |
                    |_XoctreeInterface                           |_xOctree                        xinterface::xoctree::
                    |                                                    |
                    |_xSplitMeshInterface                                |_xTemplateRefineMesh    xinterface::xtempaterefinemesh::
                    |_SolverInterfaces                   xLinAlg
                                     |_SolverBase              |_SolverBase                       xlinalg::
                                     |_SuperLu                 |_xInterfaceSuperLu                xlinalg::
                                     |_Taucs                   |_xInterfaceTaucs                  xlinalg::
                                     |_Lapack                  |_xInterfaceTaucs                  xlinalg::
                                     |_Mumps                   |_xInterfaceMumps                  xlinalg::
                                     |_BasicIterSolver         |_xInterfaceBasicIterSolver        xlinalg::
                                     |_Pastix                  |_xInterfacePastix                 xlinalg::
                                     |_NonLinearSolver         attic
                                     |_PetscParallel           attic
                                     |_PetscSeq                attic
                                     |_SparsKit                attic
                                     |_Itl                     attic
                                     |_Mtl                     attic
                                     |_KSPParallel             attic
          MeshMachine                                   xMeshTools
                    |_DistMesh                                   |_xDistMesh                      xmeshtool::
                    |_SplitMesh                                  |_xTemplateRefineMesh            xmeshtool::
                    |_FastMarching                               attic
                    |_LinearAlgebra                              attic
                    |_Stlmesh                                    attic
          Octree                                        xOctree                                   xoctree::
                |_Physics                               xPhysics
                        |_Materials                            |_Materials                        xphysics::
                        |_src                                  |_src                              xphysics::
             |_xTLS                                     xTLS                                      xtls::
          Xfem splitting:
                 |__ xDoubleCut
                 |             |__(unchanged)
                 |__ xLegacySimpleCut
                                    |__ xPhysSurfByTagging.cc
                                    |__ xPhysSurfByTagging.h
                                    |__ xPhysSurf.cc
                                    |__ xPhysSurf.h
                                    |__ xPhysSurfParameter.cc
                                    |__ xPhysSurfParameter.h
                                    |__ xRefCut.cc
                                    |__ xRefCut.h
                                    |__ xRefCutToAOMD.cc
                                    |__ xRefCutToAOMD.h
                                    |__ xRefCutToIsoZeroVector.cc
                                    |__ xRefCutToIsoZeroVector.h
                                    |__ xRefMesh.cc
                                    |__ xRefMesh.h
                    |__ xExport.cc
                    |__ xExportEnsight.cc
                    |__ xExportEnsight.h
                    |__ xExportGmsh.cc
                    |__ xExportGmsh.h
                    |__ xExportGmsh_imp.h
                    |__ xExport.h
                    |__ xExportManager.cc
                    |__ xExportManager.h
                    |__ xExportTranslate.cc
                    |__ xExportTranslate.h
                    |__ xPostPro.cc
                    |__ xPostPro.h
                    |__ xPostProMSH.cc
                    |__ xPostProMSH.h
                    |__ xPostProVTU.cc
                    |__ xPostProVTU.h
                    |__ xSensors.cc
                    |__ xSensors.h
                    |__ xPoint.h
                    |__ xTensor2.cc
                    |__ xTensor2.h
                    |__ xTensor2Sym.cc
                    |__ xTensor2Sym.h
                    |__ xTensor3.h
                    |__ xTensor4.h
                    |__ xTensorOperations.h
                    |__ xVector.cc
                    |__ xVector.h
                    |__ xVectorScalarProd.h
          cmake variables rules for module Xfiles/xFoe (no more Xfiles/Xfoe) :
                Xfiles/xFoe  => find_package(xFoe)  => xFoe_INCLUDE_DIR  / xFoe_LIBRARIES
          in C++ source files, namespace are in lower cases: xfoe
          New xfastmarching namespace have been introduced but pack/unPack helping function
          must remain in :: namescpace (i.e. in no namescpace). This is to let FMupdaterGeneric
          call ::pack  ::unPack in a generic way (no assumption on VECT or TRANSPORTED
          Macro Super for SuperLU 5 (experimental ) added in xinterface superlu
          modifiyed xCSRVector.h and cc so that the .h does not include xBlasDef.h since it can produce conflict when including xVector.h in superLU interface