Subversion Repositories slepc-dev

Compare Revisions

Ignore whitespace Rev 2182 → Rev 2188

/trunk/src/eps/impls/davidson/common/dvd_initv.c
118,7 → 118,6
*/
 
typedef struct {
Vec *userV; /* custom initial search subspace */
PetscInt size_userV, /* size of userV */
k; /* desired initial subspace size */
void *old_initV_data; /* old initV data */
126,7 → 125,7
 
#undef __FUNCT__
#define __FUNCT__ "dvd_initV_user"
PetscErrorCode dvd_initV_user(dvdDashboard *d, dvdBlackboard *b, Vec *userV,
PetscErrorCode dvd_initV_user(dvdDashboard *d, dvdBlackboard *b,
PetscInt size_userV, PetscInt k)
{
PetscErrorCode ierr;
142,7 → 141,6
ierr = PetscMalloc(sizeof(dvdInitV_User), &data); CHKERRQ(ierr);
data->k = k;
data->size_userV = size_userV;
data->userV = userV;
data->old_initV_data = d->initV_data;
d->initV_data = data;
d->initV = dvd_initV_user_0;
162,10 → 160,10
 
PetscFunctionBegin;
 
/* The user vectors are already in V */
i = PetscMin(data->size_userV,d->max_size_V);
 
/* Generate a set of random initial vectors and orthonormalize them */
for (i=0; i<PetscMin(data->size_userV,d->max_size_V); i++) {
ierr = VecCopy(data->userV[i], d->V[i]); CHKERRQ(ierr);
}
for (; i<PetscMin(data->k,d->max_size_V); i++) {
ierr = SlepcVecSetRandom(d->V[i], d->eps->rand); CHKERRQ(ierr);
}
/trunk/src/eps/impls/davidson/common/davidson.c
221,13 → 221,13
ierr = EPSDAVIDSONGetFix_DAVIDSON(eps, &fix); CHKERRQ(ierr);
 
/* Orthonormalize the DS */
ierr = dvd_orthV(eps->ip, PETSC_NULL, 0, PETSC_NULL, 0, eps->DS, 0, eps->nds,
PETSC_NULL, 0, eps->rand); CHKERRQ(ierr);
ierr = dvd_orthV(eps->ip, PETSC_NULL, 0, PETSC_NULL, 0, eps->DS, 0,
PetscAbs(eps->nds), PETSC_NULL, 0, eps->rand); CHKERRQ(ierr);
 
/* Preconfigure dvd */
ierr = dvd_schm_basic_preconf(dvd, &b, eps->ncv, eps->mpd, min_size_V, bs,
initv, eps->IS,
eps->nini,
initv,
PetscAbs(eps->nini),
plusk, pc, harm,
PETSC_NULL, init, eps->trackall);
CHKERRQ(ierr);
253,8 → 253,8
 
/* Configure dvd for a basic GD */
ierr = dvd_schm_basic_conf(dvd, &b, eps->ncv, eps->mpd, min_size_V, bs,
initv, eps->IS,
eps->nini, plusk, pc,
initv,
PetscAbs(eps->nini), plusk, pc,
eps->ip, harm, dvd->withTarget,
eps->target, ksp,
fix, init, eps->trackall);
/trunk/src/eps/impls/davidson/common/dvd_schm.c
29,7 → 29,7
#define __FUNCT__ "dvd_schm_basic_preconf"
PetscErrorCode dvd_schm_basic_preconf(dvdDashboard *d, dvdBlackboard *b,
PetscInt max_size_V, PetscInt mpd, PetscInt min_size_V, PetscInt bs,
PetscInt ini_size_V, Vec *initV, PetscInt size_initV, PetscInt plusk, PC pc,
PetscInt ini_size_V, PetscInt size_initV, PetscInt plusk, PC pc,
HarmType_t harmMode, KSP ksp, InitType_t init, PetscTruth allResiduals)
{
PetscErrorCode ierr;
51,14 → 51,14
CHKERRQ(ierr);
/* Setup the initial subspace for V */
if (initV) {
ierr = dvd_initV_user(d, b, initV, size_initV, ini_size_V); CHKERRQ(ierr);
if (size_initV) {
ierr = dvd_initV_user(d, b, size_initV, ini_size_V); CHKERRQ(ierr);
} else switch(init) {
case DVD_INITV_CLASSIC:
ierr = dvd_initV_classic(d, b, ini_size_V); CHKERRQ(ierr); break;
case DVD_INITV_KRYLOV:
ierr = dvd_initV_krylov(d, b, ini_size_V); CHKERRQ(ierr); break;
}
}
/* Setup the convergence in order to use the SLEPc convergence test */
ierr = dvd_testconv_slepc(d, b);CHKERRQ(ierr);
89,7 → 89,7
#define __FUNCT__ "dvd_schm_basic_conf"
PetscErrorCode dvd_schm_basic_conf(dvdDashboard *d, dvdBlackboard *b,
PetscInt max_size_V, PetscInt mpd, PetscInt min_size_V, PetscInt bs,
PetscInt ini_size_V, Vec *initV, PetscInt size_initV, PetscInt plusk, PC pc,
PetscInt ini_size_V, PetscInt size_initV, PetscInt plusk, PC pc,
IP ip, HarmType_t harmMode, PetscTruth fixedTarget, PetscScalar t, KSP ksp,
PetscReal fix, InitType_t init, PetscTruth allResiduals)
{
113,8 → 113,8
CHKERRQ(ierr);
 
/* Setup the initial subspace for V */
if (initV) {
ierr = dvd_initV_user(d, b, initV, size_initV, ini_size_V); CHKERRQ(ierr);
if (size_initV) {
ierr = dvd_initV_user(d, b, size_initV, ini_size_V); CHKERRQ(ierr);
} else switch(init) {
case DVD_INITV_CLASSIC:
ierr = dvd_initV_classic(d, b, ini_size_V); CHKERRQ(ierr); break;
/trunk/src/eps/impls/davidson/common/davidson.h
368,7 → 368,7
 
/* Routines for initV step */
PetscErrorCode dvd_initV_classic(dvdDashboard *d, dvdBlackboard *b, PetscInt k);
PetscErrorCode dvd_initV_user(dvdDashboard *d, dvdBlackboard *b, Vec *userV,
PetscErrorCode dvd_initV_user(dvdDashboard *d, dvdBlackboard *b,
PetscInt size_userV, PetscInt k);
PetscErrorCode dvd_initV_krylov(dvdDashboard *d, dvdBlackboard *b, PetscInt k);
 
408,11 → 408,11
/* Methods */
PetscErrorCode dvd_schm_basic_preconf(dvdDashboard *d, dvdBlackboard *b,
PetscInt max_size_V, PetscInt mpd, PetscInt min_size_V, PetscInt bs,
PetscInt ini_size_V, Vec *initV, PetscInt size_initV, PetscInt plusk, PC pc,
PetscInt ini_size_V, PetscInt size_initV, PetscInt plusk, PC pc,
HarmType_t harmMode, KSP ksp, InitType_t init, PetscTruth allResiduals);
PetscErrorCode dvd_schm_basic_conf(dvdDashboard *d, dvdBlackboard *b,
PetscInt max_size_V, PetscInt mpd, PetscInt min_size_V, PetscInt bs,
PetscInt ini_size_V, Vec *initV, PetscInt size_initV, PetscInt plusk, PC pc,
PetscInt ini_size_V, PetscInt size_initV, PetscInt plusk, PC pc,
IP ip, HarmType_t harmMode, PetscTruth fixedTarget, PetscScalar t, KSP ksp,
PetscReal fix, InitType_t init, PetscTruth allResiduals);