When the ApplyK0ProcedureProcess creates the $K_0$ vector and property K0_NC has not been provided, it will look for the friction angle $\phi$ by means of the UMAT_PARAMETERS array (also using INDEX_OF_UMAT_PHI_PARAMETER), see line 215 of apply_k0_procedure_process.cpp. However, the friction angle may also be provided through property GEO_FRICTION_ANGLE. At present, that is not reflected by the test (which only checks for the UMAT parameters), but it is accounted for by the corresponding getter (ConstitutiveLawUtilities::GetFrictionAngleInRadians).
To overcome this problem, we may add a new utility function (e.g. ConstitutiveLawUtilities::HasFrictionAngle) that does the proper check, and which should be used in conjunction with ConstitutiveLawUtilities::GetFrictionAngleInRadians. Needless to say, this new utility function needs to be unit-tested.
Also, we should add a unit test for the ApplyK0ProcedureProcess that demonstrates this additional optional input works as expected. The documentation of the $K_0$ procedure process (see custom_processes/README.md) needs to be updated as well.
(This issue was raised here.)
*** 08-04-2026 @WPK4FEM wrote: ***
The constitutive law utilities now exist, the calling of them in ApplyK0ProcedureProcess::CheckPhi, ApplyK0ProcedureProcess::CheckSufficientMaterialParameters and ApplyK0ProcedureProcess::CreateK0Vector is not there yet.
When the$K_0$ vector and property $\phi$ by means of the
ApplyK0ProcedureProcesscreates theK0_NChas not been provided, it will look for the friction angleUMAT_PARAMETERSarray (also usingINDEX_OF_UMAT_PHI_PARAMETER), see line 215 ofapply_k0_procedure_process.cpp. However, the friction angle may also be provided through propertyGEO_FRICTION_ANGLE. At present, that is not reflected by the test (which only checks for the UMAT parameters), but it is accounted for by the corresponding getter (ConstitutiveLawUtilities::GetFrictionAngleInRadians).To overcome this problem, we may add a new utility function (e.g.
ConstitutiveLawUtilities::HasFrictionAngle) that does the proper check, and which should be used in conjunction withConstitutiveLawUtilities::GetFrictionAngleInRadians. Needless to say, this new utility function needs to be unit-tested.Also, we should add a unit test for the$K_0$ procedure process (see
ApplyK0ProcedureProcessthat demonstrates this additional optional input works as expected. The documentation of thecustom_processes/README.md) needs to be updated as well.(This issue was raised here.)
*** 08-04-2026 @WPK4FEM wrote: ***
The constitutive law utilities now exist, the calling of them in ApplyK0ProcedureProcess::CheckPhi, ApplyK0ProcedureProcess::CheckSufficientMaterialParameters and ApplyK0ProcedureProcess::CreateK0Vector is not there yet.