The Fenics Solid Mech. application supports the associated von mises and Drucker Prager plasticity models with linear isotropic hardening by employing the closest point projection return mapping algorithm and Newton method.
As depicted in the provided quasi-static demo, for implementing a von Mises model, we just define:
// Object of class von Mises
auto J2 = std::make_shared<const fenicssolid::VonMises>(E, nu, yield_stress,
hardening_parameter);
and also define the input parameters, i.e., E, nu, yield_stress, and hardening_parameter as required by VonMises.cpp .
Would it therefore be correct to invoke the Drucker Prager.cpp by:
// Object of class Drucker Prager
auto DP = std::make_shared<const fenicssolid::DruckerPrager>(E, nu, friction_angle,
dilatancy_angle, cohesion, hardening_parameter);
and define the E, nu, cohesion, hardening_parameter, and (friction_angle = dilatancy_angle for associated flow) as the required input parameters by the DruckerPrager.cpp.
For any given problem and any given code, would the above be enough to change the plasticity model from vonMises to DP?