Well, you have only declared some variables, but you never write any values to any of them.
When it comes to material status it's done in a few stages:
1. When the stress is evaluated (for some guess in the Newton-iterations) then the material model makes sure to store whatever state it needs for later in the material status. Typically the plastic strain. This is stored in a "temp" value, as we do not know if this is the final Newton-iteration.
2. When convergence (in the FE analysis) is obtained, the "updateYourself" function is called, and the material status should take care to overload whatever temporary status is stores into a equilibrated state. It typically looks like
this->plasticStrain = this->tempPlasticStrain;
so that the temp values can safely be overwritten during the newton-iterations, while preserving the old equilibrated values.
3. When the tangent is requested, or some export module is used, then the material uses whatever it needs from the material status. "printOutput" is done after "updateYourself" for each time step.
Some things are cached as temporary variables, but are never stored as equilibrated values. This is typically if they are only needed to compute the tangent.
There is a rather minimal tutorial model, aptly named "tutorialmaterial.C", which is a minimal (but nontrivial) model which illustrates all of these concepts.
A few comments on C++. Inheritance we use mostly for extending common base classes.
If I make a new class that extends the base class, I overload whatever methods I'd like to change, and, in many cases, call the base class method
void
IsotropicDamageMaterialStatus :: printOutputAt(FILE *file, TimeStep *tStep)
{
StructuralMaterialStatus :: printOutputAt(file, tStep); // This call the super-class
// Here I can print additional things that i want, that is only applicable to my class.
}
You could do the same in MazarsMaterial. For debugging purposes, you are of course free to hack around in the code in whatever way you want, but in order to accept any additions, I'd probably like to see "gt" "gc" "alpha_t" and "alpha_c" added to MazarsMaterialStatus instead of it's super-super-class "IsotropicDamageMaterialStatus"
(if gt, gc, alpha_t, and alpha_c are sensible to add for all isotropic damage materials, then please adding them to the base class is of course fine).