Line data Source code
1 : /* 2 : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 : SLEPc - Scalable Library for Eigenvalue Problem Computations 4 : Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain 5 : 6 : This file is part of SLEPc. 7 : SLEPc is distributed under a 2-clause BSD license (see LICENSE). 8 : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9 : */ 10 : /* 11 : SLEPc eigensolver: "davidson" 12 : 13 : Step: test for convergence 14 : */ 15 : 16 : #include "davidson.h" 17 : 18 9177 : static PetscBool dvd_testconv_slepc_0(dvdDashboard *d,PetscScalar eigvr,PetscScalar eigvi,PetscReal r,PetscReal *err) 19 : { 20 9177 : PetscFunctionBegin; 21 9177 : PetscCallAbort(PetscObjectComm((PetscObject)d->eps),(*d->eps->converged)(d->eps,eigvr,eigvi,r,err,d->eps->convergedctx)); 22 9177 : PetscFunctionReturn(PetscNot(*err>=d->eps->tol)); 23 : } 24 : 25 285 : PetscErrorCode dvd_testconv_slepc(dvdDashboard *d, dvdBlackboard *b) 26 : { 27 285 : PetscFunctionBegin; 28 : /* Setup the step */ 29 285 : if (b->state >= DVD_STATE_CONF) { 30 95 : PetscCall(PetscFree(d->testConv_data)); 31 95 : d->testConv = dvd_testconv_slepc_0; 32 : } 33 285 : PetscFunctionReturn(PETSC_SUCCESS); 34 : }