Re: [petsc-dev] TSComputeRHSJacobian
Example that demonstrates the current code is problematic in some cases?
On Aug 28, 2017, at 11:59 AM, Stefano Zampini <[email protected]> wrote:
I was wondering if the following code in TSComputeRHSJacobian is correct when the user pass the reuse flag via TSRHSJacobianReuse
if (ts->rhsjacobian.time == t && (ts->problem_type == TS_LINEAR || (ts->rhsjacobian.Xid == Uid && ts->rhsjacobian.Xstate == Ustate)) && (rhsfunction != TSComputeRHSFunctionLinear)) { PetscFunctionReturn(0); }
Should the above code be replaced by the following?
if (ts->rhsjacobian.time == t && (ts->problem_type == TS_LINEAR || (ts->rhsjacobian.Xid == Uid && ts->rhsjacobian.Xstate == Ustate)) && (rhsfunction != TSComputeRHSFunctionLinear)) { if (ts->rhsjacobian.reuse) { ierr = MatShift(A,-ts->rhsjacobian.shift);CHKERRQ(ierr); ierr = MatScale(A,1./ts->rhsjacobian.scale);CHKERRQ(ierr); if (B && A != B) { ierr = MatShift(B,-ts->rhsjacobian.shift);CHKERRQ(ierr); ierr = MatScale(B,1./ts->rhsjacobian.scale);CHKERRQ(ierr); } ts->rhsjacobian.shift = 0; ts->rhsjacobian.scale = 1.; } PetscFunctionReturn(0); }
-- Stefano
participants (1)
-
Barry Smith