From fe8aacbe63694d34a2e997ae82f39f19962f747c Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Fri, 3 Jul 2026 13:18:40 +0900 Subject: [PATCH 1/3] add instanciations and registration for nodalmass density (explicit double and float) --- .../Mass/src/sofa/component/mass/NodalMassDensity.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Sofa/Component/Mass/src/sofa/component/mass/NodalMassDensity.cpp b/Sofa/Component/Mass/src/sofa/component/mass/NodalMassDensity.cpp index cb5f531971c..5697e159e75 100644 --- a/Sofa/Component/Mass/src/sofa/component/mass/NodalMassDensity.cpp +++ b/Sofa/Component/Mass/src/sofa/component/mass/NodalMassDensity.cpp @@ -25,12 +25,14 @@ namespace sofa::component::mass { -template class SOFA_COMPONENT_MASS_API NodalMassDensity; +template class SOFA_COMPONENT_MASS_API NodalMassDensity; +template class SOFA_COMPONENT_MASS_API NodalMassDensity; void registerNodalMassDensity(sofa::core::ObjectFactory* factory) { factory->registerObjects(core::ObjectRegistrationData("Definition of a nodal mass density (one value per dof).") - .add< NodalMassDensity >() + .add< NodalMassDensity >() + .add< NodalMassDensity >() ); } From 1d175db32ef0f7416f70c7b304265a783582ab9f Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Fri, 3 Jul 2026 13:45:47 +0900 Subject: [PATCH 2/3] SofaCUDA: add instanciations and registrations for FEMMass --- .../plugins/SofaCUDA/Component/CMakeLists.txt | 4 +- .../Component/src/SofaCUDA/component/init.cpp | 2 + .../SofaCUDA/component/mass/CudaFEMMass.cpp | 85 +++++++++++++++++++ .../src/SofaCUDA/component/mass/CudaFEMMass.h | 52 ++++++++++++ 4 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/mass/CudaFEMMass.cpp create mode 100644 applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/mass/CudaFEMMass.h diff --git a/applications/plugins/SofaCUDA/Component/CMakeLists.txt b/applications/plugins/SofaCUDA/Component/CMakeLists.txt index effab0275a9..e30a18bc29d 100644 --- a/applications/plugins/SofaCUDA/Component/CMakeLists.txt +++ b/applications/plugins/SofaCUDA/Component/CMakeLists.txt @@ -36,7 +36,8 @@ set(HEADER_FILES ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/mass/CudaMeshMatrixMass.inl ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/mass/CudaUniformMass.h ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/mass/CudaUniformMass.inl - + ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/mass/CudaFEMMass.h + ### solidmechanics ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/solidmechanics/fem/elastic/CudaFEMKernelUtils.cuh @@ -114,6 +115,7 @@ set(SOURCE_FILES ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/mass/CudaDiagonalMass.cpp ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/mass/CudaMeshMatrixMass.cpp ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/mass/CudaUniformMass.cpp + ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/mass/CudaFEMMass.cpp ### Solidmechanics ${SOFACUDA_COMPONENT_SOURCE_DIR}/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cpp diff --git a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/init.cpp b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/init.cpp index 968cd603fb6..794b720ae7f 100644 --- a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/init.cpp +++ b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/init.cpp @@ -81,6 +81,7 @@ extern void registerRigidMapping(sofa::core::ObjectFactory* factory); extern void registerDiagonalMass(sofa::core::ObjectFactory* factory); extern void registerMeshMatrixMass(sofa::core::ObjectFactory* factory); extern void registerUniformMass(sofa::core::ObjectFactory* factory); +extern void registerFEMMass(sofa::core::ObjectFactory* factory); // component::mechanicalload extern void registerConstantForceField(sofa::core::ObjectFactory* factory); @@ -221,6 +222,7 @@ void registerObjects(sofa::core::ObjectFactory* factory) registerDiagonalMass(factory); registerMeshMatrixMass(factory); registerUniformMass(factory); + registerFEMMass(factory); registerConstantForceField(factory); registerEllipsoidForceField(factory); registerLinearForceField(factory); diff --git a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/mass/CudaFEMMass.cpp b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/mass/CudaFEMMass.cpp new file mode 100644 index 00000000000..71487b3f72d --- /dev/null +++ b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/mass/CudaFEMMass.cpp @@ -0,0 +1,85 @@ +/****************************************************************************** +* SOFA, Simulation Open-Framework Architecture * +* (c) 2006 INRIA, USTL, UJF, CNRS, MGH * +* * +* This program is free software; you can redistribute it and/or modify it * +* under the terms of the GNU Lesser General Public License as published by * +* the Free Software Foundation; either version 2.1 of the License, or (at * +* your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, but WITHOUT * +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * +* for more details. * +* * +* You should have received a copy of the GNU Lesser General Public License * +* along with this program. If not, see . * +******************************************************************************* +* Authors: The SOFA Team and external contributors (see Authors.txt) * +* * +* Contact information: contact@sofa-framework.org * +******************************************************************************/ +#define SOFA_GPU_CUDA_CUDAFEMMASS_CPP + +#include + +#include +#include +#include +#include +#include +#include + +namespace sofa::component::mass +{ + +using namespace sofa::gpu::cuda; + +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; + +#ifdef SOFA_GPU_CUDA_DOUBLE +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +template class SOFACUDA_COMPONENT_API FEMMass; +#endif + +} // namespace sofa::component::mass + +namespace sofa::gpu::cuda +{ + +void registerFEMMass(sofa::core::ObjectFactory* factory) +{ + using namespace sofa::component::mass; + + factory->registerObjects(sofa::core::ObjectRegistrationData("Supports GPU-side computations using CUDA for FEMMass") + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() +#ifdef SOFA_GPU_CUDA_DOUBLE + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() + .add< FEMMass >() +#endif + ); +} + +} // namespace sofa::gpu::cuda diff --git a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/mass/CudaFEMMass.h b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/mass/CudaFEMMass.h new file mode 100644 index 00000000000..bb847a6f167 --- /dev/null +++ b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/mass/CudaFEMMass.h @@ -0,0 +1,52 @@ +/****************************************************************************** +* SOFA, Simulation Open-Framework Architecture * +* (c) 2006 INRIA, USTL, UJF, CNRS, MGH * +* * +* This program is free software; you can redistribute it and/or modify it * +* under the terms of the GNU Lesser General Public License as published by * +* the Free Software Foundation; either version 2.1 of the License, or (at * +* your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, but WITHOUT * +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * +* for more details. * +* * +* You should have received a copy of the GNU Lesser General Public License * +* along with this program. If not, see . * +******************************************************************************* +* Authors: The SOFA Team and external contributors (see Authors.txt) * +* * +* Contact information: contact@sofa-framework.org * +******************************************************************************/ +#pragma once + +#include + +#include +#include + +namespace sofa::component::mass +{ + +#ifndef SOFA_GPU_CUDA_CUDAFEMMASS_CPP +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; + +#ifdef SOFA_GPU_CUDA_DOUBLE +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +extern template class SOFACUDA_COMPONENT_API FEMMass; +#endif +#endif + +} // namespace sofa::component::mass From 3e86897733f83ae6e9e698401aa7e7f19615429c Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Fri, 3 Jul 2026 10:27:42 +0900 Subject: [PATCH 3/3] SofaCUDA: add support for pyramid and prism --- .../elastic/CudaCorotationalFEMForceField.cpp | 40 ++++----------- .../elastic/CudaCorotationalFEMForceField.cu | 8 +++ .../CudaLinearSmallStrainFEMForceField.cpp | 40 ++++----------- .../CudaLinearSmallStrainFEMForceField.cu | 4 ++ .../CudaCorotationalFEMForceField_prism.scn | 43 ++++++++++++++++ .../CudaCorotationalFEMForceField_pyramid.scn | 50 +++++++++++++++++++ ...daLinearSmallStrainFEMForceField_prism.scn | 43 ++++++++++++++++ ...LinearSmallStrainFEMForceField_pyramid.scn | 50 +++++++++++++++++++ 8 files changed, 218 insertions(+), 60 deletions(-) create mode 100644 applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaCorotationalFEMForceField_prism.scn create mode 100644 applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaCorotationalFEMForceField_pyramid.scn create mode 100644 applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaLinearSmallStrainFEMForceField_prism.scn create mode 100644 applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaLinearSmallStrainFEMForceField_pyramid.scn diff --git a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cpp b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cpp index ca58990357d..ce190709333 100644 --- a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cpp +++ b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cpp @@ -35,6 +35,8 @@ template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; +template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; +template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; #ifdef SOFA_GPU_CUDA_DOUBLE template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; @@ -42,6 +44,8 @@ template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; +template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; +template class SOFACUDA_COMPONENT_API CudaCorotationalFEMForceField; #endif } // namespace sofa::component::solidmechanics::fem::elastic @@ -54,48 +58,24 @@ void registerCorotationalFEMForceField(sofa::core::ObjectFactory* factory) using namespace sofa::component::solidmechanics::fem::elastic; factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for EdgeCorotationalFEMForceField") + "Supports GPU-side computations using CUDA for CorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for TriangleCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for QuadCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for TetrahedronCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for HexahedronCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - + .add< CudaCorotationalFEMForceField >() + .add< CudaCorotationalFEMForceField >() #ifdef SOFA_GPU_CUDA_DOUBLE - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for EdgeCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for TriangleCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for QuadCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for TetrahedronCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for HexahedronCorotationalFEMForceField") .add< CudaCorotationalFEMForceField >() - ); + .add< CudaCorotationalFEMForceField >() + .add< CudaCorotationalFEMForceField >() #endif + ); } } // namespace sofa::gpu::cuda diff --git a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cu b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cu index a34a75c7646..3b0a486ecc1 100644 --- a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cu +++ b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaCorotationalFEMForceField.cu @@ -315,17 +315,25 @@ void CorotationalFEMForceFieldCuda_addDForce( INSTANTIATE_COROTATIONAL(float, 2) INSTANTIATE_COROTATIONAL(float, 3) INSTANTIATE_COROTATIONAL(float, 4) +INSTANTIATE_COROTATIONAL(float, 5) // Pyramid +INSTANTIATE_COROTATIONAL(float, 6) // Prism INSTANTIATE_COROTATIONAL(float, 8) INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(float, 3) INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(float, 4) +INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(float, 5) // Pyramid +INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(float, 6) // Prism INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(float, 8) INSTANTIATE_COROTATIONAL(double, 2) INSTANTIATE_COROTATIONAL(double, 3) INSTANTIATE_COROTATIONAL(double, 4) +INSTANTIATE_COROTATIONAL(double, 5) // Pyramid +INSTANTIATE_COROTATIONAL(double, 6) // Prism INSTANTIATE_COROTATIONAL(double, 8) INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(double, 3) INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(double, 4) +INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(double, 5) // Pyramid +INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(double, 6) // Prism INSTANTIATE_COROTATIONAL_WITH_ROTATIONS(double, 8) #undef INSTANTIATE_COROTATIONAL diff --git a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaLinearSmallStrainFEMForceField.cpp b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaLinearSmallStrainFEMForceField.cpp index 0c624c5b03e..83c0c67d5e5 100644 --- a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaLinearSmallStrainFEMForceField.cpp +++ b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaLinearSmallStrainFEMForceField.cpp @@ -35,6 +35,8 @@ template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; +template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; +template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; #ifdef SOFA_GPU_CUDA_DOUBLE template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; @@ -42,6 +44,8 @@ template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; +template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; +template class SOFACUDA_COMPONENT_API CudaLinearSmallStrainFEMForceField; #endif } // namespace sofa::component::solidmechanics::fem::elastic @@ -54,48 +58,24 @@ void registerLinearSmallStrainFEMForceField(sofa::core::ObjectFactory* factory) using namespace sofa::component::solidmechanics::fem::elastic; factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for EdgeLinearSmallStrainFEMForceField") + "Supports GPU-side computations using CUDA for LinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for TriangleLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for QuadLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for TetrahedronLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA for HexahedronLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - + .add< CudaLinearSmallStrainFEMForceField >() + .add< CudaLinearSmallStrainFEMForceField >() #ifdef SOFA_GPU_CUDA_DOUBLE - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for EdgeLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for TriangleLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for QuadLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for TetrahedronLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); - factory->registerObjects(sofa::core::ObjectRegistrationData( - "Supports GPU-side computations using CUDA (double) for HexahedronLinearSmallStrainFEMForceField") .add< CudaLinearSmallStrainFEMForceField >() - ); + .add< CudaLinearSmallStrainFEMForceField >() + .add< CudaLinearSmallStrainFEMForceField >() #endif + ); } } // namespace sofa::gpu::cuda diff --git a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaLinearSmallStrainFEMForceField.cu b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaLinearSmallStrainFEMForceField.cu index e625c701d49..c4d645838e5 100644 --- a/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaLinearSmallStrainFEMForceField.cu +++ b/applications/plugins/SofaCUDA/Component/src/SofaCUDA/component/solidmechanics/fem/elastic/CudaLinearSmallStrainFEMForceField.cu @@ -177,11 +177,15 @@ void LinearSmallStrainFEMForceFieldCuda_addDForce( INSTANTIATE_LINEAR(float, 2) INSTANTIATE_LINEAR(float, 3) INSTANTIATE_LINEAR(float, 4) +INSTANTIATE_LINEAR(float, 5) // Pyramid +INSTANTIATE_LINEAR(float, 6) // Prism INSTANTIATE_LINEAR(float, 8) INSTANTIATE_LINEAR(double, 2) INSTANTIATE_LINEAR(double, 3) INSTANTIATE_LINEAR(double, 4) +INSTANTIATE_LINEAR(double, 5) // Pyramid +INSTANTIATE_LINEAR(double, 6) // Prism INSTANTIATE_LINEAR(double, 8) #undef INSTANTIATE_LINEAR diff --git a/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaCorotationalFEMForceField_prism.scn b/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaCorotationalFEMForceField_prism.scn new file mode 100644 index 00000000000..0d6c13dad2e --- /dev/null +++ b/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaCorotationalFEMForceField_prism.scn @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaCorotationalFEMForceField_pyramid.scn b/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaCorotationalFEMForceField_pyramid.scn new file mode 100644 index 00000000000..7733aa92c89 --- /dev/null +++ b/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaCorotationalFEMForceField_pyramid.scn @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaLinearSmallStrainFEMForceField_prism.scn b/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaLinearSmallStrainFEMForceField_prism.scn new file mode 100644 index 00000000000..e7e30a3f603 --- /dev/null +++ b/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaLinearSmallStrainFEMForceField_prism.scn @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaLinearSmallStrainFEMForceField_pyramid.scn b/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaLinearSmallStrainFEMForceField_pyramid.scn new file mode 100644 index 00000000000..85b53b7e588 --- /dev/null +++ b/applications/plugins/SofaCUDA/examples/ElementFEMForcefield/CudaLinearSmallStrainFEMForceField_pyramid.scn @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +