Commit Graph
43 Commits
Author SHA1 Message Date
Stowell, Mark L 15e0e4d1aa Setting default value for ElementTransformation::geom 2020-05-05 10:48:28 -07:00
Stowell, Mark L 8592a79c3d Removing ActiveSide concept from FaceElementTransformations 2020-04-29 16:54:19 -07:00
Stowell, Mark L 9900068b7a Adding error checking to FaceElementTransformations 2020-04-24 15:16:33 -07:00
Stowell, Mark L 0be1846a73 Merge remote-tracking branch 'origin/master' into gf-getvalue-dev
# Conflicts:
#	mesh/pmesh.cpp
2020-04-14 10:29:23 -07:00
Tzanio 24818bf0d9 Merge branch 'master' into setpointmat-dev 2020-04-07 13:34:09 -07:00
Stowell, Mark L 8b81c29b2b Merge remote-tracking branch 'origin/master' into gf-getvalue-dev
# Conflicts:
#	fem/datacollection.cpp
#	fem/gridfunc.hpp
2020-03-12 20:56:28 -07:00
Stowell, Mark L b33654bfa4 make style 2020-03-12 18:00:42 -07:00
Stowell, Mark L 540e4deb5f Removing unnecessary recursive method call 2020-03-12 15:36:24 -07:00
Stowell, Mark L 80158f14b6 Removing unnecessary temporary variable 2020-03-12 15:35:44 -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
Tzanio 7b341baf1a minor changes 2020-02-16 23:28:38 -08:00
Stowell, Mark L 11cde1acdd Promoting FaceElementTransformation to a subclass of IsoparametricTransformation 2019-12-16 21:50:15 -08:00
Stowell, Mark L 37408efcae Adding convenience methods to FaceElementTransformations class 2019-12-15 23:34:49 -08:00
Ido Akkerman c606ff21d5 Merge branch 'master' into laplacian_dev 2019-06-05 09:41:55 +02: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
Ido Akkerman ad6af65f4f Remove nonsense inverse of hessian 2018-08-27 12:35:28 +02:00
Ido Akkerman c012444bfa Cleaning up. 2018-08-24 12:34:07 +02:00
Ido Akkerman 056415919e Debug almast there?? 2018-08-22 19:23:28 +02: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 cbb2b2b272 make style 2018-01-17 21:50:30 -08:00
Stowell, Mark L 20d6e495ac Switching to GeomType enumeration in a few more places 2018-01-12 15:05:12 -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
Veselin Dobrev 6b572a01d4 Address a few more warnings and feedback from the PR (#379). 2017-12-10 19:43:56 -08:00
Tzanio 6741c90ba9 Merge branch 'master' into mfem-3.3.2-dev 2017-11-09 20:05:45 -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
Tzanio 51ac9e89f9 Replaced some std::cout with mfem::out 2017-11-09 13:04:49 -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 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 bec7973784 Starting to add prism support to eltrans and fe_coll 2017-10-31 11:31:35 -07:00
Kenneth Weiss b73287232e Lowered tolerances in IsoparametricTransformation's TransformBack.
There were some edge cases on an element's boundary where
the solver converged, but the original tolerance of 1e-15 was too low.
Changing the tolerances to 1e-14 fixes this while still
passing all tests for transforming points back and forth.
2017-10-18 10:43:06 -07:00
Kenneth Weiss 9d6593246a Added overload with option to set refinement order in TransformBack
The refinement order is used to choose the initial IntegrationPoint
for the Newton-Raphson solve in IsoparametricTransformation's TransformBack
function. The default value is to use the elements order.

Also added a new public function to IsoparametricTransfomation to find
the closest IntegrationPoint within an element to a given point in space.
This function uses the elements RefinedIntules for the given order.
2017-10-18 10:42:47 -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
Kenneth Weiss ff3f885202 Improves robustness of IsoparametricTransformation's TransformBack function.
The TransformBack function had an optimization to project points
that moved outside the element onto the element boundary. This caused
the code to incorrectly determine some internal points as outside on curved elements.

This commit removes this optimization and instead checks whether the found
IntegrationPoint is inside or outside the element once the algorithm converges.
2017-10-18 10:40:12 -07:00
Kenneth Weiss da9abed02a Adds a function to help initialize IsoparametricTransformation's TransformBack function
The function now chooses the RefinedIntRules integration point whose transform
is closest to the query point in physical space. Previously, TransformBack
was hard-coded to choose the IntegrationPoint at the element's center as the
initial guess for the Newton-Raphson solve.
2017-10-18 10:39:52 -07:00
Tzanio 1569425857 Version 3.3 2017-01-28 22:05:47 -08:00
Tzanio dbae60fe32 Version 3.1 2016-02-16 15:45:48 -08:00
Tzanio Kolev 9d7774a03e Version 3.0 2015-01-26 15:07:34 -08:00
Tzanio Kolev 6bfa95b718 Version 1.0 2010-07-21 13:14:05 -07:00