Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
7a0440d
remove operations from FiniteElementBase
rrsettgast Jul 13, 2025
7e40dad
remove numSupportPoints templated function in FiniteElementBase
rrsettgast Jul 14, 2025
53c986b
remove option to precalculate shape functions....this is never advant…
rrsettgast Jul 14, 2025
5e51028
fixed some compilation issues from last commit
rrsettgast Jul 14, 2025
4417ef0
intermediate commit
rrsettgast Sep 16, 2025
89e9006
split Qk_Hexahedron_Lagrange_GaussLobatto
rrsettgast Sep 17, 2025
9fee34c
got most of the tricky issues worked out
rrsettgast Sep 20, 2025
fa32b01
compile success
rrsettgast Sep 22, 2025
7da397c
some cleanup
rrsettgast Sep 22, 2025
ea7c523
more cleanup
rrsettgast Sep 22, 2025
8af705f
Merge branch 'develop' into feature/reworkFiniteElement
wrtobin Sep 22, 2025
438fefa
general device compilation macro
wrtobin Sep 22, 2025
7078650
Refactor BB_Tetrahedron and Pk_Pyramid_BCD classes to implement a new…
wrtobin Sep 22, 2025
ed956c0
uncrustify
wrtobin Sep 22, 2025
470c347
mostly documentation, adding/relocating aliases into correct compilat…
wrtobin Sep 22, 2025
72bd2ad
uncrustify
wrtobin Sep 22, 2025
b8f4622
Merge branch 'develop' into feature/reworkFiniteElement
wrtobin Sep 22, 2025
67baf34
gpu build fixes, test fixes, warning suppression on cuda platforms, u…
wrtobin Sep 22, 2025
fef8a8f
removing erroneous leftover device compile guard
wrtobin Sep 23, 2025
abdc817
copilot review
wrtobin Sep 23, 2025
73774aa
remove decorators from FiniteElementBase
wrtobin Sep 23, 2025
2ca01c8
uncrustify
wrtobin Sep 23, 2025
8c408ab
uncomment lassen basic_string error lines
wrtobin Sep 23, 2025
443a555
mostly just consistency in data member and struct type usage from bas…
wrtobin Sep 23, 2025
bb73345
consistency, remove m_detJ from CellElementSubregion, on-the-fly mass…
wrtobin Sep 26, 2025
769a37e
cleanup
wrtobin Sep 26, 2025
4b143da
merge develop
wrtobin Sep 26, 2025
b317236
removing unused vars leftover during mass kernel work
wrtobin Sep 26, 2025
9761d10
why
wrtobin Sep 26, 2025
3943b1d
removing dNdX precalc and dealing with surface generator force calc f…
wrtobin Sep 29, 2025
b6beaa7
python branch for temp restartcheck suppression to verify the rest of…
wrtobin Sep 29, 2025
32ccfc7
fix stress indexing error
wrtobin Oct 3, 2025
572e66b
Merge branch 'develop' into feature/reworkFiniteElement
rrsettgast Dec 4, 2025
03b07a2
update PVT hash
rrsettgast Dec 4, 2025
5d8c8ae
add weight to calcJacobian function
rrsettgast Dec 5, 2025
ee6f156
update calcJacobian doxy to reflect `wxdetj` return value, vem eleme…
wrtobin Dec 5, 2025
07100e9
uncrustify
wrtobin Dec 5, 2025
e559800
unused var macros got dropped
wrtobin Dec 5, 2025
3d7b07a
`::template MeshData`
wrtobin Dec 5, 2025
130bf84
whoops
wrtobin Dec 5, 2025
199ee5e
wait how was that compiling
wrtobin Dec 5, 2025
9116dbf
since its a serial policy just swap to host lambda to avoid nested ho…
wrtobin Dec 5, 2025
81a34a0
Merge branch 'develop' into feature/reworkFiniteElement
rrsettgast Dec 8, 2025
8e37993
change streak job to streak2
rrsettgast Dec 8, 2025
b1b560b
change certificates for streak change
rrsettgast Dec 8, 2025
b33aa7c
revert to streak, with use of only a single runner specified
rrsettgast Dec 8, 2025
eedf4af
revert to streak, with use of only a single runner specified
rrsettgast Dec 8, 2025
82c00d1
Modify determinant return to include basis weights
rrsettgast Dec 11, 2025
59faff8
remove weight when not available
rrsettgast Dec 11, 2025
9d2c555
Simplify return value in Qk_Hexahedron_Lagrange_GaussLobatto
rrsettgast Dec 11, 2025
e702a25
Merge branch 'develop' into feature/reworkFiniteElement
rrsettgast Dec 12, 2025
a242e20
revert LvArray to develop
rrsettgast Dec 12, 2025
4530459
adding nan checks to problem failing in CI (cannot recreate locally) …
wrtobin Dec 12, 2025
c05afd0
change for loop in AcousticWaveEquationSEM to raja loop
rrsettgast Dec 15, 2025
50c4f82
Refactor AcousticWaveEquationSEM to use ApplyFreeSurfaceBCKernel for …
wrtobin Dec 15, 2025
ee3a9ad
Merge branch 'develop' into feature/reworkFiniteElement
rrsettgast Jan 5, 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: 2 additions & 2 deletions .github/workflows/ci_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -374,8 +374,8 @@ jobs:
GEOS_ENABLE_BOUNDS_CHECK: OFF
DOCKER_REPOSITORY: geosx/rockylinux8-clang17-cuda12.9.1
RUNS_ON: streak
NPROC: 8
DOCKER_RUN_ARGS: "--cpus=8 --memory=256g --runtime=nvidia --gpus all -v /etc/pki/ca-trust/source/anchors/:/usr/local/share/ca-certificates/llnl:ro"
NPROC: 16
DOCKER_RUN_ARGS: "--cpus=16 --memory=448g --runtime=nvidia --gpus all -v /etc/pki/ca-trust/source/anchors/:/usr/local/share/ca-certificates/llnl:ro"
DOCKER_CERTS_DIR: "/usr/local/share/ca-certificates"
DOCKER_CERTS_UPDATE_COMMAND: "update-ca-trust"
HOST_CONFIG: /spack-generated.cmake
Expand Down
2 changes: 1 addition & 1 deletion scripts/setupPythonEnvironment.bash
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ case $key in
echo "-p/--python-target \"Target parent python bin\""
echo "-b/--bin-dir \"Directory to link new scripts\""
echo "-d/--pkg-dir \"Directory containing target python packages\""
echo "-t/--tool-branch \"Target branch for geosPythonPackages (default=main) \""
echo "-r/--python-pkg-branch \"Target branch for geosPythonPackages (default=main) \""
echo "-v/--verbose \"Increase verbosity level\""
echo ""
exit
Expand Down
9 changes: 7 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,11 @@ blt_add_executable( NAME geosx
${extraComponentsLinkList}
${externalComponentsLinkList} )

if(APPLE)
target_link_options(geosx PRIVATE "-Wl,-export_dynamic")
endif()


# Seems to be required on some CMake versions (e.g. 3.16) to get enforce device linking
if( ${ENABLE_HYPRE_DEVICE} STREQUAL "CUDA" )
set_target_properties( geosx PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS TRUE )
Expand Down Expand Up @@ -220,8 +225,8 @@ install( FILES ${CMAKE_BINARY_DIR}/schema.xsd
################################
# Add python environment setup
################################
#message(WARNING "Temporarily changing the geosPythonBranch to cusini/remove-relative-paths")
#set(GEOS_PYTHON_PACKAGES_BRANCH "cusini/remove-relative-paths" CACHE STRING "" FORCE)
message(WARNING "Temporarily changing the geosPythonBranch to feature/remove-dndx-detj")
set(GEOS_PYTHON_PACKAGES_BRANCH "feature/remove-dndx-detj" CACHE STRING "" FORCE)


if ( Python3_EXECUTABLE )
Expand Down
2 changes: 1 addition & 1 deletion src/cmake/thirdparty/SetupGeosxThirdParty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -887,7 +887,7 @@ if( ${CMAKE_VERSION} VERSION_LESS "3.19" )
set( PYTHON_AND_VERSION Python3 )
set( PYTHON_OPTIONAL_COMPONENTS)
else()
set( PYTHON_AND_VERSION Python3 3.6.0...<4 )
set( PYTHON_AND_VERSION Python3 3.6.0...<4.0.0 )
set( PYTHON_OPTIONAL_COMPONENTS OPTIONAL_COMPONENTS Development NumPy)
endif()
if(ENABLE_PYGEOSX)
Expand Down
1 change: 1 addition & 0 deletions src/coreComponents/finiteElement/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ set( finiteElement_headers
LinearFormUtilities.hpp
PDEUtilities.hpp
elementFormulations/FiniteElementBase.hpp
elementFormulations/FiniteElementOperators.hpp
elementFormulations/H1_Hexahedron_Lagrange1_GaussLegendre2.hpp
elementFormulations/H1_Pyramid_Lagrange1_Gauss5.hpp
elementFormulations/H1_QuadrilateralFace_Lagrange1_GaussLegendre2.hpp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,9 @@
#include "LvArray/src/tensorOps.hpp"
#include "FiniteElementDispatch.hpp"


namespace geos
{

// TODO remove when these quantities are placed inside the FiniteElementBase
// class.
namespace dataRepository
{
namespace keys
{
string const dNdX = "dNdX";
string const detJ = "detJ";
}
}



class FiniteElementDiscretization : public dataRepository::Group
{
public:
Expand Down Expand Up @@ -71,14 +57,6 @@ class FiniteElementDiscretization : public dataRepository::Group

///@}

template< typename SUBREGION_TYPE,
typename FE_TYPE >
void calculateShapeFunctionGradients( arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const & X,
SUBREGION_TYPE * const elementSubRegion,
typename FE_TYPE::template MeshData< SUBREGION_TYPE > meshData,
FE_TYPE & fe ) const;


/**
* @brief Factory method to instantiate a type of finite element formulation.
* @param parentElementShape String key that indicates the type of
Expand Down Expand Up @@ -125,65 +103,6 @@ ENUM_STRINGS( FiniteElementDiscretization::Formulation,
"SEM",
"DG" );

template< typename SUBREGION_TYPE,
typename FE_TYPE >
void
FiniteElementDiscretization::
calculateShapeFunctionGradients( arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const & X,
SUBREGION_TYPE * const elementSubRegion,
typename FE_TYPE::template MeshData< SUBREGION_TYPE > meshData,
FE_TYPE & finiteElement ) const
{
GEOS_MARK_FUNCTION;

// do not precompute shape functions in case of SEM or DG formulation (not needed)
if( m_formulation == Formulation::SEM || m_formulation == Formulation::DG )
return;

array4d< real64 > & dNdX = elementSubRegion->dNdX();
array2d< real64 > & detJ = elementSubRegion->detJ();
auto const & elemsToNodes = elementSubRegion->nodeList().toViewConst();

constexpr localIndex numNodesPerElem = FE_TYPE::maxSupportPoints;
constexpr localIndex numQuadraturePointsPerElem = FE_TYPE::numQuadraturePoints;
dNdX.resizeWithoutInitializationOrDestruction( elementSubRegion->size(), numQuadraturePointsPerElem, numNodesPerElem, 3 );
detJ.resize( elementSubRegion->size(), numQuadraturePointsPerElem );

finiteElement.setGradNView( dNdX.toViewConst() );
finiteElement.setDetJView( detJ.toViewConst() );

for( localIndex k = 0; k < elementSubRegion->size(); ++k )
{
typename FE_TYPE::StackVariables feStack;
finiteElement.template setup< FE_TYPE >( k, meshData, feStack );
real64 xLocal[numNodesPerElem][3];
localIndex numSupportPoints = finiteElement.template numSupportPoints< FE_TYPE >( feStack );
for( localIndex a=0; a< numSupportPoints; ++a )
{
localIndex const nodeIndex = elemsToNodes[ k][ a ];
for( int i=0; i<3; ++i )
{
xLocal[ a ][ i ] = X[ nodeIndex ][ i ];
}
}



for( localIndex q = 0; q < numQuadraturePointsPerElem; ++q )
{
real64 dNdXLocal[numNodesPerElem][3];
detJ( k, q ) = finiteElement.calcGradN( q, xLocal, feStack, dNdXLocal );

for( localIndex b = 0; b < numSupportPoints; ++b )
{
LvArray::tensorOps::copy< 3 >( dNdX[ k ][ q ][ b ], dNdXLocal[b] );
}
}
}

}


} /* namespace geos */

#endif /* GEOS_FINITEELEMENT_FINITEELEMENTDISCRETIZATION_HPP_ */
51 changes: 23 additions & 28 deletions src/coreComponents/finiteElement/FiniteElementDispatch.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,44 +159,41 @@ struct FiniteElementDispatchHandler< FE_TYPE, FE_TYPES... >
dispatch3D( FiniteElementBase const & input,
LAMBDA && lambda )
{
if( auto const * const ptr = dynamic_cast< FE_TYPE const * >(&input) )
if( auto const * const wrapper = dynamic_cast< FE_TYPE const * >(&input) )
{
lambda( *ptr );
}
else
{
FiniteElementDispatchHandler< FE_TYPES... >::dispatch3D( input, lambda );
lambda( *wrapper->getImpl() );
return;
}

FiniteElementDispatchHandler< FE_TYPES... >::dispatch3D( input, lambda );
}

template< typename LAMBDA >
static void
dispatch3D( FiniteElementBase & input,
LAMBDA && lambda )
{
if( auto * const ptr = dynamic_cast< FE_TYPE * >(&input) )
if( auto * const wrapper = dynamic_cast< FE_TYPE * >(&input) )
{
lambda( *ptr );
}
else
{
FiniteElementDispatchHandler< FE_TYPES... >::dispatch3D( input, lambda );
lambda( *wrapper->getImpl() );
return;
}

FiniteElementDispatchHandler< FE_TYPES... >::dispatch3D( input, lambda );
}

template< typename LAMBDA >
static void
dispatch2D( FiniteElementBase const & input,
LAMBDA && lambda )
{
if( auto const * const ptr = dynamic_cast< FE_TYPE const * >(&input) )
if( auto const * const wrapper = dynamic_cast< FE_TYPE const * >(&input) )
{
lambda( *ptr );
}
else
{
FiniteElementDispatchHandler< FE_TYPES... >::dispatch2D( input, lambda );
lambda( *wrapper->getImpl() );
return;
}

FiniteElementDispatchHandler< FE_TYPES... >::dispatch2D( input, lambda );
}
};

Expand All @@ -207,21 +204,21 @@ void
dispatchlowOrder3D( FiniteElementBase const & input,
LAMBDA && lambda )
{
if( auto const * const ptr1 = dynamic_cast< H1_Hexahedron_Lagrange1_GaussLegendre2 const * >(&input) )
if( auto const * const wrapper1 = dynamic_cast< H1_Hexahedron_Lagrange1_GaussLegendre2 const * >(&input) )
{
lambda( *ptr1 );
lambda( *wrapper1->getImpl() );
}
else if( auto const * const ptr2 = dynamic_cast< H1_Wedge_Lagrange1_Gauss6 const * >(&input) )
else if( auto const * const wrapper2 = dynamic_cast< H1_Wedge_Lagrange1_Gauss6 const * >(&input) )
{
lambda( *ptr2 );
lambda( *wrapper2->getImpl() );
}
else if( auto const * const ptr3 = dynamic_cast< H1_Tetrahedron_Lagrange1_Gauss1 const * >(&input) )
else if( auto const * const wrapper3 = dynamic_cast< H1_Tetrahedron_Lagrange1_Gauss1 const * >(&input) )
{
lambda( *ptr3 );
lambda( *wrapper3->getImpl() );
}
else if( auto const * const ptr4 = dynamic_cast< H1_Pyramid_Lagrange1_Gauss5 const * >(&input) )
else if( auto const * const wrapper4 = dynamic_cast< H1_Pyramid_Lagrange1_Gauss5 const * >(&input) )
{
lambda( *ptr4 );
lambda( *wrapper4->getImpl() );
}
else
{
Expand All @@ -233,6 +230,4 @@ dispatchlowOrder3D( FiniteElementBase const & input,

} // namespace geos



#endif /* GEOS_FINITEELEMENT_FINITEELEMENTDISPATCH_HPP_ */
Loading
Loading