Commit Graph
426 Commits
Author SHA1 Message Date
Jakub Cerveny cc9df02fe5 Merge branch 'master' into cut-mesh-groups-dev-3 2018-10-12 17:03:22 +02:00
camierjs 840480b205 Cleanup with master 2018-10-11 10:34:24 -07:00
camierjs ec6375ea94 Merge branch 'master' into okina 2018-10-11 09:22:42 -07:00
camierjs e71d5f0013 Cleanup & Run 2018-10-11 09:19:03 -07:00
Jean-Sylvain Camier 7281dbf0fe kernels subdirs & cleanup 2018-10-10 21:00:56 -07:00
Tzanio b1537b5648 Small edits 2018-10-10 17:54:26 -07:00
camierjs 3b615c7188 Working on mesh->SetCurvature from GPU 2018-10-10 17:44:25 -07:00
camierjs 40cacec966 ex1 with Quad UniformRefinement CPU + GPU 2018-10-10 10:59:12 -07:00
camierjs 82839fab9d Print cleanup 2018-10-10 09:54:42 -07:00
camierjs 45dc69defe Geom with good SetCurvature 2018-10-09 15:06:02 -07:00
camierjs e79d6eadcf Init geom without prefixed SetNodalFESpace 2018-10-08 20:07:18 -07:00
Jakub Cerveny 36ff52c654 Evaluating Tom Forsyth's fast mesh reordering. 2018-10-06 23:45:31 +02:00
Jakub Cerveny 01988b9a30 Evaluating Gecko and METIS ordering. 2018-10-05 20:47:20 +02:00
camierjs 3b0496d4a5 Ex2 OK, doing SetNodalFESpace before switching to GPU 2018-10-02 18:40:32 -07:00
Veselin Dobrev 030544c2d9 Fix a typo in Mesh::PrintElementsByGeometry: 'cout' -> 'out' 2018-10-02 17:03:54 -07:00
Veselin Dobrev 88c8b70b45 In Mesh::CheckBdrElementOrientation, in 2D, generate the edge/face
internal data, if not already generated.
2018-10-02 16:39:52 -07:00
Stowell, Mark L 54125a350d merging with prism-dev 2018-09-30 10:47:52 -07:00
Veselin Dobrev 38feeb08a4 Fix a debug check for non-orientable surfaces.
At the end of Mesh::Finalize, perform the face orientation check only
when Dim == spaceDim, since a surface may be non-orientable.
2018-09-29 20:02:05 -07:00
Veselin Dobrev f4b7cc883c Rename the Mesh method FinalizeMixedMesh to FinalizeMesh and
replace its implementation with two calls: to FinalizeTopology
and Finalize.

Some small edits in the doxygen documentation in class Mesh.
2018-09-28 17:29:46 -07:00
Veselin Dobrev da2fb88a17 Improved uniform refinement of tetrahedral meshes
In class Mesh/ParMesh:
  * Move the serial implementation of UniformRefinement3D to a new
    method: UniformRefinement3D_base. The implementations of the virtual
    method UniformRefinement3D (which now have no parameters) use the
    new UniformRefinement3D_base method.
  * In UniformRefinement3D_base, implemented two algorithms for choosing
    how to split the middle octahedron when refining a tetrahedron by
    cutting off its four corner tets. (These four tets have the same
    shape as the original tet and half the edge-length.) The choice of
    the algorithm is hard-coded in a const variable for now.
  * Add an optional parameter to UniformRefinement which is used to
    choose how to refine tet-only meshes: the default choice is to use
    the new algorithm defined by UniformRefinement3D; the second option
    is to use the old default - call LocalRefinement (marking all
    elements) to perform 3 levels of bisection. The new algorithm
    always produces elements with better shape (aspect ratio) than the
    old default (at least for the meshes in the data/ directory and a
    few other meshes).
  * Make the method Finalize virtual - its implementation in parallel
    requires updates in the ParMesh data.
  * Add a consistency check in ParMesh::ReorientTetMesh that verifies
    the assumption made in the method about the update of the shared
    triangles.
  * Simplify implementation of some methods in class ParMesh by
    separating common code in a new protected method: FinalizeParTopo.

Other updates:
  * In the examples and miniapps, when using a tet-only mesh which is
    first refined uniformly and then locally, it is now necessary to
    call the method Mesh::Finalize(true) (which is now virtual) in order
    to mark the elements for local refinement after the uniform
    refinement.
  * In example 12p, use better random seed values.
  * In examples 3/3p, add a sample run with order=2 on a tet mesh - this
    will test the methods {Mesh,ParMesh}::ReorientTetMesh. Previously,
    these were only tested by one sample run in example 4p.
  * In the mesh-explorer miniapp, add a refinement option to perform
    uniform refinement of tet-only meshes using bisection.
  * In the MFEM_LOCATION macro print the <file> and <line> location
    using a standard format: <file>:<line>, as used by most compilers
    when reporting warnings and errors.
  * Remove FIXME comments about mesh format v1.0.1.
2018-09-27 21:04:58 -07:00
Stowell, Mark L e8382c0b75 Merge remote-tracking branch 'origin/master' into prism-dev 2018-09-25 13:26:26 -07:00
Veselin Dobrev 46d92466fa Simplify the uniform-refinement mesh methods.
In the classes Mesh and ParMesh:

* Small optimization in Mixed3DUniformRefinement for hex-only meshes.
* In Mixed3DUniformRefinement, use marker array instead of std::map.
* Rename the methods Mixed{2D,3D}UniformRefinement to
  UniformRefinement{2D,3D}.
* Remove the methods {Quad,Hex,Wedge}UniformRefinement and use
  UniformRefinement{2D,3D} instead. In terms of performance, the
  difference was negligible.
2018-09-20 20:17:30 -07:00
Jakub Cerveny 200c906e3c Merge branch 'master' into cut-mesh-groups-dev-3 2018-09-19 20:32:26 +02:00
Tzanio fd809f84f8 Minor 2018-09-18 14:09:34 -07:00
Jakub Cerveny b995f44a41 Added GetConformingSharedStructures call to ParMesh::NonconformingDerefinement. 2018-09-18 21:16:08 +02:00
Jakub Cerveny b11335c3ab ParMesh compatibility: creating shared_edges, shared_faces. 2018-09-14 20:20:55 +02:00
Veselin Dobrev bed70d3ca9 When derefining a mesh in parallel preserve the global
attribute lists.

Currently, the global attribute lists are replaced with
the local lists.
2018-09-12 21:01:00 -07:00
Veselin Dobrev 3dae180160 In Mesh::UniformRefinement, use the 'meshgen' field which
is global instead of the local GeometryList class.
2018-09-12 17:25:32 -07:00
Veselin Dobrev 0d6d850e09 Updates related to wedge/prism elements and mixed meshes.
List of changes and additions:

* In class Mesh:
  * Replaced the data fields BaseGeom, BaseBdrGeom, and BaseFaceGeom
    with a new data field: mesh_geoms that is a bitwise mask for all
    Geometry::Types found in the (local) Mesh including entities of
    lower dimensions.
  * The new data field mesh_geoms is set by the method SetMeshGen.
  * Removed the (protected) method InitBaseGeom.
  * Add new methods: HasGeometry, GetNumGeometries, and GetGeometries
    that can be used to query the content of mesh_geoms. Also, added
    class Mesh::GeometryList that can simplify such queries too.
  * The methods GetFaceBaseGeometry, GetElementBaseGeometry, and
    GetBdrElementBaseGeometry no longer have a default value for
    their input parameter (the entity index) and accept only values
    within their respective ranges.
  * Removed the parameter of the method GetRefinementTransforms.
  * Updated the methods PrepareNodeReorder and DoNodeReorder to
    support mixed meshes.
  * In parallel, the data field meshgen is now required to represent
    information about the global mesh - updated relevant ParMesh
    methods.
  * Made any required changes outside of class Mesh due to the above
    changes.
  * Made various tweaks and improvements in the following methods:
      CheckBdrElementOrientation, Mixed2DUniformRefinement,
      Mixed3DUniformRefinement, UniformRefinement, and
      GeneralRefinement.
  * Updated the method PrintCharacteristics to print the types of
    elements, boundary elements and faces used in the mesh.
  * In the method ReadInlineMesh, replace remaining "pri" strings
    with "wedge".
  * In the mesh reader method ReadGmshMesh, recover the term "prism"
    in the comments - it was replaced, unintentionally, I assume,
    by "wedge".

* Add support for refinement of curvilinear mixed meshes:
  * In class FiniteElementSpace, updated the methods:
    GetLocalRefinementMatrices, GetLocalDerefinementMatrices,
    RefinementMatrix, RefinementMatrix_main, as well as class
    RefinementOperator to support mixed meshes.
  * Add two new meshes: star-mixed-p2.mesh and fichera-mixed-p2.mesh
    which represent examples of quadratic mixed meshes in 2D and 3D,
    respectively.
  * Add sample runs in ex1/ex1p using the new quadratic mixed meshes.

* In class Geometry:
  * In the enumeration Type: removed the constant MIXED and added
    new constant: NUM_GEOMETRIES.
  * Add new static data field: DimStart[] that indexes the Types by
    dimension: the Types of dimension 'd' are given by the range
    [ DimStart[d], DimStart[d+1] ).

* In class ParNCMesh, added method GetGhostFaceGeometry that,
  for now, returns Geometry::SQUARE.

* Update the return type of the method DofOrderForOrientation in
  class FiniteElementCollection (and all derived classes) from
  'int *' to 'const int *'.

* Removed the virtual method Element::GetRefinementFlag and made
  the only relevant derived version (in class Tetrahedron),
  non-virtual.

* In class Tetrahedron, added method Init.

* Added FIXME comments for some outstanding issues.

* In the mesh-explorer miniapp:
  * Added option to enable or disable the 'refine' parameter when
    reading a mesh from file.
  * In the 'jitter' menu option, ask the user if the boundary
    nodes should be moved or not.
  * In the 'Print sub-element stats' menu option, count and print
    bad/inverted elements by their Geometry::Type as well.
2018-09-10 14:22:14 -07:00
Stowell, Mark L 40a9f507e0 Merge remote-tracking branch 'origin/master' into prism-dev 2018-09-08 14:55:18 -07:00
Stowell, Mark L 0c201f9ee3 Fixed a bug in the extrusion of 2D curved meshes 2018-09-07 15:53:32 -07:00
Stowell, Mark L 91b97b617c Fixing a small typo 2018-09-07 15:37:55 -07:00
Veselin Dobrev aa5c29e7bd Merge branch 'prism-dev' into prism-dev-dev 2018-08-31 18:53:14 -07:00
Veselin Dobrev f948c724bc Fix an issue with quadratic VTK meshes. 2018-08-31 18:51:52 -07:00
Veselin Dobrev 7b09c91564 Merge branch 'prism-dev' into prism-dev-dev 2018-08-31 17:27:03 -07:00
Veselin Dobrev bd52c083e6 Bugfix in Mesh::UniformRefinement plus a few small tweaks 2018-08-31 17:25:10 -07:00
Veselin Dobrev b4c143c40d A number of proposed tweaks for merging into prism-dev.
* Removed the fixed low-order finite element classes for wedges.
* Replace more cases of 'int' variables with 'Geometry::Type',
  mainly in class FiniteElement and its derived classes.
* Use constants from BasisType (instead of Quadrature1D) in the
  parameters of the *WedgeElement finite element classes.
* Impose ordering on the construction of some global objects by
  moving them into the same translation unit: specifically, moved
  the objects 'TriangleFE', 'TetrahedronFE', 'WedgeFE', and
  'Geometries' into fem/fe.cpp.
* In switchs on 'Geometry::Type', move the 'Geometry::PRISM' case
  last - just to follow the order in the enumeration.
* Add a new method CoarseFineTransformations::GetPointMatrices
  that simplifies some code that uses CoarseFineTransformations.
* Removed the 'INVALID' and 'MIXED' constants from the enum
  Element::Type.
* Remove the static method Element::GeometryType.
* Tweak some doxygen comments in the classes Embedding and
  CoarseFineTransformations.
* Generate an error if the method Wedge::GetNFaces is called:
  its parameter 'nFaceVertices' does not make sense for wedges.
2018-08-30 16:57:23 -07:00
Stowell, Mark L 2e0c5b927c Removing outdated Mesh::GetFaceBaseGeometry method 2018-08-30 10:43:26 -07:00
Jakub Červený 1e9c62eb8d make style 2018-08-29 16:45:10 +02:00
Jakub Červený 450dc4cd8b Implemented ParNCMesh copy constructor, enabled copying NC ParMesh. 2018-08-28 13:42:52 +02:00
Robert W. Anderson c6f0d84b31 cherry pick 5caee from branch 2018-08-27 16:04:36 -07:00
Robert W. Anderson 3a8c0ddc5e merge eba6d48 from branch and resolve conflicts 2018-08-27 16:03:29 -07:00
Stowell, Mark L 960ba8a8c2 Changing "pri" to "wedge" or "wdg" is several places. 2018-08-27 14:23:11 -07:00
Stowell, Mark L 1e100b3f26 Merge remote-tracking branch 'origin/master' into prism-dev
# Conflicts:
#	mesh/pmesh.cpp
2018-08-17 21:51:16 -07:00
Tzanio Kolev 761a9269c2 Merge pull request #540 from mfem/conforming-tet-refinement-fix
Fix for Tetrahedral Mesh Refinement [conforming-tet-refinement-fix]
2018-08-11 13:55:17 -04:00
Stowell, Mark L 3b55f92b78 Merge with master Aug 2, 2018 2018-08-02 16:05:30 -07:00
Tzanio 639a30c5fd make style 2018-07-27 15:32:14 -07:00
Stowell, Mark L 7442982ac5 Changing "Prism" to "Wedge" in various places. Geometry::Type intentionally left as Geometry::PRISM 2018-07-25 19:51:40 -07:00
Stowell, Mark L 40e07a61c3 Adding Mesh::GetElementCenter method 2018-07-25 14:24:56 -07:00
Veselin Dobrev abd5c313d9 Remove unused code 2018-07-25 10:34:22 -07:00