Commit Graph
39 Commits
Author SHA1 Message Date
Tzanio b3c3c5cf4c Merge branch 'memory-dev' of github.com:mfem/mfem into memory-dev 2019-05-24 14:23:56 -07:00
Tzanio 1a69dcff78 Replaced FIXMEs with TODO or NOTE 2019-05-24 14:23:39 -07:00
camierjs 283264ade4 {Read,Write,ReadWrite}Access => {Read,Write,ReadWrite}
Add shortcut for Host{Read,Write,ReadWrite}
2019-05-24 14:08:45 -07:00
Veselin Dobrev 798ded1f55 Merge branch 'master' into memory-dev 2019-05-22 23:53:04 -07:00
Veselin Dobrev 40378a046b Introduce a new Memory class for handling host + device allocations
and transfers.

The Memory class is now used by some MFEM classes (like Array and
Vector) which can be used on the Device. Such classes now provide
methods to access the underlying Memory object, e.g. GetMemory.

Updated ex1/ex1p and ex6/ex6p to not need to enable/disable the
Device at specific points -- the Device is now enabled just at the
start. Also, the same examples can now run on Device (e.g. -d cuda)
without the partial assembly option (-pa) -- full assembly will
be still done on CPU but the sparse matrix action and vector
operations will be done using the Device.

Reverted changes in class DenseMatrix related to using the Device.
At this point, DenseMatrix operations are only used for small matrices
and using the Device in this case is not a good option.
2019-05-16 14:53:39 -07:00
Stefano Zampini 7155d89824 Fix bug in ParGridFunction::ProjectDiscCoefficient
Calling parallel assemble is conceptually wrong, since a GridFunction
represents also vdofs. See https://github.com/mfem/mfem/issues/443

Suggested-by: Veselin Dobrev <dobrev@llnl.gov>
2019-03-14 21:17:40 +03:00
Tzanio Kolev 338a4767c2 Merge pull request #682 from mfem/cut-mesh-groups-fix
Fix ordering of cut mesh groups and orientation of shared edges/faces [cut-mesh-groups-fix]
2018-12-11 06:27:06 -08:00
Veselin Dobrev 634d9431d8 Add support for parallel non-conforming meshes in class
ZienkiewiczZhuEstimator.

This support is based on the update in ParGridFunction::ComputeFlux
which, in turn, is based on the support for GroupCommunicators in
ParFiniteElementSpaces on non-conforming meshes.
2018-12-05 20:11:57 -08:00
Veselin Dobrev 721ee611c4 In L2ZZErrorEstimator, support processors without elements.
In Mesh::GeneratePartitioning, use a simple partitioning when
the number of partitions is larger than or equal to the number
of elements.

In the mesh-explorer miniapp, in the partitioning sub-menu,
indicate which partitioning method is the default.
2018-11-15 14:02:36 -08:00
Veselin Dobrev 2ae23b17d2 Added parallel version of example 22.
Enhanced class VectorMassIntegrator to support user specified
number of components using the new method SetVDim().

Tweaked the function L2ZZErrorEstimator() to support flux spaces
with any number of components; this is only supported when the
smooth flux space is a Cartesian power of a scalar space.

Updated and tested all sample runs in ex22/ex22p.
2018-11-07 19:21:04 -08:00
Veselin Dobrev d5d51cee9b In classes GridFunction and ParGridFunction, add method
ProjectBdrCoefficient for VectorCoefficients.
2018-11-02 20:44:12 -07:00
Veselin Dobrev 0d6e920cc7 Add checks to ensure the mesh is conforming in the methods
ParGridFunction::ParallelAverage.

Remove a check for non-conforming mesh in the method
ParFiniteElementSpace::Synchronize which now should work for
NC meshes too.

A few additions to the doxygen documentation of class
ParFiniteElementSpace.
2018-10-19 15:31:49 -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 debea3cff7 Fix a bug in the boudary projection methods in ParGridFunction.
Specifically, in class ParGridFunction, in the methods
ProjectBdrCoefficient and ProjectBdrCoefficientTangent, add missing
average computation in the case of a nonconforming mesh.
2018-09-20 16:51:52 -07:00
Veselin Dobrev 1ddbc1e719 Fix an issue with ParGridFunction::ProjectBdrCoefficientTangent.
This fixes is the same issue is in ProjectBdrCoefficient which was
fixed by the previous commit.

An outstanding issue is the handling of nonconforming meshes in these
two methods - I left 'FIXME' comments there as reminders.
2018-09-18 15:47:47 -07:00
Veselin Dobrev 2ecebf912f In ParGridFunction::ProjectBdrCoefficient, add temporary
workaround for nonconforming meshes.

The workaround is to disable the parallel synchronization.
Also, added a debug check that all boundary dofs are set.
2018-09-13 16:53:02 -07:00
Veselin Dobrev e9176049bf Fix for an issue in the method ProjectBdrCoefficient in
class GridFunction when used in parallel.

The issue appears when the master processor for a boundary DOF does
not own any of the boundary elements adjacent to that DOF.

The method ProjectBdrCoefficientTangent is probably affected by the
same issue, however, it is not addressed by this commit.
2018-09-12 21:18:01 -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
Veselin Dobrev 39fd944dba Revert "Group communicator on (parallel) cut meshes [cut-mesh-groups-dev]" 2018-07-18 14:26:30 -07:00
Robert W. Anderson 282f35f6e0 use scalar group comm, works in nonconforming case 2018-07-13 20:17:59 -07:00
Veselin Dobrev a59c1d0847 In classes GridFunction and ParGridFunction, add a new projection
method, ProjectDiscCoefficient, that works with VectorCoefficients
performing averaging over elements.
2018-02-16 13:35:06 -08:00
Tzanio e32be388f5 Merge branch 'master' into visit-data-collection-dev
Conflicts:
	CHANGELOG
2018-01-29 09:38:26 -08:00
Veselin Dobrev 881638ac85 Merge branch 'master' into visit-data-collection-dev 2018-01-18 20:34:18 -08:00
Veselin Dobrev 27b6f1e2a8 Merge branch 'master' into nonlin-form-dev 2018-01-17 22:53:53 -08:00
Veselin Dobrev 42ad503d6e Define a shortcut for std::numeric_limits<double>::infinity() called
mfem::infinity() and replace (almost) all usage of the std version with
the shortcut.

In SparseMatrix::MakeRef, copy the field isSorted from the original
matrix.
2018-01-02 06:36:04 -08:00
Veselin Dobrev 44eb00ec04 Add ParGridFunction constructor from ParMesh* and std::istream. 2017-12-18 21:11:02 -08:00
Veselin Dobrev 839cf2fdab In class ParGridFunction, in the "localizing" constructor:
* Add support for GridFunctions on more general FE spaces, e.g. on
  variable-order NURBS spaces.
* Make some of the parameters const.
2017-11-27 20:14:24 -08:00
Veselin Dobrev a6bacfa23b Fix a warning in ParGridFunction::GetValue and remove trailing
whitespace in CHANGELOG.
2017-11-05 22:48:13 -08:00
Veselin Dobrev 282dd3894d Merge pull request #254 from mfem/prolongation-opt
Optimized parallel prolongation operator for conforming meshes [prolongation-opt]
2017-09-07 17:23:02 -07:00
Veselin Dobrev 14d552503c Replace calls to ParFiniteElementSpace::Dof_TrueDof_Matrix() with
calls to ParFiniteElementSpace::GetProlongationMatrix() in places
where only the action of the matrix is required.

In ParNonlinearForm::Mult(), use the parallel prolongation operator
instead of relying on the GroupCommunicator.
2017-08-29 16:40:40 -07:00
Stefano Zampini b24b72682b Add missing assert to match the gridfunction class 2017-08-26 10:49:50 +03:00
Veselin Dobrev 0821ed0f64 Add a new protected method: GridFunction::ComputeMeans().
In class ParGridFunction, implement the inherited virtual methods
SetSpace(FiniteElementSpace*), MakeRef(FiniteElementSpace*, double*),
and MakeRef(FiniteElementSpace*, Vector&, int) - they will use a
dynamic_cast to get required ParFiniteElementSpace*. Also, made the
versions of these methods taking ParFiniteElementSpace* non-virtual.
2017-02-22 21:13:34 -08:00
Vladimir Tomov a64f3d5c8f Extra options for projecting (by averaging) discontinuous Coefficients.
Made some GridFunction methods virtual.
2017-02-17 18:50:05 -08: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 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 29ae8fb6ac Version 1.2 2011-04-08 15:27:24 -07:00