Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
0157f35
Small initial refactor.
BradWhitlock May 6, 2026
087dd11
Started to consolidate state into MFEM and Blueprint state objects an…
BradWhitlock May 6, 2026
a48c69f
Added 2 new quadrature types.
BradWhitlock May 6, 2026
b56f02b
Incremental progress toward making Blueprint quadrature point mesh.
BradWhitlock May 6, 2026
69e930e
Quadrature improvements, added GenerateQuadratureMesh for Blueprint
BradWhitlock May 7, 2026
421010e
Blueprint point sampling.
BradWhitlock May 7, 2026
6c0ff81
Added volume fraction creation functions.
BradWhitlock May 7, 2026
8c99b7e
Handle structured topologies in SamplingShaper.
BradWhitlock May 8, 2026
6890120
Refactoring and support for inline Blueprint meshes in shaping driver.
BradWhitlock May 8, 2026
285eea3
Change how we write quadrature mesh.
BradWhitlock May 8, 2026
56463ca
Save blueprint mesh with sampled fields to disk.
BradWhitlock May 8, 2026
d3668f4
Moved some methods to a cpp file
BradWhitlock May 20, 2026
5ddde9e
Merged develop to branch. Did some refactoring.
BradWhitlock May 21, 2026
c7d5185
Adjust shaping build so we can build without MFEM.
BradWhitlock May 22, 2026
07ce3e1
Removed duplicated aliases
BradWhitlock May 22, 2026
05715c6
Some refactoring to separate MFEM and Conduit logic.
BradWhitlock May 22, 2026
802850c
Separated Blueprint and MFEM helpers into different files.
BradWhitlock May 22, 2026
269bf0f
Moved some functions out of the header. Added timing. Fixed a bug.
BradWhitlock May 22, 2026
e696f59
make style
BradWhitlock May 22, 2026
c2c250e
Set volfracOrder to 1 for Blueprint
BradWhitlock May 22, 2026
c8c20fc
Small refactor
BradWhitlock May 26, 2026
14d7e30
Restoring / adding comments.
BradWhitlock May 26, 2026
16885a4
Support importing Blueprint volume fraction field for void material.
BradWhitlock May 27, 2026
df65383
Added a conduit-only sampling shaper test that does not require MFEM.
BradWhitlock May 27, 2026
a4f5678
Merge branch 'develop' into feature/whitlock/sampling_low_order_bluep…
BradWhitlock May 27, 2026
7f00028
Added a note to the RELEASE-NOTES.md file.
BradWhitlock May 27, 2026
8302820
Added axom::bump::ComputeMeasure and used it to print material volume…
BradWhitlock May 27, 2026
b565553
make style
BradWhitlock May 27, 2026
a3916c3
Adjust cmake logic
BradWhitlock May 28, 2026
4167298
Compilation fixes for CUDA.
BradWhitlock May 28, 2026
735784d
Require bump in some conditional compilation.
BradWhitlock May 28, 2026
1f438a3
Merged some changes into branch.
BradWhitlock May 28, 2026
fca954a
Screen out incompatible coordsetView/topologyView combinations.
BradWhitlock May 28, 2026
d282f4c
Include files based on AXOM_USE_CONDUIT only
BradWhitlock May 28, 2026
8a3241c
Fix some ifdefs
BradWhitlock Jun 8, 2026
49fbe35
Moved some files.
BradWhitlock Jun 8, 2026
985fc15
Moved some utility functions to separate file.
BradWhitlock Jun 8, 2026
758ac16
Fixes, comments.
BradWhitlock Jun 8, 2026
de18011
make style
BradWhitlock Jun 8, 2026
88baa88
Removed unused vars.
BradWhitlock Jun 8, 2026
226d107
Fixed some compilation issues when a subset of Axom libraries or depe…
BradWhitlock Jun 9, 2026
a2ab091
make style
BradWhitlock Jun 9, 2026
1ca5bde
Merged develop into branch.
BradWhitlock Jun 12, 2026
94980a9
Try increasing CI timeout for some jobs to see if it improves reliabi…
BradWhitlock Jun 12, 2026
da7d7c2
Use --resolution instead of --res in a quest test so it does not conf…
BradWhitlock Jun 12, 2026
2bb5e5a
Refactoring to support Sidre better
BradWhitlock Jun 13, 2026
19f9037
More refactoring.
BradWhitlock Jun 13, 2026
9e34740
Moved methods from hpp to cpp.
BradWhitlock Jun 13, 2026
80d9375
More refactoring for conduit+sidre support. make style.
BradWhitlock Jun 13, 2026
5071b2f
Added an include file
BradWhitlock Jun 15, 2026
f2a9d35
Merge branch 'develop' into feature/whitlock/sampling_low_order_bluep…
BradWhitlock Jun 15, 2026
cddfcde
Fixed a volume fraction problem in newer refactors.
BradWhitlock Jun 15, 2026
fd90a05
Changed a macro guard.
BradWhitlock Jun 15, 2026
8965848
Added bump-based mesh and coordset conversion into the shaping helpers.
BradWhitlock Jun 16, 2026
b5d3274
Added a test for MakeExplicitCoordset.
BradWhitlock Jun 16, 2026
cc5bc0a
Some refactoring in IntersectionShaper to help it create fields via B…
BradWhitlock Jun 16, 2026
495c8fb
Use the field naming utility functions in the rest of the code/tests.
BradWhitlock Jun 16, 2026
491886e
Updated RELEASE-NOTES.md
BradWhitlock Jun 16, 2026
8744560
Added doxygen comments.
BradWhitlock Jun 16, 2026
4bab5b0
Separated a blueprint test into its own file. Fix some macro guards.
BradWhitlock Jun 16, 2026
cb7efc1
make style
BradWhitlock Jun 16, 2026
058acbe
Compilation and warnings
BradWhitlock Jun 16, 2026
cbf2d06
Revert a CI change.
BradWhitlock Jun 16, 2026
6585c8c
Merge branch 'develop' into feature/whitlock/sampling_low_order_bluep…
BradWhitlock Jun 16, 2026
f423427
make style
BradWhitlock Jun 16, 2026
fe65947
Removed Shaper::getBlueprintMeshNode.
BradWhitlock Jun 16, 2026
8ff851e
Merge branch 'develop' into feature/whitlock/sampling_low_order_bluep…
BradWhitlock Jun 16, 2026
c87cb42
Simplify MFEMState in shapers.
BradWhitlock Jun 16, 2026
0bcff1d
Simplify creation of Blueprint state.
BradWhitlock Jun 16, 2026
2c44658
Remove obsolete methods.
BradWhitlock Jun 16, 2026
38a68a8
make style
BradWhitlock Jun 16, 2026
638d6e6
Merge branch 'develop' into feature/whitlock/sampling_low_order_bluep…
BradWhitlock Jun 18, 2026
79584ad
Undo a reader change.
BradWhitlock Jun 18, 2026
7b1b6d5
Merge branch 'develop' into feature/whitlock/sampling_low_order_bluep…
BradWhitlock Jun 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ The Axom project release numbers follow [Semantic Versioning](http://semver.org/
removed in a future version of Axom.
- Core: Adds Durand-Kerner polynomial solver which returns the complex roots of a univariate polynomial
- Core: Adds `axom::Array::pop_back` for API compatibility with `std::vector`
- Quest: Enhanced `SamplingShaper` so it can operate on Blueprint quad/hex meshes. Pass `inline_mesh_blueprint` to the
`quest_shaping_driver_ex` example program instead of `input_mesh` when a Blueprint mesh is desired.
- Quest: `quest_shaping_driver_ex` now lets `inline_mesh_blueprint` runs choose the Blueprint backing
store with `--backing sidre|conduit`, which enables the program to operate on either Sidre or Conduit meshes.
- Primal: Adds KnotVector constructors that skip validity assertion checks, allowing the user to call `isValid()`
and handle the error appropriately.
- Primal: Adds a `primal::BezierTriangle` class
Expand Down
4 changes: 4 additions & 0 deletions src/axom/bump/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ set(bump_headers
views/UnstructuredTopologySingleShapeView.hpp
views/view_traits.hpp
BlendData.hpp
ComputeMeasure.hpp
CoordsetBlender.hpp
CoordsetExtents.hpp
CoordsetSlicer.hpp
Expand All @@ -73,14 +74,17 @@ set(bump_headers
ExtrudeMesh.hpp
FieldBlender.hpp
FieldSlicer.hpp
GenerateQuadratureMesh.hpp
HashNaming.hpp
IndexingPolicies.hpp
MakeExplicitCoordset.hpp
MakePointMesh.hpp
MakePolyhedralTopology.hpp
MakeUnstructured.hpp
MakeZoneCenters.hpp
MakeZoneVolumes.hpp
MapBasedNaming.hpp
MappedZoneUtilities.hpp
MatsetSlicer.hpp
MergeCoordsetPoints.hpp
MergeMeshes.hpp
Expand Down
112 changes: 112 additions & 0 deletions src/axom/bump/ComputeMeasure.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
// Copyright (c) Lawrence Livermore National Security, LLC and other
// Axom Project Contributors. See top-level LICENSE and COPYRIGHT
// files for dates and other details.
//
// SPDX-License-Identifier: (BSD-3-Clause)
#ifndef AXOM_BUMP_COMPUTE_MEASURE_HPP_
#define AXOM_BUMP_COMPUTE_MEASURE_HPP_

#include "axom/config.hpp"
#include "axom/core.hpp"
#include "axom/slic.hpp"

#include "axom/sidre/core/ConduitMemory.hpp"

#include <conduit/conduit.hpp>

#include <string>

namespace axom
{
namespace bump
{

/*!
* \brief This class computes volume for 3D and area for 2D and stores the values in a field.
*
* \tparam ExecSpace The execution space where the compute happens.
* \tparam Adaptor A PrimalAdaptor.
*/
template <typename ExecSpace, typename Adaptor>
class ComputeMeasure
{
public:
/*!
* \brief Constructor.
*
* \param adaptor The adaptor object to use to compute the measure.
*/
ComputeMeasure(Adaptor &adaptor)
: m_adaptor(adaptor)
, m_allocator_id(axom::execution_space<ExecSpace>::allocatorID())
{ }

/*!
* \brief Set the allocator id to use when allocating memory.
*
* \param allocator_id The allocator id to use when allocating memory.
*/
void setAllocatorID(int allocator_id)
{
SLIC_ERROR_IF(!axom::isValidAllocatorID(allocator_id), "Invalid allocator id.");
SLIC_ERROR_IF(!axom::execution_space<ExecSpace>::usesAllocId(allocator_id),
"Allocator id is not compatible with execution space.");
m_allocator_id = allocator_id;
}

/*!
* \brief Get the allocator id to use when allocating memory.
*
* \return The allocator id to use when allocating memory.
*/
int getAllocatorID() const { return m_allocator_id; }

/*!
* \brief Compute the area or volume (depending on shape dimension) and store
* it in the field.
*
* \param topoName The topology name for the field.
* \param n_field The node that will contain the new field.
*/
void execute(const std::string &topoName, conduit::Node &n_field)
{
const auto conduitAllocatorId =
axom::sidre::ConduitMemory::axomAllocIdToConduit(getAllocatorID());

n_field["topology"] = topoName;
n_field["association"] = "element";
conduit::Node &n_values = n_field["values"];
n_values.set_allocator(conduitAllocatorId);
n_values.set(conduit::DataType::float64(m_adaptor.numberOfZones()));
auto valuesView = bump::utilities::make_array_view<double>(n_values);

// Use the Adaptor on device to compute area or volume.
const Adaptor deviceAdaptor(m_adaptor);
axom::for_all<ExecSpace>(
deviceAdaptor.numberOfZones(),
AXOM_LAMBDA(axom::IndexType zoneIndex) {
const auto shape = deviceAdaptor.getShape(zoneIndex);

double value = 0.;
if constexpr(Adaptor::dimension() == 3)
{
value = shape.volume();
}
else if constexpr(Adaptor::dimension() == 2)
{
value = shape.area();
}

valuesView[zoneIndex] = value;
});
}

private:
Adaptor m_adaptor;
int m_allocator_id;
};

} // end namespace bump
} // end namespace axom

#endif
Loading