| Line 55... |
Line 55... |
|
|
if (!st->setupcalled) { ierr = STSetUp(st); CHKERRQ(ierr); }
|
if (!st->setupcalled) { ierr = STSetUp(st); CHKERRQ(ierr); }
|
|
|
ierr = PetscLogEventBegin(ST_Apply,st,x,y,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(ST_Apply,st,x,y,0);CHKERRQ(ierr);
|
st->applys++;
|
st->applys++;
|
ierr = (*st->ops->apply)(st,x,y);CHKERRQ(ierr);
|
if (st->D) { /* with balancing */
|
|
ierr = VecPointwiseDivide(st->wb,x,st->D);CHKERRQ(ierr);
|
|
ierr = (*st->ops->apply)(st,st->wb,y);CHKERRQ(ierr);
|
|
ierr = VecPointwiseMult(y,y,st->D);CHKERRQ(ierr);
|
|
}
|
|
else {
|
|
ierr = (*st->ops->apply)(st,x,y);CHKERRQ(ierr);
|
|
}
|
ierr = PetscLogEventEnd(ST_Apply,st,x,y,0);CHKERRQ(ierr);
|
ierr = PetscLogEventEnd(ST_Apply,st,x,y,0);CHKERRQ(ierr);
|
PetscFunctionReturn(0);
|
PetscFunctionReturn(0);
|
}
|
}
|
|
|
#undef __FUNCT__
|
#undef __FUNCT__
|
#define __FUNCT__ "STGetBilinearForm"
|
#define __FUNCT__ "STGetBilinearForm"
|
/*@
|
/*@
|
STGetBilinearForm - Returns the matrix used in the bilinear form with a semi-definite generalised problem.
|
STGetBilinearForm - Returns the matrix used in the bilinear form with a
|
|
generalized problem with semi-definite B.
|
|
|
Collective on ST and Mat
|
Collective on ST and Mat
|
|
|
Input Parameters:
|
Input Parameters:
|
. st - the spectral transformation context
|
. st - the spectral transformation context
|
| Line 137... |
Line 145... |
|
|
if (!st->setupcalled) { ierr = STSetUp(st); CHKERRQ(ierr); }
|
if (!st->setupcalled) { ierr = STSetUp(st); CHKERRQ(ierr); }
|
|
|
ierr = PetscLogEventBegin(ST_ApplyTranspose,st,x,y,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(ST_ApplyTranspose,st,x,y,0);CHKERRQ(ierr);
|
st->applys++;
|
st->applys++;
|
ierr = (*st->ops->applytrans)(st,x,y);CHKERRQ(ierr);
|
if (st->D) { /* with balancing */
|
|
ierr = VecPointwiseMult(st->wb,x,st->D);CHKERRQ(ierr);
|
|
ierr = (*st->ops->applytrans)(st,st->wb,y);CHKERRQ(ierr);
|
|
ierr = VecPointwiseDivide(y,y,st->D);CHKERRQ(ierr);
|
|
}
|
|
else {
|
|
ierr = (*st->ops->applytrans)(st,x,y);CHKERRQ(ierr);
|
|
}
|
ierr = PetscLogEventEnd(ST_ApplyTranspose,st,x,y,0);CHKERRQ(ierr);
|
ierr = PetscLogEventEnd(ST_ApplyTranspose,st,x,y,0);CHKERRQ(ierr);
|
PetscFunctionReturn(0);
|
PetscFunctionReturn(0);
|
}
|
}
|
|
|
#undef __FUNCT__
|
#undef __FUNCT__
|