static PetscErrorCode QPStepLength(TAO_BQPIP *qp) { PetscReal tstep1,tstep2,tstep3,tstep4,tstep; PetscErrorCode ierr; PetscFunctionBegin; /* Compute stepsize to the boundary */ ierr = VecStepMax(qp->G, qp->DG, &tstep1);CHKERRQ(ierr); ierr = VecStepMax(qp->T, qp->DT, &tstep2);CHKERRQ(ierr); ierr = VecStepMax(qp->S, qp->DS, &tstep3);CHKERRQ(ierr); ierr = VecStepMax(qp->Z, qp->DZ, &tstep4);CHKERRQ(ierr); tstep = PetscMin(tstep1,tstep2); qp->psteplength = PetscMin(0.95*tstep,1.0); tstep = PetscMin(tstep3,tstep4); qp->dsteplength = PetscMin(0.95*tstep,1.0); qp->psteplength = PetscMin(qp->psteplength,qp->dsteplength); qp->dsteplength = qp->psteplength; PetscFunctionReturn(0); }
PETSC_EXTERN void PETSC_STDCALL vecstepmax_(Vec X,Vec DX,PetscReal *step, int *__ierr ){ *__ierr = VecStepMax( (Vec)PetscToPointer((X) ), (Vec)PetscToPointer((DX) ),step); }