How about having a placeholder for a data value container in constitutive law and define a default behavior for GetValue() and SetValue() functions rather than leaving them virtual? Doesn't it help avoid duplication of code and repetitive calculation while defining the constitutive laws on custom applications side? This probably could save on computational time with some memory overhead.