Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: plastic strain output #3384

Open
wants to merge 59 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
d5de7f3
Update SolidMechanicsLagrangianFEM.cpp
ryar9534 Oct 3, 2024
662836f
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
df505c2
Update SolidMechanicsFields.hpp
ryar9534 Oct 3, 2024
3b0bd7b
Update SolidMechanicsLagrangianFEM.cpp
ryar9534 Oct 3, 2024
78e4db4
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
a23f26f
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
c2325c3
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
27a4801
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
18a94b2
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
c7e03b9
Update SolidMechanicsLagrangianFEM.cpp
ryar9534 Oct 3, 2024
2f4e691
Update SolidMechanicsLagrangianFEM.cpp
ryar9534 Oct 3, 2024
3cf18ca
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
4284d71
Update SolidMechanicsLagrangianFEM.cpp
ryar9534 Oct 3, 2024
cd42322
Update SolidMechanicsLagrangianFEM.cpp
ryar9534 Oct 3, 2024
6700051
Update SolidMechanicsLagrangianFEM.cpp
ryar9534 Oct 3, 2024
5c8f164
Update SolidMechanicsLagrangianFEM.cpp
ryar9534 Oct 3, 2024
7a51c30
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
ca89c99
Update StrainHelper.hpp
ryar9534 Oct 3, 2024
0e72772
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Oct 3, 2024
4f21e46
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Oct 7, 2024
cf6fe98
initial implementation, behavior is almost right but need to debug in…
ryar9534 Oct 11, 2024
8fda259
remove extraneous file
ryar9534 Oct 11, 2024
f5f1fa7
initial proposal for handling prescribed displacements and sign diffe…
ryar9534 Oct 15, 2024
d192712
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Nov 5, 2024
1de0c2c
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Nov 27, 2024
48db73d
simple method for handling BCs, may want to put in a disclaimer
ryar9534 Dec 4, 2024
583e7de
Update SolidMechanicsStateReset.cpp
ryar9534 Dec 5, 2024
e9bd953
Update StrainHelper.hpp
ryar9534 Dec 5, 2024
9abd3da
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Dec 5, 2024
25ddb6a
Update SolidMechanicsStateReset.cpp
ryar9534 Dec 5, 2024
ccc1b0d
uncrustify
ryar9534 Dec 5, 2024
913a1a0
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Dec 9, 2024
179e4fd
Apply suggestions from code review
ryar9534 Dec 11, 2024
834bba6
Apply suggestions from code review
ryar9534 Dec 11, 2024
3b9372e
Update ElasticIsotropicPressureDependent.hpp
ryar9534 Dec 11, 2024
136fe65
Update ElasticIsotropicPressureDependent.hpp
ryar9534 Dec 11, 2024
dbf7497
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Dec 11, 2024
246dbc8
Update ElasticIsotropicPressureDependent.hpp
ryar9534 Dec 11, 2024
bb4dfc8
uncrustify
ryar9534 Dec 11, 2024
ee9d389
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Dec 11, 2024
4e6c411
Update .integrated_tests.yaml
ryar9534 Dec 11, 2024
ce59c54
Update BASELINE_NOTES.md
ryar9534 Dec 11, 2024
beae829
add elastic strain functions to ElasticOrthotropic
ryar9534 Dec 13, 2024
a5164dc
Update ElasticOrthotropic.hpp
ryar9534 Dec 13, 2024
d403991
Add elastic strain functions to ElasticTransverseIsotropic
ryar9534 Dec 13, 2024
b04133d
Update .integrated_tests.yaml
ryar9534 Dec 16, 2024
d8a1680
uncrustify
ryar9534 Dec 16, 2024
bb8efc1
Merge branch 'develop' into feature/aronson/plasticStrainOutput
ryar9534 Dec 16, 2024
01cce1e
Update .integrated_tests.yaml
ryar9534 Dec 16, 2024
cfe31b2
Merge branch 'develop' into feature/aronson/plasticStrainOutput
rrsettgast Dec 16, 2024
caef37b
Update .integrated_tests.yaml
ryar9534 Dec 16, 2024
69ade8d
restructure elasticIsotropic
ryar9534 Dec 16, 2024
576e7bb
restructure elasticOrthotropic
ryar9534 Dec 16, 2024
54f91fc
restructure elasticTransverseIsotropic
ryar9534 Dec 16, 2024
93b5268
uncrustify
ryar9534 Dec 16, 2024
592b991
Update StrainHelper.hpp to output tensor strain not engineering
ryar9534 Dec 19, 2024
381d6ba
Merge branch 'develop' into feature/aronson/plasticStrainOutput
paveltomin Dec 19, 2024
2c13f68
Update .integrated_tests.yaml
ryar9534 Dec 20, 2024
74c7226
Merge branch 'develop' into feature/aronson/plasticStrainOutput
paveltomin Dec 20, 2024
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
22 changes: 22 additions & 0 deletions src/coreComponents/constitutive/solid/ElasticIsotropic.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@ class ElasticIsotropicUpdates : public SolidBaseUpdates
localIndex const q,
real64 ( &elasticStrain )[6] ) const override final;

GEOS_HOST_DEVICE
virtual void getElasticStrainInc( localIndex const k,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
virtual void getElasticStrainInc( localIndex const k,
virtual void calculateElasticStrainInc( localIndex const k,

Since this isn't really a "getter"

localIndex const q,
real64 ( &elasticStrainInc )[6] ) const override final;

GEOS_HOST_DEVICE
virtual real64 getBulkModulus( localIndex const k ) const override final
{
Expand Down Expand Up @@ -228,6 +233,23 @@ void ElasticIsotropicUpdates::getElasticStrain( localIndex const k,
elasticStrain[5] = m_newStress[k][q][5] / m_shearModulus[k];
}

GEOS_HOST_DEVICE
inline
void ElasticIsotropicUpdates::getElasticStrainInc( localIndex const k,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
void ElasticIsotropicUpdates::getElasticStrainInc( localIndex const k,
void ElasticIsotropicUpdates::calculateElasticStrainInc( localIndex const k,

localIndex const q,
real64 ( & elasticStrainInc)[6] ) const
{
real64 const E = conversions::bulkModAndShearMod::toYoungMod( m_bulkModulus[k], m_shearModulus[k] );
real64 const nu = conversions::bulkModAndShearMod::toPoissonRatio( m_bulkModulus[k], m_shearModulus[k] );

elasticStrainInc[0] = ( (m_newStress[k][q][0] - m_oldStress[k][q][0]) - nu*(m_newStress[k][q][1] - m_oldStress[k][q][1]) - nu*(m_newStress[k][q][2] - m_oldStress[k][q][2]))/E;
elasticStrainInc[1] = (-nu*(m_newStress[k][q][0] - m_oldStress[k][q][0]) + (m_newStress[k][q][1] - m_oldStress[k][q][1]) - nu*(m_newStress[k][q][2] - m_oldStress[k][q][2]))/E;
elasticStrainInc[2] = (-nu*(m_newStress[k][q][0] - m_oldStress[k][q][0]) - nu*(m_newStress[k][q][1] - m_oldStress[k][q][1]) + (m_newStress[k][q][2] - m_oldStress[k][q][2]))/E;

elasticStrainInc[3] = (m_newStress[k][q][3] - m_oldStress[k][q][3]) / m_shearModulus[k];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the formula for engineering shear strain, which should be twice as that of tensorial shear strain.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, but I think that's what it should be because we are subtracting it from the totalStrain which is in engineering notation. What we may want to do is divide the shear components of the plasticStrian by 2 so that it is the actual strain. I don't know if Paraview expects it in engineering notation though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

was this question resolved? ChatGPT says paraview expects tensorial strain...but I think it came to that conclusion because it calculates tensorial strain.

elasticStrainInc[4] = (m_newStress[k][q][4] - m_oldStress[k][q][4]) / m_shearModulus[k];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above

elasticStrainInc[5] = (m_newStress[k][q][5] - m_oldStress[k][q][5]) / m_shearModulus[k];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above

}

GEOS_HOST_DEVICE
inline
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,11 @@ class ElasticIsotropicPressureDependentUpdates : public SolidBaseUpdates
localIndex const q,
real64 ( &elasticStrain )[6] ) const override final;

GEOS_HOST_DEVICE
virtual void getElasticStrainInc( localIndex const k,
localIndex const q,
real64 ( &elasticStrainInc )[6] ) const override final;

GEOS_HOST_DEVICE
virtual void viscousStateUpdate( localIndex const k,
localIndex const q,
Expand Down Expand Up @@ -223,6 +228,67 @@ void ElasticIsotropicPressureDependentUpdates::getElasticStrain( localIndex cons
}


GEOS_HOST_DEVICE
inline
void ElasticIsotropicPressureDependentUpdates::getElasticStrainInc( localIndex const k,
localIndex const q,
real64 ( & elasticStrainInc)[6] ) const
{
real64 const mu = m_shearModulus[k];
real64 const p0 = m_refPressure;
real64 const eps_v0 = m_refStrainVol;
real64 const Cr = m_recompressionIndex[k];
real64 deviator[6];
real64 stress[6];
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved
real64 P;
real64 Q;
real64 elasticStrainVol;
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved
real64 elasticStrainDev;
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved

for( localIndex i=0; i<6; ++i )
{
stress[i] = m_newStress[k][q][i];
}

twoInvariant::stressDecomposition( stress,
P,
Q,
deviator );

elasticStrainVol = std::log( P/p0 ) * Cr * (-1.0) + eps_v0;
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved
elasticStrainDev = Q/3./mu;
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved

twoInvariant::strainRecomposition( elasticStrainVol,
elasticStrainDev,
deviator,
elasticStrainInc );

real64 oldStrain[6];
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved
for( localIndex i=0; i<6; ++i )
{
stress[i] = m_oldStress[k][q][i];
}
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved

twoInvariant::stressDecomposition( stress,
P,
Q,
deviator );

elasticStrainVol = std::log( P/p0 ) * Cr * (-1.0) + eps_v0;
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved
elasticStrainDev = Q/3./mu;
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved

twoInvariant::strainRecomposition( elasticStrainVol,
elasticStrainDev,
deviator,
oldStrain );

for (localIndex i = 0; i<6; ++i)
{
elasticStrainInc[i] -= oldStrain[i];
}
}


GEOS_HOST_DEVICE
inline
void ElasticIsotropicPressureDependentUpdates::smallStrainUpdate( localIndex const k,
Expand Down
18 changes: 18 additions & 0 deletions src/coreComponents/constitutive/solid/SolidBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,24 @@ class SolidBaseUpdates
GEOS_ERROR( "getElasticStrain() not implemented for this model" );
}

/**
* @brief Return the current elastic strain increment at a given material point (small-strain interface)
*
* @param k the element inex
* @param q the quadrature index
* @param elasticStrainInc Current elastic strain increment
*/
GEOS_HOST_DEVICE
virtual void getElasticStrainInc( localIndex const k,
localIndex const q,
real64 ( & elasticStrainInc )[6] ) const
{
GEOS_UNUSED_VAR( k );
GEOS_UNUSED_VAR( q );
GEOS_UNUSED_VAR( elasticStrainInc );
GEOS_ERROR( "getElasticStrainInc() not implemented for this model (called when computing plastic strains)" );
ryar9534 marked this conversation as resolved.
Show resolved Hide resolved
}

/**
* @brief Perform a viscous (rate-dependent) state update
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,14 @@ DECLARE_FIELD( strain,
WRITE_AND_READ,
"Average strain in cell" );

DECLARE_FIELD( plasticStrain,
"plasticStrain",
array2dLayoutStrain,
0,
LEVEL_0,
WRITE_AND_READ,
"Average plastic strain in cell" );

DECLARE_FIELD( incrementalBubbleDisplacement,
"incrementalBubbleDisplacement",
array2d< real64 >,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,8 @@ void SolidMechanicsLagrangianFEM::registerDataOnMesh( Group & meshBodies )
setConstitutiveNamesCallSuper( subRegion );

subRegion.registerField< solidMechanics::strain >( getName() ).setDimLabels( 1, voightLabels ).reference().resizeDimension< 1 >( 6 );
subRegion.registerField< solidMechanics::plasticStrain >( getName() ).setDimLabels( 1, voightLabels ).reference().resizeDimension< 1 >( 6 );

} );

NodeManager & nodes = meshLevel.getNodeManager();
Expand Down Expand Up @@ -454,6 +456,7 @@ void SolidMechanicsLagrangianFEM::initializePostInitialConditionsPreSubGroups()
m_targetNodes.insert( m_nonSendOrReceiveNodes.begin(),
m_nonSendOrReceiveNodes.end() );


} );
} );

Expand Down Expand Up @@ -944,24 +947,37 @@ void SolidMechanicsLagrangianFEM::implicitStepComplete( real64 const & GEOS_UNUS
{
string const & solidMaterialName = subRegion.template getReference< string >( viewKeyStruct::solidMaterialNamesString() );
SolidBase & constitutiveRelation = getConstitutiveModel< SolidBase >( subRegion, solidMaterialName );
constitutiveRelation.saveConvergedState();


solidMechanics::arrayView2dLayoutStrain strain = subRegion.getField< solidMechanics::strain >();
solidMechanics::arrayView2dLayoutStrain plasticStrain = subRegion.getField< solidMechanics::plasticStrain >();

constitutive::ConstitutivePassThru< SolidBase >::execute(constitutiveRelation, [&] (auto & solidModel)
{

using SOLID_TYPE = TYPEOFREF( solidModel );

finiteElement::FiniteElementBase & subRegionFE = subRegion.template getReference< finiteElement::FiniteElementBase >( this->getDiscretizationName());
finiteElement::FiniteElementDispatchHandler< BASE_FE_TYPES >::dispatch3D( subRegionFE, [&] ( auto const finiteElement )
{
using FE_TYPE = decltype( finiteElement );
AverageStrainOverQuadraturePointsKernelFactory::createAndLaunch< CellElementSubRegion, FE_TYPE, parallelDevicePolicy<> >( nodeManager,
AverageStrainOverQuadraturePointsKernelFactory::createAndLaunch< FE_TYPE, SOLID_TYPE, parallelDevicePolicy<> >( nodeManager,
mesh.getEdgeManager(),
mesh.getFaceManager(),
subRegion,
finiteElement,
solidModel,
disp,
strain );
uhat,
strain,
plasticStrain );
} );


} );

constitutiveRelation.saveConvergedState();

} );
} );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "common/DataTypes.hpp"
#include "common/GEOS_RAJA_Interface.hpp"
#include "finiteElement/FiniteElementDispatch.hpp"
#include "constitutive/ConstitutivePassThru.hpp"
#include "mesh/CellElementSubRegion.hpp"
#include "mesh/utilities/AverageOverQuadraturePointsKernel.hpp"
#include "physicsSolvers/solidMechanics/SolidMechanicsFields.hpp"
Expand All @@ -33,17 +34,18 @@ namespace geos
* @class AverageStrainOverQuadraturePoints
* @tparam SUBREGION_TYPE the subRegion type
* @tparam FE_TYPE the finite element type
* @tparam SOLID_TYPE the solid mechanics constitutuve type
*/
template< typename SUBREGION_TYPE,
typename FE_TYPE >
template< typename FE_TYPE,
typename SOLID_TYPE >
class AverageStrainOverQuadraturePoints :
public AverageOverQuadraturePointsBase< SUBREGION_TYPE,
public AverageOverQuadraturePointsBase< CellElementSubRegion,
FE_TYPE >
{
public:

/// Alias for the base class;
using Base = AverageOverQuadraturePointsBase< SUBREGION_TYPE,
using Base = AverageOverQuadraturePointsBase< CellElementSubRegion,
FE_TYPE >;

using Base::m_elementVolume;
Expand All @@ -63,24 +65,31 @@ class AverageStrainOverQuadraturePoints :
AverageStrainOverQuadraturePoints( NodeManager & nodeManager,
EdgeManager const & edgeManager,
FaceManager const & faceManager,
SUBREGION_TYPE const & elementSubRegion,
CellElementSubRegion const & elementSubRegion,
FE_TYPE const & finiteElementSpace,
SOLID_TYPE const & solidModel,
fields::solidMechanics::arrayViewConst2dLayoutTotalDisplacement const displacement,
fields::solidMechanics::arrayView2dLayoutStrain const avgStrain ):
fields::solidMechanics::arrayViewConst2dLayoutIncrDisplacement const displacementInc,
fields::solidMechanics::arrayView2dLayoutStrain const avgStrain,
fields::solidMechanics::arrayView2dLayoutStrain const avgPlasticStrain):
Base( nodeManager,
edgeManager,
faceManager,
elementSubRegion,
finiteElementSpace ),
m_solidUpdate(solidModel.createKernelUpdates()),
m_displacement( displacement ),
m_avgStrain( avgStrain )
m_displacementInc( displacementInc ),
m_avgStrain( avgStrain ),
m_avgPlasticStrain( avgPlasticStrain )
{}

/**
* @copydoc finiteElement::KernelBase::StackVariables
*/
struct StackVariables : Base::StackVariables
{real64 uLocal[FE_TYPE::maxSupportPoints][3]; };
{real64 uLocal[FE_TYPE::maxSupportPoints][3];
real64 uHatLocal[FE_TYPE::maxSupportPoints][3]; };

/**
* @brief Performs the setup phase for the kernel.
Expand All @@ -99,12 +108,14 @@ class AverageStrainOverQuadraturePoints :
for( int i = 0; i < 3; ++i )
{
stack.uLocal[a][i] = m_displacement[localNodeIndex][i];
stack.uHatLocal[a][i] = m_displacementInc[localNodeIndex][i];
}
}

for( int icomp = 0; icomp < 6; ++icomp )
{
m_avgStrain[k][icomp] = 0.0;
//m_avgPlasticStrain[k][icomp] = 0.0;
}
}

Expand All @@ -124,11 +135,18 @@ class AverageStrainOverQuadraturePoints :
real64 dNdX[ FE_TYPE::maxSupportPoints ][3];
real64 const detJxW = m_finiteElementSpace.template getGradN< FE_TYPE >( k, q, stack.xLocal, stack.feStack, dNdX );
real64 strain[6] = {0.0};
real64 strainInc[6] = {0.0};
FE_TYPE::symmetricGradient( dNdX, stack.uLocal, strain );
FE_TYPE::symmetricGradient( dNdX, stack.uHatLocal, strainInc );

real64 elasticStrainInc[6] = {0.0};
m_solidUpdate.getElasticStrainInc(k, q, elasticStrainInc);

for( int icomp = 0; icomp < 6; ++icomp )
{
m_avgStrain[k][icomp] += detJxW*strain[icomp]/m_elementVolume[k];
m_avgPlasticStrain[k][icomp] += detJxW*(strainInc[icomp] - elasticStrainInc[icomp])/m_elementVolume[k];
//m_avgPlasticStrain[k][icomp] += detJxW*(elasticStrainInc[icomp])/m_elementVolume[k];
}
}

Expand Down Expand Up @@ -160,12 +178,21 @@ class AverageStrainOverQuadraturePoints :

protected:

/// The material
typename SOLID_TYPE::KernelWrapper const m_solidUpdate;

/// The displacement solution
fields::solidMechanics::arrayViewConst2dLayoutTotalDisplacement const m_displacement;

/// The displacement increment
fields::solidMechanics::arrayViewConst2dLayoutIncrDisplacement const m_displacementInc;

/// The average strain
fields::solidMechanics::arrayView2dLayoutStrain const m_avgStrain;

/// The average plastic strain
fields::solidMechanics::arrayView2dLayoutStrain const m_avgPlasticStrain;

};


Expand All @@ -182,6 +209,7 @@ class AverageStrainOverQuadraturePointsKernelFactory
* @brief Create a new kernel and launch
* @tparam SUBREGION_TYPE the subRegion type
* @tparam FE_TYPE the finite element type
* @tparam SOLID_TYPE the constitutive type
* @tparam POLICY the kernel policy
* @param nodeManager the node manager
* @param edgeManager the edge manager
Expand All @@ -191,23 +219,26 @@ class AverageStrainOverQuadraturePointsKernelFactory
* @param property the property at quadrature points
* @param averageProperty the property averaged over quadrature points
*/
template< typename SUBREGION_TYPE,
typename FE_TYPE,
template< typename FE_TYPE,
typename SOLID_TYPE,
typename POLICY >
static void
createAndLaunch( NodeManager & nodeManager,
EdgeManager const & edgeManager,
FaceManager const & faceManager,
SUBREGION_TYPE const & elementSubRegion,
CellElementSubRegion const & elementSubRegion,
FE_TYPE const & finiteElementSpace,
SOLID_TYPE const & solidModel,
fields::solidMechanics::arrayViewConst2dLayoutTotalDisplacement const displacement,
fields::solidMechanics::arrayView2dLayoutStrain const avgStrain )
fields::solidMechanics::arrayViewConst2dLayoutIncrDisplacement const displacementInc,
fields::solidMechanics::arrayView2dLayoutStrain const avgStrain,
fields::solidMechanics::arrayView2dLayoutStrain const avgPlasticStrain)
{
AverageStrainOverQuadraturePoints< SUBREGION_TYPE, FE_TYPE >
AverageStrainOverQuadraturePoints< FE_TYPE, SOLID_TYPE >
kernel( nodeManager, edgeManager, faceManager, elementSubRegion, finiteElementSpace,
displacement, avgStrain );
solidModel, displacement, displacementInc, avgStrain, avgPlasticStrain );

AverageStrainOverQuadraturePoints< SUBREGION_TYPE, FE_TYPE >::template
AverageStrainOverQuadraturePoints< FE_TYPE, SOLID_TYPE >::template
kernelLaunch< POLICY >( elementSubRegion.size(), kernel );
}
};
Expand Down
Loading