Commit Graph
48 Commits
Author SHA1 Message Date
Tzanio 24818bf0d9 Merge branch 'master' into setpointmat-dev 2020-04-07 13:34:09 -07:00
Tzanio f7ce7154e0 Merge branch 'master' into ho-tet-ori-dev
Conflicts:
	tests/unit/CMakeLists.txt
2020-03-12 14:38:12 -07:00
Tzanio 05125e19d5 Removed a space 2020-03-09 15:36:41 -07:00
Jakub Červený 513fdc2692 Added IsoparamTransformation::SetPointMat, removed FinalizeTransformation. 2020-03-06 21:15:10 +01:00
Tzanio ca55ef0217 The release number for mfem-4.1 is LLNL-CODE-806117 2020-03-02 17:18:46 -08:00
Tzanio 2caa222edf A number of changes to switch the code from LGPL-2.1 to BSD-3:
- Updated LICENSE, README, CHANGELOG and CONTRIBUTING.md
- Removed COPYRIGHT, added NOTICE
- Updated the headers in all source files, makefiles, etc.
2020-02-23 11:16:46 -08:00
Stowell, Mark L f4d71e11ec make style 2020-02-19 11:37:53 -08:00
Stowell, Mark L c52312427e Fixing errors in new geometry entries 2020-02-18 21:50:10 -08:00
Stowell, Mark L 052440ee97 Declaring orientations for tetrahedra 2020-02-18 17:03:21 -08: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
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 ecfc2b1360 make style 2018-07-20 19:34:26 -07:00
Stowell, Mark L 7658cbb6d4 Adding support for uniform refinement of mixed meshes in 3D 2018-07-20 16:57:49 -07:00
Stowell, Mark L bae718680d Merge remote-tracking branch 'origin/master' into prism-dev
# Conflicts:
#	fem/fespace.cpp
#	fem/pfespace.cpp
2018-01-26 20:44:48 -08:00
Stowell, Mark L 75c6486cdc Adding calls to FinalizeTransform 2018-01-26 11:24:03 -08:00
Veselin Dobrev e8e0e04f0c Fix a bug: in class TensorBasisElement and its derived classes,
NodalTensorFiniteElement and PositiveTensorFiniteElement, add a
parameter to their constructors of a new type, DofMapType, to
indicate the type of basis being constructed: L2 or H1.

Add a new static method BasisType::GetNodalBasis() that converts
a Quadrature1D type to the corresponding nodal BasisType.

Fix a bug: in GeometryRefiner::Refine(), convert the Quadrature1D
type to BasisType before calling poly1d.GetPoints().
2018-01-18 21:53:32 -08:00
Stowell, Mark L cbb2b2b272 make style 2018-01-17 21:50:30 -08:00
Stowell, Mark L 35fc235ace Adding PRISM case to ProjectPoint 2018-01-17 21:46:42 -08:00
Stowell, Mark L d1a87f25d9 Adding PRISM case to fuzzy CheckPoint function 2018-01-17 21:41:08 -08:00
Stowell, Mark L 7518b5ce9d Caching the jacobian for the PRISM type 2018-01-17 21:36:13 -08:00
Stowell, Mark L 8a5a250204 Merge remote-tracking branch 'origin/master' into prism-dev
# Conflicts:
#	fem/fe.cpp
#	fem/fe.hpp
#	fem/fe_coll.cpp
#	fem/geom.cpp
#	fem/geom.hpp
#	mesh/mesh.cpp
2018-01-12 11:36:49 -08:00
Kenneth Weiss 4dc8a811ac Adds support for dumping Point meshes and associated grid functions in VTK format. 2017-12-14 18:46:15 -08:00
Stowell, Mark L 1f58383468 Rotating face zero for prisms 2017-11-24 11:19:32 -08:00
Stowell, Mark L 92d334277e make style 2017-11-20 17:05:01 -08:00
Stowell, Mark L 6a236ada82 Changing int to Geometry::Type 2017-11-19 20:14:42 -08:00
Veselin Dobrev 5918938909 Fix a bug in InverseElementTransformation::Transform - the case of
order == 0 was not handled correctly.

In GeometryRefiner::Refine, do not allow the parameters Times and
ETimes to be less than one.
2017-11-09 19:36:50 -08:00
Veselin Dobrev 3990696696 Modified class GeometryRefiner to use the Quadrature1D point types,
so that open-type quadrature (i.e. without the end points) can also
be used for refinement.

Enhanced class InverseElementTransformation with more options, set
by the methods SetInitGuessPointsType() and SetInitGuessRelOrder()
which control the type and order of the initial guess refinement
used by the Closest* initial guess types.
2017-11-07 17:26:28 -08:00
Veselin Dobrev 4f9ccfde00 Merge branch 'master' into inv-xform-dev 2017-11-06 00:21:02 -08:00
Veselin Dobrev 205fa9b394 Add a new class, InverseElementTransformation, that implements several
ElementsTransformation inversion algorithms, and serves as a base class
for other, e.g. custom, implementations. The new class contains all
previous implementations of ElementTransformation::TransformBack() and
adds a some new options.

The method IsoparametricTransformation::TransformBack() is now
implemented by simply constructing a InverseElementTransformation object
(with default options) and calling its Transform() method.

Updated the methods Mesh::FindPoints() and ParMesh::FindPoints() to
accept an optional argument of type InverseElementTransformation,
allowing more flexibility through customization of the transformation
inversion algorithm. In ParMesh::FindPoints(), when the i-th point was
found by one or more ranks, the output entry elem_ids[i] will be set to
-2 (except on the rank that is assigned that point) to indicate that the
i-th point was found but assigned to another rank - this value allows
all ranks to distinguish this case from the case when a point was not
found by any rank - indicated by elem_ids[j] set to -1.

Added two new methods to class ElementTransformation: GetGeometryType()
and GetDimension(). To aviod making these new methods virtual (and to
make the existing method GetSpaceDim() non-virtual), added data fields
'geom' and 'space_dim' to the base class ElementTransformation. In order
to facilitate the initialization of those fields for class
IsoparametricTransformation, added new method, FinalizeTransformation().
This method must be called after setting the point-matrix and the finite
element of the IsoparametricTransformation - all such places in MFEM
have been updated to perform that call.

Add new version of Geometry::ProjectPoint() that projects points outside
the reference element to the closest boundary point of the element.

Updated class GeometryRefiner to allow simultaneous use by different
places in a code - new calls to the Refine() and RefineInterior()
methods will not destroy previously allocated and returned objects by
the same calls.
2017-11-05 23:33:04 -08:00
Stowell, Mark L b0aa25c996 Using the new NodalFiniteElement class for prisms 2017-10-31 11:31:00 -07:00
Stowell, Mark L bb80432cd1 Fixing typos and adding a missing declaration 2017-10-31 09:37:19 -07:00
Stowell, Mark L 7a8deac838 make style 2017-10-30 18:15:14 -07:00
Stowell, Mark L 56ac6ec435 Adding PRISM case to the GeometryRefiner 2017-10-30 18:01:15 -07:00
Stowell, Mark L bf37988ec6 It seems we cannot insert a new entry into the Geometry::Type enumeration without redefining the mesh format. 2017-10-30 12:03:39 -07:00
Stowell, Mark L 16bacad76b Possible bug if 1-end.x is interpreted as an integer rather than a double. 2017-10-30 11:11:19 -07:00
Stowell, Mark L a92e32e388 Adding initial changes to support Prisms 2017-10-30 11:10:06 -07:00
Veselin Dobrev 49f1f60cc9 In class Geometry, add method that returns the (pre-computed and
stored) Jacobian matrix of the mapping from the reference element
to the corresponding perfect element.
2017-10-18 19:14:01 -07:00
Tzanio 0ad01a040d Cosmetic 2017-10-18 10:41:48 -07:00
Kenneth Weiss 5ce065d9d6 make style 2017-10-18 10:41:48 -07:00
Kenneth Weiss 1078676490 Adds an overload to Geometry::CheckPoint() with a tolerance of eps.
This is helpful in determining is an IntegrationPoint is almost inside
an element.

Also uses this overload in IsoparametricTransformation::TransformBack().
2017-10-18 10:41:40 -07:00
Tzanio 1569425857 Version 3.3 2017-01-28 22:05:47 -08:00
Jakub Cerveny 125ff226e4 Version 3.2 2016-06-30 10:37:30 -07:00
Tzanio dbae60fe32 Version 3.1 2016-02-16 15:45:48 -08:00
Tzanio Kolev 6b72d34af6 Bugfix for VS2012 2015-01-29 17:08:16 -08:00
Tzanio Kolev 9d7774a03e Version 3.0 2015-01-26 15:07:34 -08:00
Tzanio Kolev fa169e4b92 Version 2.0 2011-11-18 11:39:53 -08:00
Tzanio Kolev 075e00e9be Version 1.1 2010-09-13 13:31:38 -07:00
Tzanio Kolev 6bfa95b718 Version 1.0 2010-07-21 13:14:05 -07:00