-
v15.032d066114 · ·
- Design #365: shared_ptr are now mostly passed by reference rather than by value (passing by value is in fact an anti-pattern for them). - Support #369: another anti-pattern removed: return of functions no longer use std::move (nothing was gained and a possible optimization was prevented - see 'Effective Modern C++ by Scott Meyers - item 25'). - Design #350: GeometricMeshRegion no longer needs Mpi object. - Documentation #345: prepare a demo for user/advanced user/proposed workflow. In the process, smooth the interface: for instance prepare XCode templates to provide minimal Model or VariationalFormulation instantiation (#363) or prepare a Python script that inits fully HappyHeart environment (scripts/init_happy_heart.py). - Support #349: Medit or Ensight geometric files can now be loaded, and the format choice is also in the input parameter file (previously Medit was hardcoded). - Bug #379: Now when a finite element space is empty, a warning is issued on the logs by the GlobalVariationalOperator that uses it. - Support #386/#389: renaming of folders; apply uppercase for the first letter consistently. - Support #346: Choose the lua file on the command line rather than in the main. - Bug #372: time iterations limits are now much better handled (previously there could be one more time iteration than required). - Support #377: Make all XCode schemes shared.
-
v14.523d5f43ce · ·
- Feature #317: Introduce PostProcessing treatment, able to generate output files in several formats. Currently only Ensight 6 format implemented. - Support #350: Add script to count number of lines in HappyHeart (calls Perl script with right options). - Bug #340: hyperelastic problem with 3d mesh did not run correctly due to an incorrect change likely done in #147. - Support #329: In Local variational operators, avoid to repeat endlessly allocation of some local matrices and vectors.
-
v14.500f423c6d · ·
- Feature #147: force management has been entirely refactored. Now forces can be spatial or constant and surfacic or volumic; the same operator handles all the cases. - Support #337: Yuni::Math::Zero() was too restrictive: its 1.e-6 epsilon for absolute comparison was not low enough. A homemade function has therefore been introduced to replace it. - Feature #320: introduce some geometric functions from Ondomatic: computation of a jacobian and local2global and global2local transformations for 2x2 and 3x3 matrices. - Feature #325: use the new formula to compute jacobian, and prettify ElementaryDataImpl. There is now a class in charge of shape functions calculation at a given quadrature point. The stored matrices are now in a more natural order (attribute called 'jacobian'i sreally so, not a trsnposed of it as it was in Felisce and realier HappyHeart). - Support #316: report the new names for finite elements chosen in code meeting. - Feature #315: a finite element space is now restricted to a given dimension. - Support #193: Remove the clumsy domain restriction I put to make operators work when several dimensions were involved (#315 removes most of the issue!) - Support #70: Rebuild the XCode project; put the xproject file at the root of HappyHeart. - Feature #305: write data in output directory that allows the building of output files in any format.
-
v14.4782d599fc · ·
- Feature #283: introduce the GodOfDof and split correctly responsibilities between FiniteEltSpace and it. - Feature #286: Pave the way to the use of several geometric mesh regions in a same problem.
-
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.