-
v14.452da82cfb · ·
- Feature #205-#200-#249: Huge refactoring of node numbering and finite element handling: a proper RefFiniteEltFactory has been introduced, and it is way easier to introduce reference finite elements that aren't directly copied from geometry. For instance high order segments, quadrangles and hexahedra have been introduced in the Spectral class, which use a completely different numbering scheme (in which vertices and edges are intertwined). - Feature #247: Introduce Edge and Face orientation. - Support #98: Interface management has been refactored to be simpler and also more adaptive (a quality that will be required when adding orientation...) - Feature #243: Topology has been extended to provide functions such as IsOnEdge(), IsOnFace. Spectral finite element has been implemented and match Ondomatic's output. - Feature #236: Extend Topology classes to prepare high-order implementation. - Feature #225: Deep refactoring of FiniteElt management: now a FiniteElt and a FiniteEltType refers to only one Unknown; new objects FiniteEltGroup and FiniteEltTypeGroup are used when considering several Unknowns. Also better encapsulation, with fewer magic container to navigate through elementary matrices. - Feature #220: Clean-up of ElementaryData: improve its responsabilities (move matrices and vectors stored in FiniteElementType there) and avoid repeating the same tasks.
-
v14.34125c1df0 · ·
- Feature #153: Introduce FiniteElementSpace from former DofManager. This class sotres the finite element; tuple of global operators are therefore no longer relevant. - Feature #146: Introduce a proto-Domain and apply it in operators. - Support #137: Petsc has been upgraded to 3.5. As usual, new version is not backward-compatible and few modifications have thus been reported in the code. - Design #128: Prepare UML(s) for Geometry. The code has been slightly modified in the process. - Support #130: Define a typedef to use a more user-friendly syntax to feed vectors and matrices to global operators. - Support #140: Refactoring/clean-up of Model, VariationalFormulation and their inherited classes in elastic and hyperelastic problems. - Bug #136: now the class that can access and modify Petsc Vector (renamed AccessVectorContent) respects constness.
-
v14.267dc54131 · ·
v 14.26: - Feature #126: Hyperelastic matrix and vectors should be handled by the same GlobalVariationalOperator - Design #120: Introduce UML diagrams with PlantUML for operators and nodes. - Bug #122: Fix the compilation issues in TestOndomaticNumbering resulting from the recent changes in architecture.
-
v14.254f0b0b91 · ·
- Feature #119: GlobalVariationalOperators are now able to support several associated matrices or vectors. - Feature #105/#117: Global matrices and vectors are now held by an external structure rather than by the GlobalVariationalOperators themselves. - Feature #91: LocalVariationalOperators now access only local informations; the extraction from global Vectors occurs earlier. - Feature #100: Some responsibilities of FiniteElement have been given to LocalOperator, following what was decided in code meeting. This was a good decision: much memory is now spared as each FiniteElement no longer need an additional pointer. - Feature #43-#110: there is now a working compilation with Scons; only remaining defect is that I managed to do it only for shared libraries. Linux compilation is foreseen but not yet activated (some options must be determined beforehand with a Linux system handy). - Support #101: Rename GlobalOperator GlobalVariationalOperator.
-
v14.213236a7dd · ·
WARNING: Elastic and Stokes formulations are currently disabled; only hyperelastic one has been ported to the new algorithm. - Feature #54: very heavy refactoring, which modifies the way the assembling and calculation work. Now GlobalOperators have been introduced, and have the responsibility for the finite elements that act upon them. FiniteElement is a much more defined class than it was. - Feature #103: Petsc matrices are now built with their pattern fully defined. - Support #36: Now the rules to name the exceptions and their namespaces are the same everywhere. - Support #47: Get rid of compilation option -ftemplate-depth=10000. - Support #49: Clean-up in Utilities. - Support #50: make sure all HappyHeart includes are defined from the src folder. - Support #55: Introduce DofGroup and UnknownComponent (required for the transition to the new design discussed in code meetings). - Support #65: Dofs are now created before the partition; program-wise indexing is done at the same time as node indexing and processor-wise/ghost-wise immediately after the partitioning occurred. - Support #6: Remove now useless GeometricMeshRegion::work_directory_ (and its InputParameter counterpart). - Feature #67: new finite element classes (FiniteElement, GenericFiniteElement and LocalOperator) have been introduced and replace CurrentFiniteElement. However this is currently not very pretty as a method FiniteElement::SetLocalOperator() must absolutely be called before each calculation (otherwise invalid data would be used in calculation). The refactoring to correct this is the topic of #75. - Feature #75: LocalOperator has been extended and replace for instance the former ElementMatrix and ElementVector object. - Feature #77: Introduce fully the GlobalOperators, which took many responsabilities from LinearProblem. There are heavy refactoring in this ticket, which I unwisely didn't split in parts. - ... and many others defined more thoroughly in #54...
-
v14.1441659253 · ·
- Feature #32: Import (almost) everywhere support for all kinds of interfaces. Not completely exact as there are still some dumb tests hardcoded (for instance Nexpected_node in DofManager::CreateNodeList()); however considering Dof will soon be refactored heavily no need to ponder too much on current code. - Support #24: QuadraturePoint has been split: in Geometry it is now LocalCoords, used to define shape functions. QuadraturePoint itself is now defined in FiniteElement; it inherits from LocalCoords. - Support #16: It is now possible to write self-consistent Medit meshes in parallel. - Support #45: Rename correctly the project; add 1 new class in Utilities and remove another. - Support #42: Better handling of write problems with Libmesh/Medit. - Support #9(in progress): Correct some Doxygen warnings.
-
v14.13c45d811d · ·
- Feature #23: Complete the list of geometric elements shipped with HappyHeart. - Support #15: Adjust the code so that 'Vertex' and 'Coords' are correctly used throughout the code. - Support #15: Storage of Reference Interface has been completely modified to improve readability of the code. - Support #15: The Node object now gets a pointer to the related interface, and therefore to the potential Coords object. - Support #28: The code is now working also for a P2 mesh.
-
v14.12a9746f92 · ·
- Feature #14: Refactor deeply GeometricElement: introduce a traits class GeomRefElement which will be used both for GeometricElement and for GeometricElementType (that will anyway be renamed as well). - PartitionHelper/PartitionGeometricElement: algorithm has been simplified and a potential problem evacuated entirely in the process. - Documentation: add a note about the creation of nodes and dofs. - Feature #1 Documentation: add a note about the different kind of elements. - Bug #2: some corrections in hyperelastic problem. This might or might not correct the issue; a macro can be activated to track the problem should hit arise again. - Feature #3: move into ThirdParty folder the wrappers to third party library. Also remove some classes that are no longer used (mostly some introduced when Felisce contribution was still important). - Feature #5: make the code compliant to the new standards required by the new command line tools version (which embeds clang 3.4). - Feature #8: the redundancy in TransientParameters has been removed: we no longer have concurrent data members time_ and iteration_; the former is now derived from the latter. - Feature #13: Some renaming occurred in Geometry (BasisFunction -> ShapeFunction, Node1 -> Point1, Shape -> Topology).
-
v14.10.2fc08c3cc · ·
- Documentation: coding standards added in a new folder. - Model: the class has been reworked so that it is closer to Verdandi counterpart. It is now CRTP-based instead of virtual.
-
v14.10c352c24f · ·
- Static Stokes problem is implemented (it is able to reproduce Freefem result in P2/P1). - List of boundary conditions is now handled by DofManager rather than by LinearProblem. - No error now when a processor miss a combination (geometric element type, label) when boundary conditions are applied. - Penalisation scheme has been implemented. - BUG corrected: GeometricMeshRegion didn't keep correctly the count of labels in parallel case (the labels from vertice were read but not those from geometric element, which might differ). - The pragma system has been extended so that the compiler might be choosed in a single file (previously it worked only for clang compiler.). - BUG corrected: In GeometricMeshRegion, some methods weren't relevant (GeometricElement couldn't be returned as a reference as it is a pure virtual class.). Two methods implementations were also missing. - Refactor slightly the project (creation of a Test folder, and move the place include without warning for third party library).
-
v14.7.20e9353f8 · ·
- FiniteElement: a Private class named FetchBlockHelper has been created; it is in charge of calculating the submatrix for a pair unknown/component. The user no longer has to bother with block index: he can manipulate irectly unknowns and components. As a bonus, a part of the code that was duplicated between ElementVector and ElementMatrix has disappeared in the process.
-
v14.7cb3aae8f · ·
- 2 problem variables: some bugs have been tracked down with the help of the Stokes problem (not fully implemented yet). Parmetis call for instance was bugged: it kept unduly the self-connexion nodes. - Cleaning-up of the interfaces: some indirections have been cut, and implementation details have been moved into Private namespace. Edge and Face are now derived from a CRTP class instead of being a typedef over instantiated template class (which was problematic for instance to generate Doxygen documentation). - Use decltype with UninitializedIndex() whenever possible (code more flexible to type change). - Most std::size_t have been replaced by unsigned int. - Unknowns must now correctly specified to the LinearProblem and Model through a template parameter (previously it was hardcoded as displacement no matter what). - Lm5 wrappers moved from geometry to Utilities::Wrappers. - Utilities: move Seldon-related functions into Wrappers. - Bug correction: in LinearProblem::SetBoundaryConditionList() the value read from the input parameter file was not correct (the size of a vector was read rather than its content). - Bug correction: in LinearProblem::AssignTimeConstantBoundaryCondition(), the values weren't correctly assigned for the second condition. - FiniteElement was constructed many many times, while it could be entirely avoided. I am in the process of reducing the number of such objects actually built. - SNES: when KSP solve is used, there is now a print on screen that gives the residual and the number of iterations. - BoundaryCondition: while refactoring is still due, some has been done to avoid too heavy index handling (à la Felisce). - Utilities/Petsc: create a Viewer RAII class, and use it to add new view functionalities for matrix and vector.
-
v14.3167bc374 · ·
- XCode project has been updated to work with third party libraries recompiled for OS X Mavericks. - Keyword final added to many classes. - Geometry: Node has been rechristened Point. - DofManager: redundant attribute that list in a vector all dofs has been added. It eases the interface when you want to iterate upon all dofs.
-
v14.2aaf0f46e · ·
- DofManager: Unknown, Node and Dof entirely rewritten. There is now Node and Dof objects, and the partitioning is done more properly (on the nodes rather than on the dofs; so all dofs on a same node are guaranteed to be handled by the same processor). There are no longer mappings: the Dof class gets two attributes giving the program-wise and processor-wise index. - Project: now search user path is set to no. It was this option that could create havoc when two files were named the same way in different directories: XCode could pick the wrong one even if there was a partial path to disambiguate. - GeometricElementFactory: now raw pointers are returned instead of shared ones. The reason is that we might want to use std::unique-ptr in some cases and there is no conversion from shared_ptr to unique_ptr. - GeometricElementType: previously this class might use as its internal GeometricElement object the one that was given in the constructor. That's not a very good idea: it prevents the releasing of this element (as it doesn't go out of scope). Now a brand-new one is created for each GeometricElementType. - SurfaceReference has been renamed Label. - Create a folder/group problem in which Elasticity and Hyperelasticity have been moved. - DofBearer is now Node (there was no class beforehand, but it was often used in variable and function names). - Geometry: there is now a check that geometric element indexes are unique (convenient to compare two geometric elements.). This uniqueness was not enforced until now. - Geometry: the interface has been modified (indexes are less exposed than before, and there are much less risk to be used improperly). - CurrentFiniteElement: its structure has been slightly changed: there was indeed an implicit dependancy on the unknown that was completely hidden... which didn't prevent to provide methods that rely heavily on this hidden assumption! So there is now a new constructor which explicitly provide the Unknown dependancy. Following these changes, there is no longer a CurrentFiniteElement object in Unknown class (the dependancy is the other way around now).
-
v13.51cfeba4e1 · ·
- Creation of processor-wise GeometricMeshRegion is now much cleaner: it is the global GeometricMeshRegion object that is shrunk to a processor-wise one instead of relying on a file written on disk that was read again. As a consequence, some attributes that were duplicated (support_dof_mesh_ for UnknownVariable and mesh_ for LinearProblem) are now united; they become local as soon as the partitioning is done. Less memory is hence used: the global objects no longer exists, whereas previously they were there for the whole program (and were also used to fetch data; all these call have been replaced by processor-wise ones). - GeometricElement now holds a pointer to the vertice, rather than a mere index. - There was a remaining gather through MpiAllReduce that was completely irrelevant (it was to apply the BC, but only the local dofs were meaningful due to the structure of the matrix after renumbering).
-
v13.50.2e0a417f7 · ·
Fix to v13.50 - Elasticity was not working in v13.50: a condition upon ghost mapping was too tight. - Work directory is now created if it doesn't exist, rather than returning an error and exiting directly.
-
v13.506bf8cf02 · ·
- Ghost are now used, limiting tremendously the need to gather data (the only remaining one is to write solution, and it will be handed in a future release). - RAII introduced for AO and IS mapping. - Definitions of the SNES functions used for hyperelasticity moved from LinearProblem.cpp to HyperelasticModel.hxx. Thus NewtonSolve() is now much more generic. - Replaced typedefs related to smart pointers by more explicit names that moreover respect the coding style. It 'frees' Vector name, that could be confused with Seldon's or Petsc wrapper's namesake objects. - There was a nasty bug resulting from the loss of Felisce ordering: the global dofs weren't correctly indexed when the geometric element were partitioned. The calcul was nonetheless correct, but at the price of efficiency: many values were fetched in the sequential array! And I would have utterly failed with my ghost vectors: data wouldn't have been reachable for all cases. This highlights the facts that Felisce internal structure is rotten: it should be the same object that holds the information both in geometric element partitioning and later when data are fetched inside. - Small solutions were not written when static case alone was called. - Petsc: instead of including petsc.h everywhere, we now target only the headers that are truly required.
-
v13.49.3269b58d2 · ·
Get rid of entirely of Felisce ordering. Up to now, I had to resort to a dirty trick to make HappyHeart work: there was a conversion tool that gave the position in the vector of Felisce of a given geometric element. So I had to deal with 'HappyHeart ordering''and 'Felisce ordering', which was very clumsy. Now this tool has been removed, which was not easy to do: the algorithm worked in Felisce because many loops made strong assumptions on the order in the vector; for instance a quantity that should be the same (say the position in a local mesh of a geometric element) was calculated completely outside of the local mesh; it worked because some loops happen to fill the vector the same way GeometricMeshRegion did!
-
v13.49.2cafeb605 · ·
Add the writing of solution in Medit and Ensight format. Ensight case file are not yet handled.
-
v13.49ab85b83e · ·
- A nasty and stupid bug has been solved in Hyperelasticity: a quantity wasn't correctly initialized, leading potentially to undefined behaviour. - Intrusive smart pointers have been replaced by std::shared_ptr. Initially it was done in the search of the bug mentioned above, but it is in fact wiser: Yuni library pretends the virtual part is required, and it therefore wasn't so wise to deactivate it. But keeping it would mean paying the virtual cost anywhere... so shared_ptr at the moment; we'll see to replace them if the cost of memory is too huge. But doing it now was premature optimization. - Petsc wrapper: now there are two classes that wrap over Petsc's Vec and Mat. The interface is hence slightly easier, and we limit greatly potential memory leaks: Petsc functions MatDestroy and VecDestroy are now called automatically in the destructor. - Yuni library path has been modified in XCode project: Yuni has changed its SCM from SVN to git, and I have checked out the latest version from git. As a conequence, there is no longer a 'trunk' in the path to access the library.