Subversion Repositories slepc-dev

Rev

Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2212 Rev 2213
Line 22... Line 22...
*/
*/
 
 
#include "private/svdimpl.h"      /*I "slepcsvd.h" I*/
#include "private/svdimpl.h"      /*I "slepcsvd.h" I*/
 
 
PetscFList SVDList = 0;
PetscFList SVDList = 0;
PetscCookie SVD_COOKIE = 0;
PetscClassId SVD_CLASSID = 0;
PetscLogEvent SVD_SetUp = 0, SVD_Solve = 0, SVD_Dense = 0;
PetscLogEvent SVD_SetUp = 0, SVD_Solve = 0, SVD_Dense = 0;
static PetscTruth SVDPackageInitialized = PETSC_FALSE;
static PetscTruth SVDPackageInitialized = PETSC_FALSE;
 
 
#undef __FUNCT__  
#undef __FUNCT__  
#define __FUNCT__ "SVDFinalizePackage"
#define __FUNCT__ "SVDFinalizePackage"
Line 69... Line 69...
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  if (SVDPackageInitialized) PetscFunctionReturn(0);
  if (SVDPackageInitialized) PetscFunctionReturn(0);
  SVDPackageInitialized = PETSC_TRUE;
  SVDPackageInitialized = PETSC_TRUE;
  /* Register Classes */
  /* Register Classes */
  ierr = PetscCookieRegister("Singular Value Solver",&SVD_COOKIE);CHKERRQ(ierr);
  ierr = PetscClassIdRegister("Singular Value Solver",&SVD_CLASSID);CHKERRQ(ierr);
  /* Register Constructors */
  /* Register Constructors */
  ierr = SVDRegisterAll(path);CHKERRQ(ierr);
  ierr = SVDRegisterAll(path);CHKERRQ(ierr);
  /* Register Events */
  /* Register Events */
  ierr = PetscLogEventRegister("SVDSetUp",SVD_COOKIE,&SVD_SetUp);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("SVDSetUp",SVD_CLASSID,&SVD_SetUp);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("SVDSolve",SVD_COOKIE,&SVD_Solve);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("SVDSolve",SVD_CLASSID,&SVD_Solve);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("SVDDense",SVD_COOKIE,&SVD_Dense);CHKERRQ(ierr);
  ierr = PetscLogEventRegister("SVDDense",SVD_CLASSID,&SVD_Dense);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, "svd", &className);CHKERRQ(ierr);
    ierr = PetscStrstr(logList, "svd", &className);CHKERRQ(ierr);
    if (className) {
    if (className) {
      ierr = PetscInfoDeactivateClass(SVD_COOKIE);CHKERRQ(ierr);
      ierr = PetscInfoDeactivateClass(SVD_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, "svd", &className);CHKERRQ(ierr);
    ierr = PetscStrstr(logList, "svd", &className);CHKERRQ(ierr);
    if (className) {
    if (className) {
      ierr = PetscLogEventDeactivateClass(SVD_COOKIE);CHKERRQ(ierr);
      ierr = PetscLogEventDeactivateClass(SVD_CLASSID);CHKERRQ(ierr);
    }
    }
  }
  }
  ierr = PetscRegisterFinalize(SVDFinalizePackage);CHKERRQ(ierr);
  ierr = PetscRegisterFinalize(SVDFinalizePackage);CHKERRQ(ierr);
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
Line 132... Line 132...
  PetscErrorCode ierr;
  PetscErrorCode ierr;
  const SVDType  type;
  const SVDType  type;
  PetscTruth     isascii;
  PetscTruth     isascii;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
  PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
  if (!viewer) viewer = PETSC_VIEWER_STDOUT_(((PetscObject)svd)->comm);
  if (!viewer) viewer = PETSC_VIEWER_STDOUT_(((PetscObject)svd)->comm);
  PetscValidHeaderSpecific(viewer,PETSC_VIEWER_COOKIE,2);
  PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2);
  PetscCheckSameComm(svd,1,viewer,2);
  PetscCheckSameComm(svd,1,viewer,2);
 
 
  ierr = PetscTypeCompare((PetscObject)viewer,PETSC_VIEWER_ASCII,&isascii);CHKERRQ(ierr);
  ierr = PetscTypeCompare((PetscObject)viewer,PETSC_VIEWER_ASCII,&isascii);CHKERRQ(ierr);
  if (isascii) {
  if (isascii) {
    ierr = PetscViewerASCIIPrintf(viewer,"SVD Object:\n");CHKERRQ(ierr);
    ierr = PetscViewerASCIIPrintf(viewer,"SVD Object:\n");CHKERRQ(ierr);
Line 213... Line 213...
  SVD            svd;
  SVD            svd;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidPointer(outsvd,2);
  PetscValidPointer(outsvd,2);
 
 
  ierr = PetscHeaderCreate(svd,_p_SVD,struct _SVDOps,SVD_COOKIE,-1,"SVD",comm,SVDDestroy,SVDView);CHKERRQ(ierr);
  ierr = PetscHeaderCreate(svd,_p_SVD,struct _SVDOps,SVD_CLASSID,-1,"SVD",comm,SVDDestroy,SVDView);CHKERRQ(ierr);
  *outsvd = svd;
  *outsvd = svd;
 
 
  ierr = PetscMemzero(svd->ops,sizeof(struct _SVDOps));CHKERRQ(ierr);
  ierr = PetscMemzero(svd->ops,sizeof(struct _SVDOps));CHKERRQ(ierr);
 
 
  svd->OP          = PETSC_NULL;
  svd->OP          = PETSC_NULL;
Line 275... Line 275...
  PetscErrorCode ierr;
  PetscErrorCode ierr;
  PetscInt       i;
  PetscInt       i;
  PetscScalar    *p;
  PetscScalar    *p;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
  PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
  if (--((PetscObject)svd)->refct > 0) PetscFunctionReturn(0);
  if (--((PetscObject)svd)->refct > 0) PetscFunctionReturn(0);
 
 
  /* if memory was published with AMS then destroy it */
  /* if memory was published with AMS then destroy it */
  ierr = PetscObjectDepublish(svd);CHKERRQ(ierr);
  ierr = PetscObjectDepublish(svd);CHKERRQ(ierr);
 
 
Line 325... Line 325...
PetscErrorCode SVDDestroy_Default(SVD svd)
PetscErrorCode SVDDestroy_Default(SVD svd)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
  PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
  ierr = PetscFree(svd->data);CHKERRQ(ierr);
  ierr = PetscFree(svd->data);CHKERRQ(ierr);
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
#undef __FUNCT__  
#undef __FUNCT__  
Line 367... Line 367...
{
{
  PetscErrorCode ierr,(*r)(SVD);
  PetscErrorCode ierr,(*r)(SVD);
  PetscTruth match;
  PetscTruth match;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
  PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
  PetscValidCharPointer(type,2);
  PetscValidCharPointer(type,2);
 
 
  ierr = PetscTypeCompare((PetscObject)svd,type,&match);CHKERRQ(ierr);
  ierr = PetscTypeCompare((PetscObject)svd,type,&match);CHKERRQ(ierr);
  if (match) PetscFunctionReturn(0);
  if (match) PetscFunctionReturn(0);
 
 
Line 411... Line 411...
.seealso: SVDSetType()
.seealso: SVDSetType()
@*/
@*/
PetscErrorCode SVDGetType(SVD svd,const SVDType *type)
PetscErrorCode SVDGetType(SVD svd,const SVDType *type)
{
{
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
  PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
  PetscValidPointer(type,2);
  PetscValidPointer(type,2);
  *type = ((PetscObject)svd)->type_name;
  *type = ((PetscObject)svd)->type_name;
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}
 
 
Line 523... Line 523...
PetscErrorCode SVDSetIP(SVD svd,IP ip)
PetscErrorCode SVDSetIP(SVD svd,IP ip)
{
{
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
  PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
  PetscValidHeaderSpecific(ip,IP_COOKIE,2);
  PetscValidHeaderSpecific(ip,IP_CLASSID,2);
  PetscCheckSameComm(svd,1,ip,2);
  PetscCheckSameComm(svd,1,ip,2);
  ierr = PetscObjectReference((PetscObject)ip);CHKERRQ(ierr);
  ierr = PetscObjectReference((PetscObject)ip);CHKERRQ(ierr);
  ierr = IPDestroy(svd->ip); CHKERRQ(ierr);
  ierr = IPDestroy(svd->ip); CHKERRQ(ierr);
  svd->ip = ip;
  svd->ip = ip;
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
Line 553... Line 553...
.seealso: SVDSetIP()
.seealso: SVDSetIP()
@*/
@*/
PetscErrorCode SVDGetIP(SVD svd,IP *ip)
PetscErrorCode SVDGetIP(SVD svd,IP *ip)
{
{
  PetscFunctionBegin;
  PetscFunctionBegin;
  PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
  PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
  PetscValidPointer(ip,2);
  PetscValidPointer(ip,2);
  *ip = svd->ip;
  *ip = svd->ip;
  PetscFunctionReturn(0);
  PetscFunctionReturn(0);
}
}