Subversion Repositories slepc-dev

Rev

Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2212 Rev 2213
Line 21... Line 21...
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
*/
 
 
#include "private/stimpl.h"            /*I "slepcst.h" I*/
#include "private/stimpl.h"            /*I "slepcst.h" I*/
 
 
PetscCookie ST_COOKIE = 0;
PetscClassId ST_CLASSID = 0;
PetscLogEvent ST_SetUp = 0, ST_Apply = 0, ST_ApplyTranspose = 0;
PetscLogEvent ST_SetUp = 0, ST_Apply = 0, ST_ApplyTranspose = 0;
static PetscTruth STPackageInitialized = PETSC_FALSE;
static PetscTruth STPackageInitialized = PETSC_FALSE;
 
 
#undef __FUNCT__  
#undef __FUNCT__  
#define __FUNCT__ "STFinalizePackage"
#define __FUNCT__ "STFinalizePackage"
Line 67... Line 67...
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  if (STPackageInitialized) PetscFunctionReturn(0);
  if (STPackageInitialized) PetscFunctionReturn(0);
  STPackageInitialized = PETSC_TRUE;
  STPackageInitialized = PETSC_TRUE;
  /* Register Classes */
  /* Register Classes */
  ierr = PetscCookieRegister("Spectral Transform",&ST_COOKIE);CHKERRQ(ierr);
  ierr = PetscClassIdRegister("Spectral Transform",&ST_CLASSID);CHKERRQ(ierr);
  /* Register Constructors */
  /* Register Constructors */
  ierr = STRegisterAll(path);CHKERRQ(ierr);
  ierr = STRegisterAll(path);CHKERRQ(ierr);
  /* Register Events */
  /* Register Events */
  ierr = PetscLogEventRegister("STSetUp",ST_COOKIE,&ST_SetUp);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("STSetUp",ST_CLASSID,&ST_SetUp);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("STApply",ST_COOKIE,&ST_Apply);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("STApply",ST_CLASSID,&ST_Apply);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("STApplyTranspose",ST_COOKIE,&ST_ApplyTranspose); CHKERRQ(ierr);
  ierr = PetscLogEventRegister("STApplyTranspose",ST_CLASSID,&ST_ApplyTranspose); CHKERRQ(ierr);
  /* Process info exclusions */
  /* Process info exclusions */
  ierr = PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);CHKERRQ(ierr);
  ierr = PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
  if (opt) {
  if (opt) {
    ierr = PetscStrstr(logList, "st", &className);CHKERRQ(ierr);
    ierr = PetscStrstr(logList, "st", &className);CHKERRQ(ierr);
    if (className) {
    if (className) {
      ierr = PetscInfoDeactivateClass(ST_COOKIE);CHKERRQ(ierr);
      ierr = PetscInfoDeactivateClass(ST_CLASSID);CHKERRQ(ierr);
    }
    }
  }
  }
  /* Process summary exclusions */
  /* Process summary exclusions */
  ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
  ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
  if (opt) {
  if (opt) {
    ierr = PetscStrstr(logList, "st", &className);CHKERRQ(ierr);
    ierr = PetscStrstr(logList, "st", &className);CHKERRQ(ierr);
    if (className) {
    if (className) {
      ierr = PetscLogEventDeactivateClass(ST_COOKIE);CHKERRQ(ierr);
      ierr = PetscLogEventDeactivateClass(ST_CLASSID);CHKERRQ(ierr);
    }
    }
  }
  }
  ierr = PetscRegisterFinalize(STFinalizePackage);CHKERRQ(ierr);
  ierr = PetscRegisterFinalize(STFinalizePackage);CHKERRQ(ierr);
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
Line 113... Line 113...
PetscErrorCode STDestroy(ST st)
PetscErrorCode STDestroy(ST st)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  if (--((PetscObject)st)->refct > 0) PetscFunctionReturn(0);
  if (--((PetscObject)st)->refct > 0) PetscFunctionReturn(0);
 
 
  /* if memory was published with AMS then destroy it */
  /* if memory was published with AMS then destroy it */
  ierr = PetscObjectDepublish(st);CHKERRQ(ierr);
  ierr = PetscObjectDepublish(st);CHKERRQ(ierr);
 
 
Line 161... Line 161...
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidPointer(newst,2);
  PetscValidPointer(newst,2);
  *newst = 0;
  *newst = 0;
 
 
  ierr = PetscHeaderCreate(st,_p_ST,struct _STOps,ST_COOKIE,-1,"ST",comm,STDestroy,STView);CHKERRQ(ierr);
  ierr = PetscHeaderCreate(st,_p_ST,struct _STOps,ST_CLASSID,-1,"ST",comm,STDestroy,STView);CHKERRQ(ierr);
  ierr = PetscMemzero(st->ops,sizeof(struct _STOps));CHKERRQ(ierr);
  ierr = PetscMemzero(st->ops,sizeof(struct _STOps));CHKERRQ(ierr);
 
 
  st->A                   = 0;
  st->A                   = 0;
  st->B                   = 0;
  st->B                   = 0;
  st->sigma               = 0.0;
  st->sigma               = 0.0;
Line 212... Line 212...
 @*/
 @*/
PetscErrorCode STSetOperators(ST st,Mat A,Mat B)
PetscErrorCode STSetOperators(ST st,Mat A,Mat B)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  PetscValidHeaderSpecific(A,MAT_COOKIE,2);
  PetscValidHeaderSpecific(A,MAT_CLASSID,2);
  if (B) PetscValidHeaderSpecific(B,MAT_COOKIE,3);
  if (B) PetscValidHeaderSpecific(B,MAT_CLASSID,3);
  PetscCheckSameComm(st,1,A,2);
  PetscCheckSameComm(st,1,A,2);
  if (B) PetscCheckSameComm(st,1,B,3);
  if (B) PetscCheckSameComm(st,1,B,3);
  ierr = PetscObjectReference((PetscObject)A);CHKERRQ(ierr);
  ierr = PetscObjectReference((PetscObject)A);CHKERRQ(ierr);
  if (st->A) { ierr = MatDestroy(st->A);CHKERRQ(ierr); }
  if (st->A) { ierr = MatDestroy(st->A);CHKERRQ(ierr); }
  st->A = A;
  st->A = A;
Line 248... Line 248...
.seealso: STSetOperators()
.seealso: STSetOperators()
@*/
@*/
PetscErrorCode STGetOperators(ST st,Mat *A,Mat *B)
PetscErrorCode STGetOperators(ST st,Mat *A,Mat *B)
{
{
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  if (A) *A = st->A;
  if (A) *A = st->A;
  if (B) *B = st->B;
  if (B) *B = st->B;
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
Line 277... Line 277...
PetscErrorCode STSetShift(ST st,PetscScalar shift)
PetscErrorCode STSetShift(ST st,PetscScalar shift)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  if (st->sigma != shift) {
  if (st->sigma != shift) {
    if (st->ops->setshift) {
    if (st->ops->setshift) {
      ierr = (*st->ops->setshift)(st,shift); CHKERRQ(ierr);
      ierr = (*st->ops->setshift)(st,shift); CHKERRQ(ierr);
    }
    }
  }
  }
Line 307... Line 307...
 
 
@*/
@*/
PetscErrorCode STGetShift(ST st,PetscScalar* shift)
PetscErrorCode STGetShift(ST st,PetscScalar* shift)
{
{
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  if (shift)  *shift = st->sigma;
  if (shift)  *shift = st->sigma;
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
#undef __FUNCT__  
#undef __FUNCT__  
Line 330... Line 330...
 
 
@*/
@*/
PetscErrorCode STSetDefaultShift(ST st,PetscScalar defaultshift)
PetscErrorCode STSetDefaultShift(ST st,PetscScalar defaultshift)
{
{
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  st->defsigma = defaultshift;
  st->defsigma = defaultshift;
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
#undef __FUNCT__  
#undef __FUNCT__  
Line 361... Line 361...
PetscErrorCode STSetBalanceMatrix(ST st,Vec D)
PetscErrorCode STSetBalanceMatrix(ST st,Vec D)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  PetscValidHeaderSpecific(D,VEC_COOKIE,2);
  PetscValidHeaderSpecific(D,VEC_CLASSID,2);
  PetscCheckSameComm(st,1,D,2);
  PetscCheckSameComm(st,1,D,2);
  ierr = PetscObjectReference((PetscObject)D);CHKERRQ(ierr);
  ierr = PetscObjectReference((PetscObject)D);CHKERRQ(ierr);
  if (st->D) {
  if (st->D) {
    ierr = VecDestroy(st->D); CHKERRQ(ierr);
    ierr = VecDestroy(st->D); CHKERRQ(ierr);
  }
  }
Line 398... Line 398...
.seealso: STSetBalanceMatrix()
.seealso: STSetBalanceMatrix()
@*/
@*/
PetscErrorCode STGetBalanceMatrix(ST st,Vec *D)
PetscErrorCode STGetBalanceMatrix(ST st,Vec *D)
{
{
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  PetscValidPointer(D,2);
  PetscValidPointer(D,2);
  *D = st->D;
  *D = st->D;
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
Line 430... Line 430...
PetscErrorCode STSetOptionsPrefix(ST st,const char *prefix)
PetscErrorCode STSetOptionsPrefix(ST st,const char *prefix)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  ierr = PetscObjectSetOptionsPrefix((PetscObject)st,prefix);CHKERRQ(ierr);
  ierr = PetscObjectSetOptionsPrefix((PetscObject)st,prefix);CHKERRQ(ierr);
  ierr = KSPSetOptionsPrefix(st->ksp,prefix);CHKERRQ(ierr);
  ierr = KSPSetOptionsPrefix(st->ksp,prefix);CHKERRQ(ierr);
  ierr = KSPAppendOptionsPrefix(st->ksp,"st_");CHKERRQ(ierr);
  ierr = KSPAppendOptionsPrefix(st->ksp,"st_");CHKERRQ(ierr);
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
Line 463... Line 463...
PetscErrorCode STAppendOptionsPrefix(ST st,const char *prefix)
PetscErrorCode STAppendOptionsPrefix(ST st,const char *prefix)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  ierr = PetscObjectAppendOptionsPrefix((PetscObject)st,prefix);CHKERRQ(ierr);
  ierr = PetscObjectAppendOptionsPrefix((PetscObject)st,prefix);CHKERRQ(ierr);
  ierr = KSPSetOptionsPrefix(st->ksp,((PetscObject)st)->prefix);CHKERRQ(ierr);
  ierr = KSPSetOptionsPrefix(st->ksp,((PetscObject)st)->prefix);CHKERRQ(ierr);
  ierr = KSPAppendOptionsPrefix(st->ksp,"st_");CHKERRQ(ierr);
  ierr = KSPAppendOptionsPrefix(st->ksp,"st_");CHKERRQ(ierr);
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
Line 496... Line 496...
PetscErrorCode STGetOptionsPrefix(ST st,const char *prefix[])
PetscErrorCode STGetOptionsPrefix(ST st,const char *prefix[])
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  ierr = PetscObjectGetOptionsPrefix((PetscObject)st, prefix);CHKERRQ(ierr);
  ierr = PetscObjectGetOptionsPrefix((PetscObject)st, prefix);CHKERRQ(ierr);
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
#undef __FUNCT__  
#undef __FUNCT__  
Line 536... Line 536...
  const char*       str;
  const char*       str;
  PetscTruth        isascii,isstring;
  PetscTruth        isascii,isstring;
  PetscViewerFormat format;
  PetscViewerFormat format;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(st,ST_COOKIE,1);
  PetscValidHeaderSpecific(st,ST_CLASSID,1);
  if (!viewer) viewer = PETSC_VIEWER_STDOUT_(((PetscObject)st)->comm);
  if (!viewer) viewer = PETSC_VIEWER_STDOUT_(((PetscObject)st)->comm);
  PetscValidHeaderSpecific(viewer,PETSC_VIEWER_COOKIE,2);
  PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2);
  PetscCheckSameComm(st,1,viewer,2);
  PetscCheckSameComm(st,1,viewer,2);
 
 
  ierr = PetscTypeCompare((PetscObject)viewer,PETSC_VIEWER_ASCII,&isascii);CHKERRQ(ierr);
  ierr = PetscTypeCompare((PetscObject)viewer,PETSC_VIEWER_ASCII,&isascii);CHKERRQ(ierr);
  ierr = PetscTypeCompare((PetscObject)viewer,PETSC_VIEWER_STRING,&isstring);CHKERRQ(ierr);
  ierr = PetscTypeCompare((PetscObject)viewer,PETSC_VIEWER_STRING,&isstring);CHKERRQ(ierr);
  if (isascii) {
  if (isascii) {