Subversion Repositories slepc-dev

Compare Revisions

Ignore whitespace Rev 2315 → Rev 2316

/trunk/include/private/svdimpl.h
50,16 → 50,16
struct _p_SVD {
PETSCHEADER(struct _SVDOps);
Mat OP; /* problem matrix */
Mat A; /* problem matrix (m>n) */
Mat A; /* problem matrix (m>n) */
Mat AT; /* transposed matrix */
SVDTransposeMode transmode; /* transpose mode */
PetscReal *sigma; /* singular values */
PetscReal *sigma; /* singular values */
PetscInt *perm; /* permutation for singular value ordering */
Vec *U,*V; /* left and right singular vectors */
Vec *U,*V; /* left and right singular vectors */
Vec *IS; /* placeholder for references to user-provided initial space */
PetscInt n; /* maximun size of descomposition */
SVDWhich which; /* which singular values are computed */
PetscInt nconv; /* number of converged values */
PetscInt nconv; /* number of converged values */
PetscInt nsv; /* number of requested values */
PetscInt ncv; /* basis size */
PetscInt mpd; /* maximum dimension of projected problem */
69,8 → 69,8
PetscReal tol; /* tolerance */
PetscReal *errest; /* error estimates */
PetscRandom rand; /* random number generator */
void *data; /* placeholder for misc stuff associated
with a particular solver */
void *data; /* placeholder for misc stuff associated
with a particular solver */
PetscInt setupcalled;
SVDConvergedReason reason;
IP ip;
/trunk/include/slepcsys.h
41,7 → 41,7
#if (SLEPC_VERSION_RELEASE == 1)
#define SlepcGetVersion(version,len) PetscSNPrintf(version,len,"SLEPc Release Version %d.%d, Patch %d, %s", \
SLEPC_VERSION_MAJOR,SLEPC_VERSION_MINOR, \
SLEPC_VERSION_PATCH,SLEPC_VERSION_PATCH_DATE)
SLEPC_VERSION_PATCH,SLEPC_VERSION_PATCH_DATE)
#else
#define SlepcGetVersion(version,len) PetscSNPrintf(version,len,"SLEPc Development SVN revision: %d SVN Date: %s", \
SLEPC_VERSION_SVN, SLEPC_VERSION_DATE_SVN)
/trunk/src/qep/interface/qepregis.c
42,11 → 42,7
PetscErrorCode ierr;
 
PetscFunctionBegin;
 
ierr = QEPRegisterDynamic(QEPLINEAR, path,"QEPCreate_LINEAR",
QEPCreate_LINEAR);CHKERRQ(ierr);
ierr = QEPRegisterDynamic(QEPQARNOLDI, path,"QEPCreate_QARNOLDI",
QEPCreate_QARNOLDI);CHKERRQ(ierr);
 
ierr = QEPRegisterDynamic(QEPLINEAR,path,"QEPCreate_LINEAR",QEPCreate_LINEAR);CHKERRQ(ierr);
ierr = QEPRegisterDynamic(QEPQARNOLDI,path,"QEPCreate_QARNOLDI",QEPCreate_QARNOLDI);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
/trunk/src/st/interface/stset.c
195,8 → 195,8
Options Database Key:
. -st_matstructure <str> - Indicates the structure flag, where <str> is one
of 'same' (A and B have the same nonzero pattern), 'different' (A
and B have different nonzero pattern) or 'subset' (B's nonzero
pattern is a subset of A's).
and B have different nonzero pattern) or 'subset' (B's nonzero
pattern is a subset of A's).
 
Note:
By default, the sparsity patterns are assumed to be different. If the
/trunk/src/st/impls/fold/fold.c
211,17 → 211,17
 
ierr = PetscNew(ST_FOLD,&ctx); CHKERRQ(ierr);
PetscLogObjectMemory(st,sizeof(ST_FOLD));
st->data = (void *) ctx;
st->data = (void *) ctx;
 
st->ops->apply = STApply_Fold;
st->ops->apply = STApply_Fold;
st->ops->getbilinearform = STGetBilinearForm_Default;
st->ops->applytrans = STApplyTranspose_Fold;
st->ops->backtr = STBackTransform_Fold;
st->ops->setup = STSetUp_Fold;
st->ops->view = STView_Fold;
st->ops->backtr = STBackTransform_Fold;
st->ops->setup = STSetUp_Fold;
st->ops->view = STView_Fold;
st->ops->setfromoptions = STSetFromOptions_Fold;
st->ops->destroy = STDestroy_Fold;
st->checknullspace = 0;
st->ops->destroy = STDestroy_Fold;
st->checknullspace = 0;
PetscFunctionReturn(0);
}
/trunk/src/st/impls/shell/shell.c
345,7 → 345,7
/*MC
STSHELL - Creates a new spectral transformation class.
This is intended to provide a simple class to use with EPS.
You should not use this if you plan to make a complete class.
You should not use this if you plan to make a complete class.
 
Level: advanced
 
/trunk/src/eps/interface/itregis.c
65,43 → 65,29
 
PetscFunctionBegin;
 
ierr = EPSRegisterDynamic(EPSPOWER, path,"EPSCreate_POWER",
EPSCreate_POWER);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSSUBSPACE, path,"EPSCreate_SUBSPACE",
EPSCreate_SUBSPACE);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSARNOLDI, path,"EPSCreate_ARNOLDI",
EPSCreate_ARNOLDI);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSLANCZOS, path,"EPSCreate_LANCZOS",
EPSCreate_LANCZOS);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSKRYLOVSCHUR, path,"EPSCreate_KRYLOVSCHUR",
EPSCreate_KRYLOVSCHUR);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSDSITRLANCZOS, path,"EPSCreate_DSITRLANCZOS",
EPSCreate_DSITRLANCZOS);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSPOWER,path,"EPSCreate_POWER",EPSCreate_POWER);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSSUBSPACE,path,"EPSCreate_SUBSPACE",EPSCreate_SUBSPACE);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSARNOLDI,path,"EPSCreate_ARNOLDI",EPSCreate_ARNOLDI);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSLANCZOS,path,"EPSCreate_LANCZOS",EPSCreate_LANCZOS);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSKRYLOVSCHUR,path,"EPSCreate_KRYLOVSCHUR",EPSCreate_KRYLOVSCHUR);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSDSITRLANCZOS,path,"EPSCreate_DSITRLANCZOS",EPSCreate_DSITRLANCZOS);CHKERRQ(ierr);
#if defined(SLEPC_HAVE_ARPACK)
ierr = EPSRegisterDynamic(EPSARPACK, path,"EPSCreate_ARPACK",
EPSCreate_ARPACK);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSARPACK,path,"EPSCreate_ARPACK",EPSCreate_ARPACK);CHKERRQ(ierr);
#endif
ierr = EPSRegisterDynamic(EPSLAPACK, path,"EPSCreate_LAPACK",
EPSCreate_LAPACK);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSLAPACK,path,"EPSCreate_LAPACK",EPSCreate_LAPACK);CHKERRQ(ierr);
#if defined(SLEPC_HAVE_BLZPACK) && !defined(PETSC_USE_COMPLEX)
ierr = EPSRegisterDynamic(EPSBLZPACK, path,"EPSCreate_BLZPACK",
EPSCreate_BLZPACK);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSBLZPACK,path,"EPSCreate_BLZPACK",EPSCreate_BLZPACK);CHKERRQ(ierr);
#endif
#if defined(SLEPC_HAVE_TRLAN) && !defined(PETSC_USE_COMPLEX)
ierr = EPSRegisterDynamic(EPSTRLAN, path,"EPSCreate_TRLAN",
EPSCreate_TRLAN);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSTRLAN,path,"EPSCreate_TRLAN",EPSCreate_TRLAN);CHKERRQ(ierr);
#endif
#if defined(PETSC_HAVE_BLOPEX)
ierr = EPSRegisterDynamic(EPSBLOPEX, path,"EPSCreate_BLOPEX",
EPSCreate_BLOPEX);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSBLOPEX,path,"EPSCreate_BLOPEX",EPSCreate_BLOPEX);CHKERRQ(ierr);
#endif
#if defined(SLEPC_HAVE_PRIMME)
ierr = EPSRegisterDynamic(EPSPRIMME, path, "EPSCreate_PRIMME",
EPSCreate_PRIMME);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSPRIMME,path,"EPSCreate_PRIMME",EPSCreate_PRIMME);CHKERRQ(ierr);
#endif
ierr = EPSRegisterDynamic(EPSGD, path, "EPSCreate_GD",
EPSCreate_GD);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSJD, path, "EPSCreate_JD",
EPSCreate_JD);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSGD,path,"EPSCreate_GD",EPSCreate_GD);CHKERRQ(ierr);
ierr = EPSRegisterDynamic(EPSJD,path,"EPSCreate_JD",EPSCreate_JD);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
/trunk/src/eps/impls/external/trlan/trlan.c
89,7 → 89,7
ierr = STApply(globaleps->OP,x,y);CHKERRQ(ierr);
ierr = IPOrthogonalize(globaleps->ip,0,PETSC_NULL,globaleps->nds,PETSC_NULL,globaleps->DS,y,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
ierr = VecResetArray(x);CHKERRQ(ierr);
ierr = VecResetArray(y);CHKERRQ(ierr);
ierr = VecResetArray(y);CHKERRQ(ierr);
}
ierr = VecDestroy(&x);CHKERRQ(ierr);
ierr = VecDestroy(&y);CHKERRQ(ierr);
103,8 → 103,8
PetscErrorCode ierr;
PetscInt i;
PetscBLASInt ipar[32], n, lohi, stat, ncv;
EPS_TRLAN *tr = (EPS_TRLAN *)eps->data;
PetscScalar *pV;
EPS_TRLAN *tr = (EPS_TRLAN *)eps->data;
PetscScalar *pV;
PetscFunctionBegin;
 
/trunk/src/eps/impls/external/arpack/arpack.c
88,21 → 88,20
PetscErrorCode EPSSolve_ARPACK(EPS eps)
{
PetscErrorCode ierr;
EPS_ARPACK *ar = (EPS_ARPACK *)eps->data;
char bmat[1], howmny[] = "A";
const char *which;
PetscBLASInt n, iparam[11], ipntr[14], ido, info,
nev, ncv;
PetscScalar sigmar, *pV, *resid;
Vec x, y, w = eps->work[0];
Mat A;
PetscBool isSinv, isShift, rvec;
EPS_ARPACK *ar = (EPS_ARPACK *)eps->data;
char bmat[1], howmny[] = "A";
const char *which;
PetscBLASInt n, iparam[11], ipntr[14], ido, info, nev, ncv;
PetscScalar sigmar, *pV, *resid;
Vec x, y, w = eps->work[0];
Mat A;
PetscBool isSinv, isShift, rvec;
PetscBLASInt fcomm;
#if !defined(PETSC_USE_COMPLEX)
PetscScalar sigmai = 0.0;
#endif
 
PetscFunctionBegin;
nev = PetscBLASIntCast(eps->nev);
ncv = PetscBLASIntCast(eps->ncv);
fcomm = PetscBLASIntCast(MPI_Comm_c2f(((PetscObject)eps)->comm));
211,28 → 210,28
if (ido == -1) {
/* Y = OP * X for for the initialization phase to
force the starting vector into the range of OP */
ierr = STApply(eps->OP,x,y); CHKERRQ(ierr);
force the starting vector into the range of OP */
ierr = STApply(eps->OP,x,y); CHKERRQ(ierr);
} else if (ido == 2) {
/* Y = B * X */
ierr = IPApplyMatrix(eps->ip,x,y); CHKERRQ(ierr);
ierr = IPApplyMatrix(eps->ip,x,y); CHKERRQ(ierr);
} else { /* ido == 1 */
if (iparam[6] == 3 && bmat[0] == 'G') {
/* Y = OP * X for shift-and-invert with B semi-positive definite */
ierr = STAssociatedKSPSolve(eps->OP,x,y);CHKERRQ(ierr);
} else if (iparam[6] == 2) {
ierr = STAssociatedKSPSolve(eps->OP,x,y);CHKERRQ(ierr);
} else if (iparam[6] == 2) {
/* X=A*X Y=B^-1*X for shift with B positive definite */
ierr = MatMult(A,x,y);CHKERRQ(ierr);
if (sigmar != 0.0) {
ierr = IPApplyMatrix(eps->ip,x,w);CHKERRQ(ierr);
ierr = MatMult(A,x,y);CHKERRQ(ierr);
if (sigmar != 0.0) {
ierr = IPApplyMatrix(eps->ip,x,w);CHKERRQ(ierr);
ierr = VecAXPY(y,sigmar,w);CHKERRQ(ierr);
}
}
ierr = VecCopy(y,x); CHKERRQ(ierr);
ierr = STAssociatedKSPSolve(eps->OP,x,y);CHKERRQ(ierr);
} else {
} else {
/* Y = OP * X */
ierr = STApply(eps->OP,x,y); CHKERRQ(ierr);
}
ierr = STApply(eps->OP,x,y); CHKERRQ(ierr);
}
ierr = IPOrthogonalize(eps->ip,0,PETSC_NULL,eps->nds,PETSC_NULL,eps->DS,y,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
}
258,18 → 257,18
if (eps->ishermitian) {
ierr = EPSMonitor(eps,iparam[2],iparam[4],&ar->workl[ipntr[5]-1],eps->eigi,&ar->workl[ipntr[6]-1],eps->ncv);CHKERRQ(ierr);
ARseupd_ ( &fcomm, &rvec, howmny, ar->select, eps->eigr,
pV, &n, &sigmar,
bmat, &n, which, &nev, &eps->tol,
resid, &ncv, pV, &n, iparam, ipntr, ar->workd,
ar->workl, &ar->lworkl, &info, 1, 1, 2 );
pV, &n, &sigmar,
bmat, &n, which, &nev, &eps->tol,
resid, &ncv, pV, &n, iparam, ipntr, ar->workd,
ar->workl, &ar->lworkl, &info, 1, 1, 2 );
}
else {
ierr = EPSMonitor(eps,iparam[2],iparam[4],&ar->workl[ipntr[5]-1],&ar->workl[ipntr[6]-1],&ar->workl[ipntr[7]-1],eps->ncv);CHKERRQ(ierr);
ARneupd_ ( &fcomm, &rvec, howmny, ar->select, eps->eigr, eps->eigi,
pV, &n, &sigmar, &sigmai, ar->workev,
bmat, &n, which, &nev, &eps->tol,
resid, &ncv, pV, &n, iparam, ipntr, ar->workd,
ar->workl, &ar->lworkl, &info, 1, 1, 2 );
pV, &n, &sigmar, &sigmai, ar->workev,
bmat, &n, which, &nev, &eps->tol,
resid, &ncv, pV, &n, iparam, ipntr, ar->workd,
ar->workl, &ar->lworkl, &info, 1, 1, 2 );
}
#else
ierr = EPSMonitor(eps,eps->its,iparam[4],&ar->workl[ipntr[5]-1],eps->eigi,(PetscReal*)&ar->workl[ipntr[7]-1],eps->ncv);CHKERRQ(ierr);
/trunk/src/eps/impls/external/blzpack/blzpack.c
202,12 → 202,12
ierr = VecPlaceArray( y, blz->v+i*eps->nloc );CHKERRQ(ierr);
if (blz->slice || eps->isgeneralized) {
ierr = STAssociatedKSPSolve( eps->OP, x, y );CHKERRQ(ierr);
} else {
} else {
ierr = STApply( eps->OP, x, y ); CHKERRQ(ierr);
}
}
ierr = IPOrthogonalize(eps->ip,0,PETSC_NULL,eps->nds,PETSC_NULL,eps->DS,y,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
ierr = VecResetArray(x);CHKERRQ(ierr);
ierr = VecResetArray(y);CHKERRQ(ierr);
ierr = VecResetArray(y);CHKERRQ(ierr);
}
/* monitor */
eps->nconv = BLZistorr_(blz->istor,"NTEIG",5);
226,7 → 226,7
ierr = VecPlaceArray( y, blz->v+i*eps->nloc );CHKERRQ(ierr);
ierr = IPApplyMatrix(eps->ip, x, y ); CHKERRQ(ierr);
ierr = VecResetArray(x);CHKERRQ(ierr);
ierr = VecResetArray(y);CHKERRQ(ierr);
ierr = VecResetArray(y);CHKERRQ(ierr);
}
break;
case 3:
/trunk/src/eps/impls/external/blopex/blopex.c
75,9 → 75,9
#define __FUNCT__ "OperatorASingleVector"
static void OperatorASingleVector(void *data,void *x,void *y)
{
PetscErrorCode ierr;
EPS eps = (EPS)data;
Mat A;
PetscErrorCode ierr;
EPS eps = (EPS)data;
Mat A;
PetscFunctionBegin;
ierr = STGetOperators(eps->OP,&A,PETSC_NULL); CHKERRABORT(PETSC_COMM_WORLD,ierr);
89,8 → 89,8
#define __FUNCT__ "OperatorAMultiVector"
static void OperatorAMultiVector(void *data,void *x,void *y)
{
EPS eps = (EPS)data;
EPS_BLOPEX *blopex = (EPS_BLOPEX*)eps->data;
EPS eps = (EPS)data;
EPS_BLOPEX *blopex = (EPS_BLOPEX*)eps->data;
 
PetscFunctionBegin;
blopex->ii.Eval(OperatorASingleVector,data,x,y);
101,9 → 101,9
#define __FUNCT__ "OperatorBSingleVector"
static void OperatorBSingleVector(void *data,void *x,void *y)
{
PetscErrorCode ierr;
EPS eps = (EPS)data;
Mat B;
PetscErrorCode ierr;
EPS eps = (EPS)data;
Mat B;
PetscFunctionBegin;
ierr = STGetOperators(eps->OP,PETSC_NULL,&B); CHKERRABORT(PETSC_COMM_WORLD,ierr);
115,8 → 115,8
#define __FUNCT__ "OperatorBMultiVector"
static void OperatorBMultiVector(void *data,void *x,void *y)
{
EPS eps = (EPS)data;
EPS_BLOPEX *blopex = (EPS_BLOPEX*)eps->data;
EPS eps = (EPS)data;
EPS_BLOPEX *blopex = (EPS_BLOPEX*)eps->data;
 
PetscFunctionBegin;
blopex->ii.Eval(OperatorBSingleVector,data,x,y);
204,13 → 204,13
//#ifdef PETSC_USE_COMPLEX
// info = lobpcg_solve_complex(blopex->eigenvectors,eps,OperatorAMultiVector,
// eps->isgeneralized?eps:PETSC_NULL,eps->isgeneralized?OperatorBMultiVector:PETSC_NULL,
// eps->isgeneralized?eps:PETSC_NULL,eps->isgeneralized?OperatorBMultiVector:PETSC_NULL,
// eps,Precond_FnMultiVector,blopex->Y,
// blopex->blap_fn,blopex->tol,eps->max_it,0,&its,
// eps->eigr,PETSC_NULL,0,eps->errest,PETSC_NULL,0);
//#else
info = lobpcg_solve(blopex->eigenvectors,eps,OperatorAMultiVector,
eps->isgeneralized?eps:PETSC_NULL,eps->isgeneralized?OperatorBMultiVector:PETSC_NULL,
eps->isgeneralized?eps:PETSC_NULL,eps->isgeneralized?OperatorBMultiVector:PETSC_NULL,
eps,Precond_FnMultiVector,blopex->Y,
blopex->blap_fn,blopex->tol,eps->max_it,0,&its,
eps->eigr,PETSC_NULL,0,eps->errest,PETSC_NULL,0);
/trunk/src/eps/impls/krylov/arnoldi/arnoldi.c
136,20 → 136,20
ierr = VecDotEnd(u,V[j-2],&dot2);CHKERRQ(ierr);
if (PetscAbsScalar(dot2/norm2) > PETSC_MACHINE_EPSILON) {
*breakdown = PETSC_TRUE;
*M = j-1;
*beta = norm2;
*M = j-1;
*beta = norm2;
 
if (m>100) { ierr = PetscFree(lhh);CHKERRQ(ierr); }
ierr = VecDestroy(&u);CHKERRQ(ierr);
ierr = VecDestroy(&t);CHKERRQ(ierr);
PetscFunctionReturn(0);
if (m>100) { ierr = PetscFree(lhh);CHKERRQ(ierr); }
ierr = VecDestroy(&u);CHKERRQ(ierr);
ierr = VecDestroy(&t);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
}
if (j>k) {
norm1 = sqrt(PetscRealPart(dot));
for (i=0;i<j;i++)
H[ldh*j+i] = H[ldh*j+i]/norm1;
H[ldh*j+i] = H[ldh*j+i]/norm1;
H[ldh*j+j] = H[ldh*j+j]/dot;
ierr = VecCopy(V[j],t);CHKERRQ(ierr);
234,7 → 234,7
H[ldh*(j-1)+j] = norm;
 
for (i=0;i<j;i++)
H[ldh*j+i] = H[ldh*j+i]/norm;
H[ldh*j+i] = H[ldh*j+i]/norm;
H[ldh*j+j] = H[ldh*j+j]/dot;
ierr = VecScale(f,1.0/norm);CHKERRQ(ierr);
}
430,7 → 430,7
ierr = EPSGetStartVector(eps,k,eps->V[k],&breakdown);CHKERRQ(ierr);
if (breakdown) {
eps->reason = EPS_DIVERGED_BREAKDOWN;
PetscInfo(eps,"Unable to generate more start vectors\n");
PetscInfo(eps,"Unable to generate more start vectors\n");
}
}
if (eps->its >= eps->max_it) eps->reason = EPS_DIVERGED_ITS;
/trunk/src/eps/impls/krylov/lanczos/lanczos.c
215,23 → 215,23
nritzo = 0;
for (i=0;i<n;i++)
if (norm*PetscAbsScalar(Y[i*n+n-1]) < PETSC_SQRT_MACHINE_EPSILON*anorm)
nritzo++;
nritzo++;
 
if (nritzo>nritz) {
nritz = 0;
for (i=0;i<n;i++) {
if (norm*PetscAbsScalar(Y[i*n+n-1]) < PETSC_SQRT_MACHINE_EPSILON*anorm) {
ierr = SlepcVecMAXPBY(lanczos->AV[nritz],0.0,1.0,n,Y+i*n,V+k);CHKERRQ(ierr);
if (norm*PetscAbsScalar(Y[i*n+n-1]) < PETSC_SQRT_MACHINE_EPSILON*anorm) {
ierr = SlepcVecMAXPBY(lanczos->AV[nritz],0.0,1.0,n,Y+i*n,V+k);CHKERRQ(ierr);
nritz++;
}
}
}
}
 
if (nritz > 0) {
ierr = IPOrthogonalize(eps->ip,0,PETSC_NULL,nritz,PETSC_NULL,lanczos->AV,f,hwork,&norm,breakdown);CHKERRQ(ierr);
if (*breakdown) {
*M = j+1;
break;
*M = j+1;
break;
}
}
325,12 → 325,12
/* find left interval */
for (k=i;k>=0;k--) {
if (PetscAbsReal(mu[k])<eta || which[k]) break;
else which[k] = PETSC_TRUE;
else which[k] = PETSC_TRUE;
}
/* find right interval */
for (k=i+1;k<j;k++) {
if (PetscAbsReal(mu[k])<eta || which[k]) break;
else which[k] = PETSC_TRUE;
else which[k] = PETSC_TRUE;
}
}
PetscFunctionReturnVoid();
398,36 → 398,36
/* Estimate ||A|| if needed */
if (estimate_anorm) {
if (j>k) anorm = PetscMax(anorm,PetscAbsReal(alpha[j-k])+norm+beta[j-k-1]);
else anorm = PetscMax(anorm,PetscAbsReal(alpha[j-k])+norm);
else anorm = PetscMax(anorm,PetscAbsReal(alpha[j-k])+norm);
}
 
/* Check if reorthogonalization is needed */
reorth = PETSC_FALSE;
if (j>k) {
update_omega(omega,omega_old,j-k,alpha,beta-1,eps1,anorm);
for (i=0;i<j-k;i++)
if (PetscAbsScalar(omega[i]) > delta) reorth = PETSC_TRUE;
update_omega(omega,omega_old,j-k,alpha,beta-1,eps1,anorm);
for (i=0;i<j-k;i++)
if (PetscAbsScalar(omega[i]) > delta) reorth = PETSC_TRUE;
}
 
if (reorth || force_reorth) {
if (lanczos->reorthog == EPS_LANCZOS_REORTHOG_PERIODIC) {
/* Periodic reorthogonalization */
if (force_reorth) force_reorth = PETSC_FALSE;
else force_reorth = PETSC_TRUE;
ierr = IPOrthogonalize(eps->ip,0,PETSC_NULL,j-k,PETSC_NULL,V+k,f,hwork,&norm,breakdown);CHKERRQ(ierr);
for (i=0;i<j-k;i++)
if (lanczos->reorthog == EPS_LANCZOS_REORTHOG_PERIODIC) {
/* Periodic reorthogonalization */
if (force_reorth) force_reorth = PETSC_FALSE;
else force_reorth = PETSC_TRUE;
ierr = IPOrthogonalize(eps->ip,0,PETSC_NULL,j-k,PETSC_NULL,V+k,f,hwork,&norm,breakdown);CHKERRQ(ierr);
for (i=0;i<j-k;i++)
omega[i] = eps1;
} else {
/* Partial reorthogonalization */
if (force_reorth) force_reorth = PETSC_FALSE;
else {
force_reorth = PETSC_TRUE;
compute_int(which2,omega,j-k,delta,eta);
for (i=0;i<j-k;i++)
if (which2[i]) omega[i] = eps1;
}
ierr = IPOrthogonalize(eps->ip,0,PETSC_NULL,j-k,which2,V+k,f,hwork,&norm,breakdown);CHKERRQ(ierr);
}
} else {
/* Partial reorthogonalization */
if (force_reorth) force_reorth = PETSC_FALSE;
else {
force_reorth = PETSC_TRUE;
compute_int(which2,omega,j-k,delta,eta);
for (i=0;i<j-k;i++)
if (which2[i]) omega[i] = eps1;
}
ierr = IPOrthogonalize(eps->ip,0,PETSC_NULL,j-k,which2,V+k,f,hwork,&norm,breakdown);CHKERRQ(ierr);
}
}
}
437,7 → 437,7
}
if (!fro && norm*delta < anorm*eps1) {
fro = PETSC_TRUE;
PetscInfo1(eps,"Switching to full reorthogonalization at iteration %i\n",eps->its);
PetscInfo1(eps,"Switching to full reorthogonalization at iteration %i\n",eps->its);
}
beta[j-k] = norm;
633,11 → 633,11
/* purge spurious ritz values */
if (lanczos->reorthog == EPS_LANCZOS_REORTHOG_LOCAL) {
for (i=0;i<k;i++) {
ierr = VecNorm(eps->V[nconv+i],NORM_2,&norm);CHKERRQ(ierr);
ierr = VecNorm(eps->V[nconv+i],NORM_2,&norm);CHKERRQ(ierr);
ierr = VecScale(eps->V[nconv+i],1.0/norm);CHKERRQ(ierr);
ierr = STApply(eps->OP,eps->V[nconv+i],w);CHKERRQ(ierr);
ierr = VecAXPY(w,-ritz[i],eps->V[nconv+i]);CHKERRQ(ierr);
ierr = VecNorm(w,NORM_2,&norm);CHKERRQ(ierr);
ierr = VecAXPY(w,-ritz[i],eps->V[nconv+i]);CHKERRQ(ierr);
ierr = VecNorm(w,NORM_2,&norm);CHKERRQ(ierr);
ierr = (*eps->conv_func)(eps,ritz[i],eps->eigi[i],norm,&bnd[i],eps->conv_ctx);CHKERRQ(ierr);
if (bnd[i]>=eps->tol) conv[i] = 'S';
}
669,13 → 669,13
if (eps->reason == EPS_CONVERGED_ITERATING) { /* copy restart vector */
if (lanczos->reorthog == EPS_LANCZOS_REORTHOG_LOCAL && !breakdown) {
/* Reorthonormalize restart vector */
ierr = IPOrthogonalize(eps->ip,eps->nds,eps->DS,nconv,PETSC_NULL,eps->V,f,PETSC_NULL,&norm,&breakdown);CHKERRQ(ierr);
ierr = VecScale(f,1.0/norm);CHKERRQ(ierr);
ierr = IPOrthogonalize(eps->ip,eps->nds,eps->DS,nconv,PETSC_NULL,eps->V,f,PETSC_NULL,&norm,&breakdown);CHKERRQ(ierr);
ierr = VecScale(f,1.0/norm);CHKERRQ(ierr);
}
if (breakdown) {
/* Use random vector for restarting */
PetscInfo(eps,"Using random vector for restart\n");
ierr = EPSGetStartVector(eps,nconv,f,&breakdown);CHKERRQ(ierr);
/* Use random vector for restarting */
PetscInfo(eps,"Using random vector for restart\n");
ierr = EPSGetStartVector(eps,nconv,f,&breakdown);CHKERRQ(ierr);
}
if (breakdown) { /* give up */
eps->reason = EPS_DIVERGED_BREAKDOWN;
/trunk/src/eps/impls/davidson/common/dvd_updatev.c
640,7 → 640,7
#define __FUNCT__ "dvd_updateV_testConv"
PetscErrorCode dvd_updateV_testConv(dvdDashboard *d, PetscInt s, PetscInt pre,
PetscInt e, Vec *auxV, PetscScalar *auxS,
PetscInt *nConv)
PetscInt *nConv)
{
PetscInt i;
#ifndef PETSC_USE_COMPLEX
/trunk/src/eps/impls/davidson/common/davidson.c
152,7 → 152,7
ispositive = eps->ispositive;
dvd->sA = DVD_MAT_IMPLICIT |
(eps->ishermitian? DVD_MAT_HERMITIAN : 0) |
((ispositive && !eps->isgeneralized) ? DVD_MAT_POS_DEF : 0);
((ispositive && !eps->isgeneralized) ? DVD_MAT_POS_DEF : 0);
/* Asume -eps_hermitian means hermitian-definite in generalized problems */
if (!ispositive && !eps->isgeneralized && eps->ishermitian) ispositive = PETSC_TRUE;
if (!eps->isgeneralized)
164,7 → 164,7
(ispositive? DVD_MAT_POS_DEF : 0);
ipB = DVD_IS(dvd->sB, DVD_MAT_POS_DEF)?PETSC_TRUE:PETSC_FALSE;
dvd->sEP = ((!eps->isgeneralized || (eps->isgeneralized && ipB))? DVD_EP_STD : 0) |
(ispositive? DVD_EP_HERMITIAN : 0);
(ispositive? DVD_EP_HERMITIAN : 0);
dvd->nev = eps->nev;
dvd->which = eps->which;
switch(eps->which) {
/trunk/src/eps/impls/davidson/common/dvd_utils.c
240,20 → 240,14
PetscErrorCode ierr;
 
PetscFunctionBegin;
 
if (!stages[0]) {
ierr = PetscLogStageRegister("Dvd_step_initV", &stages[DVD_STAGE_INITV]);
CHKERRQ(ierr);
ierr = PetscLogStageRegister("Dvd_step_calcPairs",
&stages[DVD_STAGE_CALCPAIRS]); CHKERRQ(ierr);
ierr = PetscLogStageRegister("Dvd_step_improveX",
&stages[DVD_STAGE_IMPROVEX]); CHKERRQ(ierr);
ierr = PetscLogStageRegister("Dvd_step_updateV",
&stages[DVD_STAGE_UPDATEV]); CHKERRQ(ierr);
ierr = PetscLogStageRegister("Dvd_step_orthV",
&stages[DVD_STAGE_ORTHV]); CHKERRQ(ierr);
ierr = PetscLogStageRegister("Dvd_step_calcPairs",&stages[DVD_STAGE_CALCPAIRS]);CHKERRQ(ierr);
ierr = PetscLogStageRegister("Dvd_step_improveX",&stages[DVD_STAGE_IMPROVEX]);CHKERRQ(ierr);
ierr = PetscLogStageRegister("Dvd_step_updateV",&stages[DVD_STAGE_UPDATEV]);CHKERRQ(ierr);
ierr = PetscLogStageRegister("Dvd_step_orthV",&stages[DVD_STAGE_ORTHV]);CHKERRQ(ierr);
}
PetscFunctionReturn(0);
}
 
/trunk/src/eps/impls/lapack/lapack.c
70,7 → 70,7
if (ierra == 0 && ierrb == 0) {
ierr = STGetShift(eps->OP,&shift);CHKERRQ(ierr);
if (shift != 0.0) {
ierr = MatShift(la->A,shift);CHKERRQ(ierr);
ierr = MatShift(la->A,shift);CHKERRQ(ierr);
}
/* use dummy pc and ksp to avoid problems when B is not positive definite */
ierr = STGetKSP(eps->OP,&ksp);CHKERRQ(ierr);
/trunk/src/eps/impls/power/power.c
188,16 → 188,16
else rho = rt2;
#endif
}
/* update operator according to new shift */
PetscPushErrorHandler(PetscIgnoreErrorHandler,PETSC_NULL);
ierr = STSetShift(eps->OP,rho);
PetscPopErrorHandler();
if (ierr) {
/* update operator according to new shift */
PetscPushErrorHandler(PetscIgnoreErrorHandler,PETSC_NULL);
ierr = STSetShift(eps->OP,rho);
PetscPopErrorHandler();
if (ierr) {
eps->eigr[eps->nconv] = rho;
relerr = PETSC_MACHINE_EPSILON;
rho = sigma;
relerr = PETSC_MACHINE_EPSILON;
rho = sigma;
ierr = STSetShift(eps->OP,rho);CHKERRQ(ierr);
}
}
}
}
 
224,12 → 224,12
eps->nconv = eps->nconv + 1;
if (eps->nconv==eps->nev) eps->reason = EPS_CONVERGED_TOL;
else {
v = eps->V[eps->nconv];
ierr = EPSGetStartVector(eps,eps->nconv,v,&breakdown);CHKERRQ(ierr);
if (breakdown) {
v = eps->V[eps->nconv];
ierr = EPSGetStartVector(eps,eps->nconv,v,&breakdown);CHKERRQ(ierr);
if (breakdown) {
eps->reason = EPS_DIVERGED_BREAKDOWN;
PetscInfo(eps,"Unable to generate more start vectors\n");
}
PetscInfo(eps,"Unable to generate more start vectors\n");
}
}
}
 
335,17 → 335,17
else rho = rt2;
#endif
}
/* update operator according to new shift */
PetscPushErrorHandler(PetscIgnoreErrorHandler,PETSC_NULL);
ierr = STSetShift(eps->OP,rho);
PetscPopErrorHandler();
if (ierr) {
/* update operator according to new shift */
PetscPushErrorHandler(PetscIgnoreErrorHandler,PETSC_NULL);
ierr = STSetShift(eps->OP,rho);
PetscPopErrorHandler();
if (ierr) {
eps->eigr[eps->nconv] = rho;
eps->errest[eps->nconv] = PETSC_MACHINE_EPSILON;
eps->errest_left[eps->nconv] = PETSC_MACHINE_EPSILON;
rho = sigma;
eps->errest[eps->nconv] = PETSC_MACHINE_EPSILON;
eps->errest_left[eps->nconv] = PETSC_MACHINE_EPSILON;
rho = sigma;
ierr = STSetShift(eps->OP,rho);CHKERRQ(ierr);
}
}
}
}
 
/trunk/src/ip/iporthog.c
265,7 → 265,7
ierr = IPOrthogonalizeCGS1(ip,nds,DS,n,which,V,v,c,PETSC_NULL,&nrm);CHKERRQ(ierr);
}
for (j=0;j<n;j++)
if (!which || which[j]) h[nds+j] += c[nds+j];
if (!which || which[j]) h[nds+j] += c[nds+j];
}
if (norm) *norm = nrm;
if (lindep) {
/trunk/src/svd/interface/svdbasic.c
144,10 → 144,10
switch (svd->transmode) {
case SVD_TRANSPOSE_EXPLICIT:
ierr = PetscViewerASCIIPrintf(viewer," transpose mode: explicit\n");CHKERRQ(ierr);
break;
break;
case SVD_TRANSPOSE_IMPLICIT:
ierr = PetscViewerASCIIPrintf(viewer," transpose mode: implicit\n");CHKERRQ(ierr);
break;
break;
default:
ierr = PetscViewerASCIIPrintf(viewer," transpose mode: not yet set\n");CHKERRQ(ierr);
}
/trunk/src/svd/interface/svdregis.c
45,17 → 45,10
PetscErrorCode ierr;
 
PetscFunctionBegin;
ierr = SVDRegisterDynamic(SVDCROSS, path,"SVDCreate_CROSS",
SVDCreate_CROSS);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDCYCLIC, path,"SVDCreate_CYCLIC",
SVDCreate_CYCLIC);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDLAPACK, path,"SVDCreate_LAPACK",
SVDCreate_LAPACK);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDLANCZOS, path,"SVDCreate_LANCZOS",
SVDCreate_LANCZOS);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDTRLANCZOS, path,"SVDCreate_TRLANCZOS",
SVDCreate_TRLANCZOS);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDCROSS,path,"SVDCreate_CROSS",SVDCreate_CROSS);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDCYCLIC,path,"SVDCreate_CYCLIC",SVDCreate_CYCLIC);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDLAPACK,path,"SVDCreate_LAPACK",SVDCreate_LAPACK);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDLANCZOS,path,"SVDCreate_LANCZOS",SVDCreate_LANCZOS);CHKERRQ(ierr);
ierr = SVDRegisterDynamic(SVDTRLANCZOS,path,"SVDCreate_TRLANCZOS",SVDCreate_TRLANCZOS);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
/trunk/src/svd/impls/cyclic/cyclic.c
222,7 → 222,7
ierr = VecCopy(x1,svd->U[j]);CHKERRQ(ierr);
ierr = VecScale(svd->U[j],1.0/sqrt(2.0));CHKERRQ(ierr);
ierr = VecCopy(x2,svd->V[j]);CHKERRQ(ierr);
ierr = VecScale(svd->V[j],1.0/sqrt(2.0));CHKERRQ(ierr);
ierr = VecScale(svd->V[j],1.0/sqrt(2.0));CHKERRQ(ierr);
ierr = VecResetArray(x1);CHKERRQ(ierr);
ierr = VecResetArray(x2);CHKERRQ(ierr);
ierr = VecRestoreArray(x,&px);CHKERRQ(ierr);
/trunk/src/examples/ex2.c
30,14 → 30,14
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
PetscErrorCode ierr;
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscErrorCode ierr;
PetscInt N, n=10, m, Istart, Iend, II, nev, maxit, i, j, its, nconv;
PetscBool flag;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt N, n=10, m, Istart, Iend, II, nev, maxit, i, j, its, nconv;
PetscBool flag;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
 
/trunk/src/examples/ex4.c
30,16 → 30,16
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
PetscErrorCode ierr;
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscErrorCode ierr;
PetscInt nev, maxit, i, its, nconv;
char filename[256];
PetscViewer viewer;
PetscBool flg;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt nev, maxit, i, its, nconv;
char filename[256];
PetscViewer viewer;
PetscBool flg;
 
 
SlepcInitialize(&argc,&argv,(char*)0,help);
/trunk/src/examples/ex5.c
24,7 → 24,7
"This example illustrates how the user can set the initial vector.\n\n"
"The command line options are:\n"
" -m <m>, where <m> = number of grid subdivisions in each dimension.\n\n";
 
cut -d : -f 1 | uniq | xargs gvim
#include <slepceps.h>
 
/*
36,14 → 36,14
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Vec v0; /* initial vector */
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt N, m=15, nev, maxit, i, its, nconv;
PetscErrorCode ierr;
Vec v0; /* initial vector */
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt N, m=15, nev, maxit, i, its, nconv;
SlepcInitialize(&argc,&argv,(char*)0,help);
 
201,15 → 201,13
/* north */
if( i==1 ) {
ierr = MatSetValue( A, ix-1, ix, 2*pd, INSERT_VALUES );CHKERRQ(ierr);
}
else {
} else {
ierr = MatSetValue( A, ix-1, ix, pd, INSERT_VALUES );CHKERRQ(ierr);
}
/* east */
if( j==1 ) {
ierr = MatSetValue( A, ix-1, ix+jmax-1, 2*pd, INSERT_VALUES );CHKERRQ(ierr);
}
else {
} else {
ierr = MatSetValue( A, ix-1, ix+jmax-1, pd, INSERT_VALUES );CHKERRQ(ierr);
}
}
/trunk/src/examples/ex7.c
31,16 → 31,16
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A,B; /* matrices */
EPS eps; /* eigenproblem solver context */
PetscErrorCode ierr;
Mat A,B; /* matrices */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscErrorCode ierr;
PetscInt nev, maxit, i, its, lits, nconv;
char filename[256];
PetscViewer viewer;
PetscBool flg;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt nev, maxit, i, its, lits, nconv;
char filename[256];
PetscViewer viewer;
PetscBool flg;
 
 
SlepcInitialize(&argc,&argv,(char*)0,help);
/trunk/src/examples/ex8.c
47,11 → 47,11
int main( int argc, char **argv )
{
PetscErrorCode ierr;
Mat A; /* Grcar matrix */
Mat A; /* Grcar matrix */
SVD svd; /* singular value solver context */
PetscInt N=30, Istart, Iend, i, col[5], nconv1, nconv2;
PetscScalar value[] = { -1, 1, 1, 1, 1 };
PetscReal sigma_1, sigma_n;
PetscInt N=30, Istart, Iend, i, col[5], nconv1, nconv2;
PetscScalar value[] = { -1, 1, 1, 1, 1 };
PetscReal sigma_1, sigma_n;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
 
71,8 → 71,7
col[0]=i-1; col[1]=i; col[2]=i+1; col[3]=i+2; col[4]=i+3;
if (i==0) {
ierr = MatSetValues(A,1,&i,4,col+1,value+1,INSERT_VALUES);CHKERRQ(ierr);
}
else {
} else {
ierr = MatSetValues(A,1,&i,PetscMin(5,N-i+1),col,value,INSERT_VALUES);CHKERRQ(ierr);
}
}
/trunk/src/examples/ex9.c
61,14 → 61,14
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A; /* eigenvalue problem matrix */
EPS eps; /* eigenproblem solver context */
PetscErrorCode ierr;
Mat A; /* eigenvalue problem matrix */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar delta1, delta2, L, h, kr, ki, value[3];
PetscInt N=30, n, i, col[3], Istart, Iend, nev, maxit, its, nconv;
PetscReal error, tol, re, im;
PetscScalar delta1, delta2, L, h, kr, ki, value[3];
PetscInt N=30, n, i, col[3], Istart, Iend, nev, maxit, its, nconv;
PetscBool FirstBlock=PETSC_FALSE, LastBlock=PETSC_FALSE;
PetscErrorCode ierr;
CTX_BRUSSEL *ctx;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
/trunk/src/examples/ex10.c
43,14 → 43,14
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
ST st; /* spectral transformation context */
SampleShellST *shell; /* user-defined spectral transform context */
PetscErrorCode ierr;
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
ST st; /* spectral transformation context */
SampleShellST *shell; /* user-defined spectral transform context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscErrorCode ierr;
PetscInt n=30, i, col[3], Istart, Iend, FirstBlock=0, LastBlock=0, nev, maxit, its, nconv;
PetscScalar value[3];
PetscBool isShell;
/trunk/src/examples/ex11.c
31,16 → 31,16
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A; /* operator matrix */
Vec x;
EPS eps; /* eigenproblem solver context */
PetscErrorCode ierr;
EPS eps; /* eigenproblem solver context */
Mat A; /* operator matrix */
Vec x;
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscErrorCode ierr;
PetscInt N, n=10, m, i, j, II, Istart, Iend, nev, maxit, its, nconv;
PetscScalar w;
PetscBool flag;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt N, n=10, m, i, j, II, Istart, Iend, nev, maxit, its, nconv;
PetscScalar w;
PetscBool flag;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
 
/trunk/src/examples/ex12.c
37,14 → 37,14
int main( int argc, char **argv )
{
PetscErrorCode ierr;
Vec v0,w0; /* initial vector */
Vec *X,*Y; /* right and left eigenvectors */
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
Vec v0,w0; /* initial vector */
Vec *X,*Y; /* right and left eigenvectors */
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error1, error2, tol, re, im;
PetscScalar kr, ki;
PetscInt nev, maxit, i, its, nconv, N, m=15;
PetscReal error1, error2, tol, re, im;
PetscScalar kr, ki;
PetscInt nev, maxit, i, its, nconv, N, m=15;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
 
201,7 → 201,7
state probability distribution of the system, which is the eigevector
associated with the eigenvalue one and scaled in such a way that the sum all
the components is equal to one.
 
cut -d : -f 1 | uniq | xargs gvim
Note: the code will actually compute the transpose of the stochastic matrix
that contains the transition probabilities.
*/
224,15 → 224,13
/* north */
if( i==1 ) {
ierr = MatSetValue( A, ix-1, ix, 2*pd, INSERT_VALUES );CHKERRQ(ierr);
}
else {
} else {
ierr = MatSetValue( A, ix-1, ix, pd, INSERT_VALUES );CHKERRQ(ierr);
}
/* east */
if( j==1 ) {
ierr = MatSetValue( A, ix-1, ix+jmax-1, 2*pd, INSERT_VALUES );CHKERRQ(ierr);
}
else {
} else {
ierr = MatSetValue( A, ix-1, ix+jmax-1, pd, INSERT_VALUES );CHKERRQ(ierr);
}
}
/trunk/src/examples/ex13.c
34,15 → 34,15
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A, B; /* matrices */
EPS eps; /* eigenproblem solver context */
ST st; /* spectral transformation context */
PetscErrorCode ierr;
Mat A, B; /* matrices */
EPS eps; /* eigenproblem solver context */
ST st; /* spectral transformation context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscErrorCode ierr;
PetscInt N, n=10, m, Istart, Iend, II, nev, maxit, i, j, its, nconv, nulldim=0;
PetscBool flag;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt N, n=10, m, Istart, Iend, II, nev, maxit, i, j, its, nconv, nulldim=0;
PetscBool flag;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
 
/trunk/src/examples/ex14.c
30,15 → 30,15
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A; /* operator matrix */
SVD svd; /* singular value problem solver context */
PetscErrorCode ierr;
Mat A; /* operator matrix */
SVD svd; /* singular value problem solver context */
const SVDType type;
PetscReal error, tol, sigma;
PetscErrorCode ierr;
PetscInt nsv, maxit, i, its, nconv;
char filename[256];
PetscViewer viewer;
PetscBool flg;
PetscReal error, tol, sigma;
PetscInt nsv, maxit, i, its, nconv;
char filename[256];
PetscViewer viewer;
PetscBool flg;
 
 
SlepcInitialize(&argc,&argv,(char*)0,help);
/trunk/src/examples/ex15.c
30,12 → 30,12
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat A; /* operator matrix */
PetscErrorCode ierr;
Mat A; /* operator matrix */
Vec u,v; /* left and right singular vectors */
SVD svd; /* singular value problem solver context */
SVD svd; /* singular value problem solver context */
const SVDType type;
PetscReal error, tol, sigma, mu=PETSC_SQRT_MACHINE_EPSILON;
PetscErrorCode ierr;
PetscReal error, tol, sigma, mu=PETSC_SQRT_MACHINE_EPSILON;
PetscInt n=100, i, j, Istart, Iend, nsv, maxit, its, nconv;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
/trunk/src/examples/ex16.c
30,14 → 30,14
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat M, C, K; /* problem matrices */
QEP qep; /* quadratic eigenproblem solver context */
PetscErrorCode ierr;
Mat M, C, K; /* problem matrices */
QEP qep; /* quadratic eigenproblem solver context */
const QEPType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscErrorCode ierr;
PetscInt N, n=10, m, Istart, Iend, II, nev, maxit, i, j, its, nconv;
PetscBool flag;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt N, n=10, m, Istart, Iend, II, nev, maxit, i, j, its, nconv;
PetscBool flag;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
 
/trunk/src/examples/ex17.c
31,16 → 31,16
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Mat M, C, K; /* problem matrices */
QEP qep; /* quadratic eigenproblem solver context */
PetscErrorCode ierr;
Mat M, C, K; /* problem matrices */
QEP qep; /* quadratic eigenproblem solver context */
const QEPType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscErrorCode ierr;
PetscInt nev, maxit, i, its, nconv;
char filename[256];
PetscViewer viewer;
PetscBool flg;
PetscReal error, tol, re, im;
PetscScalar kr, ki;
PetscInt nev, maxit, i, its, nconv;
char filename[256];
PetscViewer viewer;
PetscBool flg;
 
SlepcInitialize(&argc,&argv,(char*)0,help);
 
/trunk/src/examples/ex18.c
39,14 → 39,14
#define __FUNCT__ "main"
int main( int argc, char **argv )
{
Vec v0; /* initial vector */
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki, target=0.5;
PetscInt N, m=15, nev, maxit, i, its, nconv;
PetscErrorCode ierr;
Vec v0; /* initial vector */
Mat A; /* operator matrix */
EPS eps; /* eigenproblem solver context */
const EPSType type;
PetscReal error, tol, re, im;
PetscScalar kr, ki, target=0.5;
PetscInt N, m=15, nev, maxit, i, its, nconv;
SlepcInitialize(&argc,&argv,(char*)0,help);
 
212,15 → 212,13
/* north */
if( i==1 ) {
ierr = MatSetValue( A, ix-1, ix, 2*pd, INSERT_VALUES );CHKERRQ(ierr);
}
else {
} else {
ierr = MatSetValue( A, ix-1, ix, pd, INSERT_VALUES );CHKERRQ(ierr);
}
/* east */
if( j==1 ) {
ierr = MatSetValue( A, ix-1, ix+jmax-1, 2*pd, INSERT_VALUES );CHKERRQ(ierr);
}
else {
} else {
ierr = MatSetValue( A, ix-1, ix+jmax-1, pd, INSERT_VALUES );CHKERRQ(ierr);
}
}