Exemple #1
0
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);
}
Exemple #2
0
PETSC_EXTERN void PETSC_STDCALL  vecstepmax_(Vec X,Vec DX,PetscReal *step, int *__ierr ){
*__ierr = VecStepMax(
	(Vec)PetscToPointer((X) ),
	(Vec)PetscToPointer((DX) ),step);
}