Commit Graph
123 Commits
Author SHA1 Message Date
Will Pazner 0702739a69 Change Array<T>::MakeRef signature 2024-04-30 16:25:30 -07:00
Will Pazner 9263bd086a Merge remote-tracking branch 'origin/master' into mesh-partitioner-dev 2024-04-30 14:39:53 -07:00
Will Pazner 63721b08e7 Allow Array<T>::MakeRef to specify a memory type 2024-04-30 11:27:47 -07:00
Veselin Dobrev 18334a69fb Replace 'double' with 'real_t'. Small doxygen additions. 2024-03-31 18:22:56 -07:00
Veselin Dobrev cba47bc4cd Initial draft of mesh partitioning capability that allows big
serial meshes to be partitioned and saved in parallel format
using one processor. This capability allows MFEM to work around
the current bottleneck which requires every MPI rank to load
the big serial mesh before it can be partitioned.

This new capability is added to the `mesh-explorer` miniapp with
the new menu option `D` and is based on two new classes:
* `MeshPartitioner`, constructed from a serial mesh and any
  partitioning array. Once constructed, it can extract any part
  of the mesh consisting of the elements with ids `elem_id` such
  that `partitioning[elem_id] == part_id`. The extracted mesh
  part is given in the form of a `MeshPart` object.
* `MeshPart`, which is currently construced by a `MeshPartitioner`.
  In the future, it can be created by other methods to facilitate
  other capabilities such as parallel mesh re-partitioing. Once
  constructed, the `MeshPart` can be saved to a file using the
  text-based parallel MFEM format. Support for other formats can
  be added as well. Another capability that can be added is the
  MPI communication of `MeshPart` objects between different ranks
  which can be used, for example, for implementing a `ParMesh`
  constructor that needs the serial mesh only on one processor.

Current limitations:
* Non-conforming and NURBS meshes are not supported.
* Meshes with nodes (e.g. high-order or periodic meshes) are
  not supported.

Small extension: if `Mesh::SetCurvature` is called with `order = 0`
then the method will remove the nodal `GridFunction` and use the
vertices array instead. This "curvature removal" capability can be
used from the `mesh-explorer` miniapp with the `c` menu option,
by specifying 0 when prompted to enter order.

Temporary change: `ex1p.cpp` is modified to disregard the (serial)
mesh specified with the option `-m`/`--mesh`. Instead, it loads
the parallel mesh `../miniapps/meshing/mesh-explorer.mesh.<rank>`
produced by the `D` menu option of the `mesh-explorer` miniapp.
2024-03-31 12:57:13 -07:00
Jan Nikl 9ecd621e5b Merge branch 'master' into najlkin-pr14 2024-02-09 13:39:13 -08:00
Tzanio Kolev 87290fbf56 Update Copyright to 2010-2024 2024-01-27 13:06:49 -08:00
Jan Nikl 391bc38039 Merge branch 'master' into najlkin-pr14 2024-01-24 16:47:33 -08:00
dylan-copeland 9f5b282c7a Minor improvement to documentation. 2024-01-09 17:11:05 -08:00
Dylan Copeland 47241bd101 Merge branch 'master' of github.com:mfem/mfem into nurbsquad 2023-04-24 09:13:11 -07:00
Dylan Copeland 6a09060d1a Merge branch 'master' of https://github.com/mfem/mfem into nurbsquad 2023-04-10 19:41:08 -07:00
Will Pazner 6a09aab038 Change Array::MakeRef to use MakeAlias 2023-04-04 08:06:13 -07:00
Veselin Dobrev 2106ea4039 Merge pull request #3532 from mfem/2023-copyright
Updated COPYRIGHT to 2010-2023
2023-03-21 13:11:37 -07:00
Veselin Dobrev a46650042b Fix some warnings 2023-03-14 09:11:41 -07:00
Tzanio Kolev 96e00dc815 Updated COPYRIGHT to 2010-2023 2023-03-11 16:58:18 -08:00
Veselin Dobrev 4f0a7d4773 Small updates:
* Bugfix in SparseMatrix::SortColumnIndices()
* More general definition of AsConst()
* Fix nvcc warning in miniapps/meshing/reflector.cpp
2023-03-10 23:48:14 -08:00
Dylan Copeland 1eab3a2193 Merge branch 'master' of github.com:mfem/mfem into nurbsquad 2023-02-03 19:53:25 -08:00
Will Pazner 40a0fac667 Add move constructor to Array<T> 2023-01-08 20:07:34 -08:00
Dylan Copeland 11b8330ae3 Documentation. Assignment operator for Array3D. 2022-12-27 14:11:33 -08:00
Veselin Dobrev f2f489a36e Updated ParMesh::GetSerialMesh() with some overflow checks and
some small tweaks.

Replace some uses of 'long' with 'long long' to better support
Win64 builds where 'long' is 32-bit and 'long long' is 64-bit.
On Linux and MacOS, both types are typically 64-bit.

Updated various "MemoryUsage" methods to return 'std::size_t'
instead of 'long' since the latter is 32-bit in Win64 builds.

Updated CHANGELOG.
2022-07-26 16:09:12 -07:00
Tzanio 6d017e33f9 Added const to the arguments of several copy assignments 2022-03-18 08:20:34 -07:00
Tzanio 297e1c1a30 Resolving a number of 'Rule of Two' warnings from LGTM 2022-03-15 10:56:54 -07:00
Tzanio 434c90fb14 Resolving LGTM errors 2022-03-14 19:48:56 -07:00
Tzanio 6fa650fef5 Fix some warnings from https://lgtm.com/projects/g/mfem/mfem 2022-03-08 10:26:23 -08:00
Tzanio 6d2530775b Extended copyright to 2022 2022-02-25 10:24:50 -08:00
Stowell, Mark L 63381b366a Renaming ostream variables from out to os 2022-01-18 15:06:46 -08:00
Stowell, Mark L f7c9bdab17 Renaming "out" and "err" local variables to avoid globals 2021-12-22 15:19:20 -08:00
Jan Nikl 6a1ef0e539 Merge branch 'master' into najlkin-pr14 2021-10-30 22:49:53 +02:00
Tom Stitt 320bf0a980 add new ctor to array that takes a size and a memorytype 2021-10-14 10:48:43 -07:00
Tzanio cc9fda7d8f Merge branch 'master' into form-linear-system-tweak 2021-07-15 18:29:13 -07:00
Tzanio Kolev 25e59797c1 Merge pull request #2236 from mfem/leading-underscores-dev
Remove leading underscore variables
2021-05-18 16:44:54 -07:00
Aaron Fisher e758c37691 Removed nearly all leading underscores for variable names. Every once in a while one of these will confilct with standard libraries in an oddball compiler and it's best to just avoid this problem alltogether. 2021-05-10 16:06:51 -07:00
Veselin Dobrev de32445f18 Update comments in class Array<T> that T must be a trivial type. 2021-05-04 12:20:17 -07:00
Veselin Dobrev 5712978fa1 Add a simple utitility template function AsConst(), similar to
std::as_const() in c++17.

Fix the unit test "FormLinearSystem/SolutionScope" to work with
GPUs and use independent solution GridFunctions to test the
different AssemblyLevels.
2021-05-01 18:59:40 -07:00
Veselin Dobrev bf20d26f12 First iteration of adding a static_assert for the template
type in class Array<T> -- T must be trivial type.

Fixed some of the issues uncovered by this assert.

The main issue (that currently breaks the build) is that
we use Array<T> with T = mfem::NCMesh::MeshId and its derived
classes which are not trivial-type.
2021-05-01 14:08:34 -07:00
Tzanio Kolev 8f7fd31070 Merge pull request #2034 from mfem/init-list-containers-dev
List initialization for Array/Vector/DenseMatrix
2021-02-09 08:13:30 -08:00
Josh Essman f9ff9a1004 feat: braced init-list construction for Array<T> plus test 2021-02-02 15:18:21 -08:00
Adrien M. Bernede 04fb572359 Let's forget about 2020 2021-01-26 11:55:36 -08:00
Jan Nikl 2f9e9a9712 Added const specifier to Array::IsSorted(). 2020-12-15 16:17:31 +01:00
Julian Andrej d211b3c305 Simplify Array2D assignment operator 2020-09-08 16:33:59 -07:00
Julian Andrej a5a6748731 Set sizes new on Array2D assignment operator 2020-09-08 11:22:38 -07:00
Julian Andrej 7933fd9b88 Make blocknonlinearform and parblocknonlinearform work with non conforming meshes 2020-09-04 08:05:11 -07:00
Tzanio 80c787a79f minor 2020-07-14 16:15:33 -07:00
Bob Anderson 291875509d document that Array operates correctly only with POD types 2020-07-09 15:32:00 -07:00
Aaron Fisher 8dda4f7441 Numerous changes suggested by Jakub in the review. 2020-04-30 10:59:22 -07:00
Aaron Fisher add2e8a3f2 Fixed the remainder of the issues that Mark caught. 2020-04-20 16:51:30 -07:00
Aaron Fisher 2dcae3ac05 make style 2020-04-09 14:06:34 -07:00
Aaron Fisher bb2f464ca6 Merge branch 'master' into dox-update1 2020-04-08 15:15:52 -07:00
Aaron Fisher c3be660074 Merge branch 'master' into dox-update1 2020-04-07 17:25:23 -07:00
Tzanio 33740acb3e Some edits in general/ 2020-03-09 20:12:51 -07:00