So now we have the capability to compute residual and jacobian together by setting residual_and_jacobian_together = true. However, only a few AD residual objects have provided implementations of computeResidualAndJacobian. The capability will also be useful for non-AD residual objects when the cost of residual computation approaches the cost of jacobian computation. That happens when the material evaluation is extremely expensive -- the idea is to evaluate the expensive material objects once for each residual + jacobian evaluation.
Design
Implement computeResidualAndJacobian for non-AD residual objects.
Impact
This will significantly speed up the simulations with expensive material models, such as crystal plasticity simulations.
Reason
So now we have the capability to compute residual and jacobian together by setting
residual_and_jacobian_together = true
. However, only a few AD residual objects have provided implementations ofcomputeResidualAndJacobian
. The capability will also be useful for non-AD residual objects when the cost of residual computation approaches the cost of jacobian computation. That happens when the material evaluation is extremely expensive -- the idea is to evaluate the expensive material objects once for each residual + jacobian evaluation.Design
Implement
computeResidualAndJacobian
for non-AD residual objects.Impact
This will significantly speed up the simulations with expensive material models, such as crystal plasticity simulations.
Tagging @lindsayad @sapitts