Commit Graph
142 Commits
Author SHA1 Message Date
Tzanio Kolev e4c2152419 Update Copyright to 2010-2025 2025-02-03 12:17:26 -08:00
Will Pazner d08c019d4c Avoid initializing data twice in Array constructors 2024-12-24 18:19:37 -08:00
Will Pazner e69ad849ff Ensure *this is initialized in Array move constructor 2024-12-24 18:19:37 -08:00
Tzanio Kolev 899a96b769 Merge pull request #4566 from david-kamensky/nurbs-constructors
Adding new constructors for NURBS patches
2024-11-26 15:51:38 -08:00
Veselin Dobrev 5ec2931690 Merge pull request #4564 from mfem/array-init-list
Use std::initializer_list for braced-list construction
2024-11-25 19:16:23 -08:00
Will Pazner 7645bce2b5 Merge remote-tracking branch 'origin/master' into array-init-list
# Conflicts:
#	general/array.hpp
#	tests/unit/general/test_array.cpp
2024-11-21 13:27:02 -08:00
Justin Laughlin 8e3674396f Merge branch 'master' into nurbs-constructors 2024-11-18 11:49:58 -08:00
adam-sim-dev 4eac35a79a Fix conversion of pointer differences __int64 to int. Suggested by najlkin 2024-11-16 16:08:20 +08:00
737d9032d7 Adding new constructors for NURBS meshes.
This adds some convenience constructors for NURBS patches, and also includes a test exercising the new functionality.

Co-authored-by: Derek Thomas <derek@coreform.com>
Co-authored-by: Kevin Tew <kevin@coreform.com>
Co-authored-by: David Kamensky <david@coreform.com>
Co-authored-by: Justin Laughlin <laughlin6@llnl.gov>
2024-11-14 12:08:15 -07:00
Will Pazner 7195af90b1 Compile-time check for Array convertible-type constructor 2024-11-01 14:43:39 -07:00
Will Pazner c7bb0201c0 Re-add C-style array constructor for Array 2024-10-31 10:09:59 -07:00
Will Pazner ff0b016126 Use std::initializer_list for braced-list construction
In the previous implementation, Array<T>({1}) would select the Array<T>(int)
constructor rather than the braced-list constructor.
2024-10-31 09:32:01 -07:00
Hugh Carson 449ae5e8c3 Fix bug where ncmesh would not discover new boundary attribute group 2024-10-11 10:56:28 -04:00
Hugh Carson f3add08ae3 Address MR feedback:
- Rewrapping to 80
- Forward some base methods to public access
- Restore some old implementation methods in terms of new versions
- Doyxgen and comment fixes
2024-09-12 14:14:07 -04:00
Hugh Carson 2f6871e449 CI Fixes:
- Unused variables
- Memory leak
- Initialization order
- Remove std::vector usage
- Fix char index into arrays
- Early exit if an empty ncsubmesh is constructed
- Array list initalizer was hardcoded to int
- Remove anonynmous namespace from ncmesh_tables.hpp, use static and
  constexpr instead
- Remove unneeded table includes in ncsubmesh.cpp and pncsubmesh.cpp
- Move trivial type assertion of Array to class body from constructor
- Fix warning about use of abs over std::abs in batched linalg
- Add parent hashtable accessors to bypass access controls in parent
  classes.
- Change loop condition to avoid need for ncmesh_tables.hpp include
- Change [ParSubMesh] to [SubMesh] for Catch2 category, the parallel
  is implicit in [Parallel] label
- Missing include in mesh_test_utils.cpp
- Fix bug for array access with empty ncmesh
2024-09-09 15:10:25 -04:00
Hugh Carson f052af3d6b Make style 2024-09-09 15:10:25 -04:00
Hugh Carson cc70734bc0 Add initializer_list constructor to Array, and fix some more edge cases from testing 2024-09-09 15:10:24 -04:00
Hugh Carson b991cb755e Rewrite of the parallel data structure, complete ncmesh is now built doing a leaf to root tree traversal. The ordering is inherited from the parent ncmesh, ensuring all ranks build the correct ncmesh structure. Can handle external nc boundaries, can't handle internal yet due to face instability. 2024-09-09 15:10:24 -04:00
Hugh Carson 5e3359a805 Preliminary work on developing NCSubMesh
Many small features and a lot of really quite dirty code, print statements etc. This comes from squashing a large number of commits together.
A few different strategies were tried and failed (partially building the NC structure, having ranks have different NC etc.) before arriving at
the final reverse tree traversal algorithm.
2024-09-09 15:10:24 -04:00
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