| Line 68... |
Line 68... |
if (!eps->max_it) eps->max_it = PetscMax(2000,100*eps->n);
|
if (!eps->max_it) eps->max_it = PetscMax(2000,100*eps->n);
|
if (!eps->which) eps->which = EPS_LARGEST_MAGNITUDE;
|
if (!eps->which) eps->which = EPS_LARGEST_MAGNITUDE;
|
if (eps->which!=EPS_LARGEST_MAGNITUDE)
|
if (eps->which!=EPS_LARGEST_MAGNITUDE)
|
SETERRQ(1,"Wrong value of eps->which");
|
SETERRQ(1,"Wrong value of eps->which");
|
if (power->shift_type != EPS_POWER_SHIFT_CONSTANT) {
|
if (power->shift_type != EPS_POWER_SHIFT_CONSTANT) {
|
ierr = PetscTypeCompare((PetscObject)eps->OP,STSINV,&flg);CHKERRQ(ierr);
|
ierr = PetscTypeCompare((PetscObject)eps->OP,STSINVERT,&flg);CHKERRQ(ierr);
|
if (!flg)
|
if (!flg)
|
SETERRQ(PETSC_ERR_SUP,"Variable shifts only allowed in shift-and-invert ST");
|
SETERRQ(PETSC_ERR_SUP,"Variable shifts only allowed in shift-and-invert ST");
|
ierr = STGetMatMode(eps->OP,&mode);CHKERRQ(ierr);
|
ierr = STGetMatMode(eps->OP,&mode);CHKERRQ(ierr);
|
if (mode == ST_MATMODE_INPLACE)
|
if (mode == ST_MATMODE_INPLACE)
|
SETERRQ(PETSC_ERR_SUP,"ST matrix mode inplace does not work with variable shifts");
|
SETERRQ(PETSC_ERR_SUP,"ST matrix mode inplace does not work with variable shifts");
|
| Line 411... |
Line 411... |
PetscFunctionBegin;
|
PetscFunctionBegin;
|
ierr = PetscOptionsHead("POWER options");CHKERRQ(ierr);
|
ierr = PetscOptionsHead("POWER options");CHKERRQ(ierr);
|
ierr = PetscOptionsEList("-eps_power_shift_type","Shift type","EPSPowerSetShiftType",shift_list,3,shift_list[power->shift_type],&i,&flg);CHKERRQ(ierr);
|
ierr = PetscOptionsEList("-eps_power_shift_type","Shift type","EPSPowerSetShiftType",shift_list,3,shift_list[power->shift_type],&i,&flg);CHKERRQ(ierr);
|
if (flg ) power->shift_type = (EPSPowerShiftType)i;
|
if (flg ) power->shift_type = (EPSPowerShiftType)i;
|
if (power->shift_type != EPS_POWER_SHIFT_CONSTANT) {
|
if (power->shift_type != EPS_POWER_SHIFT_CONSTANT) {
|
ierr = STSetType(eps->OP,STSINV);CHKERRQ(ierr);
|
ierr = STSetType(eps->OP,STSINVERT);CHKERRQ(ierr);
|
}
|
}
|
ierr = PetscOptionsTail();CHKERRQ(ierr);
|
ierr = PetscOptionsTail();CHKERRQ(ierr);
|
PetscFunctionReturn(0);
|
PetscFunctionReturn(0);
|
}
|
}
|
|
|