本文整理汇总了C++中PetscLogObjectMemory函数的典型用法代码示例。如果您正苦于以下问题:C++ PetscLogObjectMemory函数的具体用法?C++ PetscLogObjectMemory怎么用?C++ PetscLogObjectMemory使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PetscLogObjectMemory函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TaoGPCGCreateLineSearch
int TaoGPCGCreateLineSearch(TAO_SOLVER tao)
{
int info;
TAO_GPCGLINESEARCH *neP;
TaoFunctionBegin;
info = TaoNew(TAO_GPCGLINESEARCH,&neP);CHKERRQ(info);
info = PetscLogObjectMemory(tao,sizeof(TAO_GPCGLINESEARCH)); CHKERRQ(info);
neP->ftol = 0.05;
neP->rtol = 0.0;
neP->gtol = 0.0;
neP->stepmin = 1.0e-20;
neP->stepmax = 1.0e+20;
neP->nfev = 0;
neP->bracket = 0;
neP->infoc = 1;
neP->maxfev = 30;
neP->setupcalled = 0;
info = TaoSetLineSearch(tao,0,
TaoGPCGSetOptionsLineSearch,
TaoGPCGApplyLineSearch,
TaoGPCGViewLineSearch,
TaoGPCGDestroyLineSearch,
(void *) neP);CHKERRQ(info);
TaoFunctionReturn(0);
}
示例2: KSPSetUp_PIPEFCG
PetscErrorCode KSPSetUp_PIPEFCG(KSP ksp)
{
PetscErrorCode ierr;
KSP_PIPEFCG *pipefcg;
const PetscInt nworkstd = 5;
PetscFunctionBegin;
pipefcg = (KSP_PIPEFCG*)ksp->data;
/* Allocate "standard" work vectors (not including the basis and transformed basis vectors) */
ierr = KSPSetWorkVecs(ksp,nworkstd);CHKERRQ(ierr);
/* Allocated space for pointers to additional work vectors
note that mmax is the number of previous directions, so we add 1 for the current direction,
and an extra 1 for the prealloc (which might be empty) */
ierr = PetscMalloc4(pipefcg->mmax+1,&(pipefcg->Pvecs),pipefcg->mmax+1,&(pipefcg->pPvecs),pipefcg->mmax+1,&(pipefcg->Svecs),pipefcg->mmax+1,&(pipefcg->pSvecs));CHKERRQ(ierr);
ierr = PetscMalloc4(pipefcg->mmax+1,&(pipefcg->Qvecs),pipefcg->mmax+1,&(pipefcg->pQvecs),pipefcg->mmax+1,&(pipefcg->ZETAvecs),pipefcg->mmax+1,&(pipefcg->pZETAvecs));CHKERRQ(ierr);
ierr = PetscMalloc4(pipefcg->mmax+1,&(pipefcg->Pold),pipefcg->mmax+1,&(pipefcg->Sold),pipefcg->mmax+1,&(pipefcg->Qold),pipefcg->mmax+1,&(pipefcg->ZETAold));CHKERRQ(ierr);
ierr = PetscMalloc1(pipefcg->mmax+1,&(pipefcg->chunksizes));CHKERRQ(ierr);
ierr = PetscMalloc3(pipefcg->mmax+2,&(pipefcg->dots),pipefcg->mmax+1,&(pipefcg->etas),pipefcg->mmax+2,&(pipefcg->redux));CHKERRQ(ierr);
/* If the requested number of preallocated vectors is greater than mmax reduce nprealloc */
if(pipefcg->nprealloc > pipefcg->mmax+1){
ierr = PetscInfo2(NULL,"Requested nprealloc=%d is greater than m_max+1=%d. Resetting nprealloc = m_max+1.\n",pipefcg->nprealloc, pipefcg->mmax+1);CHKERRQ(ierr);
}
/* Preallocate additional work vectors */
ierr = KSPAllocateVectors_PIPEFCG(ksp,pipefcg->nprealloc,pipefcg->nprealloc);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)ksp,(pipefcg->mmax+1)*4*sizeof(Vec*)+(pipefcg->mmax+1)*4*sizeof(Vec**)+(pipefcg->mmax+1)*4*sizeof(Vec*)+
(pipefcg->mmax+1)*sizeof(PetscInt)+(pipefcg->mmax+2)*sizeof(Vec*)+(pipefcg->mmax+2)*sizeof(PetscScalar)+(pipefcg->mmax+1)*sizeof(PetscReal));CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例3: PetscDrawCreate_TikZ
PETSC_EXTERN PetscErrorCode PetscDrawCreate_TikZ(PetscDraw draw)
{
PetscDraw_TikZ *win;
PetscErrorCode ierr;
PetscFunctionBegin;
ierr = PetscMemcpy(draw->ops,&DvOps,sizeof(DvOps));CHKERRQ(ierr);
ierr = PetscNew(PetscDraw_TikZ,&win);CHKERRQ(ierr);
ierr = PetscLogObjectMemory(draw,sizeof(PetscDraw_TikZ));CHKERRQ(ierr);
draw->data = (void*) win;
if (draw->title) {
ierr = PetscStrallocpy(draw->title,&win->filename);CHKERRQ(ierr);
} else {
const char *fname;
ierr = PetscObjectGetName((PetscObject)draw,&fname);CHKERRQ(ierr);
ierr = PetscStrallocpy(fname,&win->filename);CHKERRQ(ierr);
}
ierr = PetscFOpen(PetscObjectComm((PetscObject)draw),win->filename,"w",&win->fd);CHKERRQ(ierr);
ierr = PetscFPrintf(PetscObjectComm((PetscObject)draw),win->fd,TikZ_BEGIN_DOCUMENT);CHKERRQ(ierr);
ierr = PetscFPrintf(PetscObjectComm((PetscObject)draw),win->fd,TikZ_BEGIN_FRAME);CHKERRQ(ierr);
win->written = PETSC_FALSE;
PetscFunctionReturn(0);
}
示例4: BVAllocateWork_Private
PetscErrorCode BVAllocateWork_Private(BV bv,PetscInt s)
{
PetscErrorCode ierr;
PetscFunctionBegin;
if (s>bv->lwork) {
ierr = PetscFree(bv->work);CHKERRQ(ierr);
ierr = PetscMalloc1(s,&bv->work);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)bv,(s-bv->lwork)*sizeof(PetscScalar));CHKERRQ(ierr);
bv->lwork = s;
}
PetscFunctionReturn(0);
}
示例5: KSPSetUp_LCD
PetscErrorCode KSPSetUp_LCD(KSP ksp)
{
KSP_LCD *lcd = (KSP_LCD*)ksp->data;
PetscErrorCode ierr;
PetscInt restart = lcd->restart;
PetscFunctionBegin;
/* get work vectors needed by LCD */
ierr = KSPSetWorkVecs(ksp,2);CHKERRQ(ierr);
ierr = VecDuplicateVecs(ksp->work[0],restart+1,&lcd->P);CHKERRQ(ierr);
ierr = VecDuplicateVecs(ksp->work[0], restart + 1, &lcd->Q);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)ksp,2*(restart+2)*sizeof(Vec));CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例6: SVDAllocateSolution
/*@
SVDAllocateSolution - Allocate memory storage for common variables such
as the singular values and the basis vectors.
Collective on SVD
Input Parameters:
+ svd - eigensolver context
- extra - number of additional positions, used for methods that require a
working basis slightly larger than ncv
Developers Notes:
This is PETSC_EXTERN because it may be required by user plugin SVD
implementations.
This is called at setup after setting the value of ncv and the flag leftbasis.
Level: developer
@*/
PetscErrorCode SVDAllocateSolution(SVD svd,PetscInt extra)
{
PetscErrorCode ierr;
PetscInt oldsize,requested;
Vec tr,tl;
PetscFunctionBegin;
requested = svd->ncv + extra;
/* oldsize is zero if this is the first time setup is called */
ierr = BVGetSizes(svd->V,NULL,NULL,&oldsize);CHKERRQ(ierr);
/* allocate sigma */
if (requested != oldsize) {
if (oldsize) {
ierr = PetscFree3(svd->sigma,svd->perm,svd->errest);CHKERRQ(ierr);
}
ierr = PetscMalloc3(requested,&svd->sigma,requested,&svd->perm,requested,&svd->errest);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)svd,PetscMax(0,requested-oldsize)*(2*sizeof(PetscReal)+sizeof(PetscInt)));CHKERRQ(ierr);
}
/* allocate V */
if (!svd->V) { ierr = SVDGetBV(svd,&svd->V,NULL);CHKERRQ(ierr); }
if (!oldsize) {
if (!((PetscObject)(svd->V))->type_name) {
ierr = BVSetType(svd->V,BVSVEC);CHKERRQ(ierr);
}
ierr = SVDMatGetVecs(svd,&tr,NULL);CHKERRQ(ierr);
ierr = BVSetSizesFromVec(svd->V,tr,requested);CHKERRQ(ierr);
ierr = VecDestroy(&tr);CHKERRQ(ierr);
} else {
ierr = BVResize(svd->V,requested,PETSC_FALSE);CHKERRQ(ierr);
}
/* allocate U */
if (svd->leftbasis) {
if (!svd->U) { ierr = SVDGetBV(svd,NULL,&svd->U);CHKERRQ(ierr); }
if (!oldsize) {
if (!((PetscObject)(svd->U))->type_name) {
ierr = BVSetType(svd->U,BVSVEC);CHKERRQ(ierr);
}
ierr = SVDMatGetVecs(svd,NULL,&tl);CHKERRQ(ierr);
ierr = BVSetSizesFromVec(svd->U,tl,requested);CHKERRQ(ierr);
ierr = VecDestroy(&tl);CHKERRQ(ierr);
} else {
ierr = BVResize(svd->U,requested,PETSC_FALSE);CHKERRQ(ierr);
}
}
PetscFunctionReturn(0);
}
示例7: PetscDrawHGDestroy
/*@C
PetscDrawHGCreate - Creates a histogram data structure.
Collective over PetscDraw
Input Parameters:
+ draw - The window where the graph will be made
- bins - The number of bins to use
Output Parameters:
. hist - The histogram context
Level: intermediate
Concepts: histogram^creating
.seealso: PetscDrawHGDestroy()
@*/
PetscErrorCode PetscDrawHGCreate(PetscDraw draw, int bins, PetscDrawHG *hist)
{
PetscBool isnull;
PetscDrawHG h;
PetscErrorCode ierr;
PetscFunctionBegin;
PetscValidHeaderSpecific(draw, PETSC_DRAW_CLASSID,1);
PetscValidLogicalCollectiveInt(draw,bins,2);
PetscValidPointer(hist,3);
ierr = PetscDrawIsNull(draw,&isnull);CHKERRQ(ierr);
if (isnull) {*hist = NULL; PetscFunctionReturn(0);}
ierr = PetscHeaderCreate(h, PETSC_DRAWHG_CLASSID, "PetscDrawHG", "Histogram", "Draw", PetscObjectComm((PetscObject)draw), PetscDrawHGDestroy, NULL);CHKERRQ(ierr);
ierr = PetscLogObjectParent((PetscObject)draw,(PetscObject)h);CHKERRQ(ierr);
ierr = PetscObjectReference((PetscObject)draw);CHKERRQ(ierr);
h->win = draw;
h->view = NULL;
h->destroy = NULL;
h->color = PETSC_DRAW_GREEN;
h->xmin = PETSC_MAX_REAL;
h->xmax = PETSC_MIN_REAL;
h->ymin = 0.;
h->ymax = 1.;
h->numBins = bins;
h->maxBins = bins;
ierr = PetscMalloc1(h->maxBins,&h->bins);CHKERRQ(ierr);
h->numValues = 0;
h->maxValues = CHUNKSIZE;
h->calcStats = PETSC_FALSE;
h->integerBins = PETSC_FALSE;
ierr = PetscMalloc1(h->maxValues,&h->values);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)h,(h->maxBins + h->maxValues)*sizeof(PetscReal));CHKERRQ(ierr);
ierr = PetscDrawAxisCreate(draw,&h->axis);CHKERRQ(ierr);
ierr = PetscLogObjectParent((PetscObject)h,(PetscObject)h->axis);CHKERRQ(ierr);
*hist = h;
PetscFunctionReturn(0);
}
示例8: KSPCreate_BSSCR
EXTERN_C_BEGIN
#undef __FUNCT__
#define __FUNCT__ "KSPCreate_BSSCR"
PetscErrorCode PETSCKSP_DLLEXPORT KSPCreate_BSSCR(KSP ksp)
{
KSP_BSSCR *bsscr;
PetscErrorCode ierr;
PetscFunctionBegin;
ierr = Stg_PetscNew(KSP_BSSCR,&bsscr);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)ksp,sizeof(KSP_BSSCR));CHKERRQ(ierr);
//ierr = PetscNewLog(ksp,KSP_BSSCR,&bsscr);CHKERRQ(ierr);
ksp->data = (void*)bsscr;
#if ( (PETSC_VERSION_MAJOR >= 3) && (PETSC_VERSION_MINOR >= 2 ) )
ierr = KSPSetSupportedNorm(ksp,KSP_NORM_PRECONDITIONED,PC_LEFT,0);CHKERRQ(ierr);
ierr = KSPSetSupportedNorm(ksp,KSP_NORM_UNPRECONDITIONED,PC_LEFT,1);CHKERRQ(ierr);
ierr = KSPSetSupportedNorm(ksp,KSP_NORM_NATURAL,PC_LEFT,0);CHKERRQ(ierr);
ierr = KSPSetSupportedNorm(ksp,KSP_NORM_NONE,PC_LEFT,1);CHKERRQ(ierr);
#endif
/*
Sets the functions that are associated with this data structure
(in C++ this is the same as defining virtual functions)
*/
ksp->ops->setup = KSPSetUp_BSSCR;
ksp->ops->solve = KSPSolve_BSSCR;
ksp->ops->destroy = KSPDestroy_BSSCR;
ksp->ops->view = KSPView_BSSCR;
ksp->ops->setfromoptions = KSPSetFromOptions_BSSCR;
ksp->ops->buildsolution = KSPDefaultBuildSolution;
ksp->ops->buildresidual = KSPDefaultBuildResidual;
// bsscr->k2type=K2_GMG;
bsscr->k2type = 0;
bsscr->do_scaling = PETSC_FALSE;
bsscr->scaled = PETSC_FALSE;
bsscr->K2built = PETSC_FALSE;
bsscr->check_cb_pressureNS = PETSC_FALSE;/* checker board nullspace */
bsscr->check_const_pressureNS = PETSC_FALSE;/* constant nullspace */
bsscr->check_pressureNS = PETSC_FALSE;/* is true if either of above two are true */
bsscr->t = NULL;/* null space vectors for pressure */
bsscr->v = NULL;
bsscr->nstol = 1e-7;/* null space detection tolerance */
bsscr->uStar = NULL;
bsscr->been_here = 0;
PetscFunctionReturn(0);
}
示例9: Collective
/*@
PetscDrawHGSetNumberBins - Change the number of bins that are to be drawn.
Not Collective (ignored except on processor 0 of PetscDrawHG)
Input Parameter:
+ hist - The histogram context.
- bins - The number of bins.
Level: intermediate
Concepts: histogram^setting number of bins
@*/
PetscErrorCode PetscDrawHGSetNumberBins(PetscDrawHG hist, int bins)
{
PetscErrorCode ierr;
PetscFunctionBegin;
if (!hist) PetscFunctionReturn(0);
PetscValidHeaderSpecific(hist,PETSC_DRAWHG_CLASSID,1);
PetscValidLogicalCollectiveInt(hist,bins,2);
if (hist->maxBins < bins) {
ierr = PetscFree(hist->bins);CHKERRQ(ierr);
ierr = PetscMalloc1(bins, &hist->bins);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)hist, (bins - hist->maxBins) * sizeof(PetscReal));CHKERRQ(ierr);
hist->maxBins = bins;
}
hist->numBins = bins;
PetscFunctionReturn(0);
}
示例10: CharacteristicCreate_DA
PETSC_EXTERN PetscErrorCode CharacteristicCreate_DA(Characteristic c)
{
Characteristic_DA *da;
PetscErrorCode ierr;
PetscFunctionBegin;
ierr = PetscNew(&da);CHKERRQ(ierr);
ierr = PetscMemzero(da, sizeof(Characteristic_DA));CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)c, sizeof(Characteristic_DA));CHKERRQ(ierr);
c->data = (void*) da;
c->ops->setup = CharacteristicSetUp_DA;
c->ops->destroy = CharacteristicDestroy_DA;
c->ops->view = CharacteristicView_DA;
da->dummy = 0;
PetscFunctionReturn(0);
}
示例11: BSSCR_PCCreate_GtKG
PetscErrorCode BSSCR_PCCreate_GtKG( PC pc )
{
PC_GtKG pc_data;
PetscErrorCode ierr;
/* create memory for ctx */
ierr = Stg_PetscNew( _PC_GtKG,&pc_data);CHKERRQ(ierr);
/* init ctx */
pc_data->K = PETSC_NULL;
pc_data->G = PETSC_NULL;
pc_data->M = PETSC_NULL;
pc_data->GtG = PETSC_NULL;
pc_data->form_GtG = PETSC_TRUE;
pc_data->ksp = PETSC_NULL;
pc_data->monitor_activated = PETSC_FALSE;
pc_data->monitor_rhs_consistency = PETSC_FALSE;
pc_data->s = PETSC_NULL;
pc_data->t = PETSC_NULL;
pc_data->X = PETSC_NULL;
pc_data->inv_diag_M = PETSC_NULL;
/* create internals */
KSPCreate( ((PetscObject)pc)->comm, &pc_data->ksp );
/* set ctx onto pc */
pc->data = (void*)pc_data;
ierr = PetscLogObjectMemory(pc,sizeof(_PC_GtKG));CHKERRQ(ierr);
/* define operations */
pc->ops->setup = BSSCR_PCSetUp_GtKG;
pc->ops->view = BSSCR_PCView_GtKG;
pc->ops->destroy = BSSCR_PCDestroy_GtKG;
pc->ops->setfromoptions = BSSCR_PCSetFromOptions_GtKG;
pc->ops->apply = BSSCR_PCApply_GtKG;
pc->ops->applytranspose = BSSCR_PCApplyTranspose_GtKG;
PetscFunctionReturn(0);
}
示例12: BSSCR_PCCreate_ScGtKG
PetscErrorCode BSSCR_PCCreate_ScGtKG( PC pc )
{
PC_SC_GtKG pc_data;
PetscErrorCode ierr;
/* create memory for ctx */
ierr = Stg_PetscNew( _PC_SC_GtKG,&pc_data);CHKERRQ(ierr);
/* init ctx */
pc_data->F = PETSC_NULL;
pc_data->Bt = PETSC_NULL;
pc_data->B = PETSC_NULL;
pc_data->BBt_has_cnst_nullspace = PETSC_FALSE;
pc_data->ksp_BBt = PETSC_NULL;
pc_data->monitor_activated = PETSC_FALSE;
pc_data->X1 = PETSC_NULL;
pc_data->X2 = PETSC_NULL;
pc_data->Y1 = PETSC_NULL;
pc_data->Y2 = PETSC_NULL;
pc_data->s = PETSC_NULL;
pc_data->t = PETSC_NULL;
pc_data->X = PETSC_NULL;
/* set ctx onto pc */
pc->data = (void*)pc_data;
ierr = PetscLogObjectMemory(pc,sizeof(_PC_SC_GtKG));CHKERRQ(ierr);
/* define operations */
pc->ops->setup = BSSCR_PCSetUp_ScGtKG;
pc->ops->view = BSSCR_PCView_ScGtKG;
pc->ops->destroy = BSSCR_PCDestroy_ScGtKG;
pc->ops->setfromoptions = BSSCR_PCSetFromOptions_ScGtKG;
pc->ops->apply = BSSCR_PCApply_ScGtKG;
pc->ops->applytranspose = BSSCR_PCApplyTranspose_ScGtKG;
PetscFunctionReturn(0);
}
示例13: KSPFischerGuessCreate_Method2
PetscErrorCode KSPFischerGuessCreate_Method2(KSP ksp,int maxl,KSPFischerGuess_Method2 **ITG)
{
KSPFischerGuess_Method2 *itg;
PetscErrorCode ierr;
PetscFunctionBegin;
PetscValidHeaderSpecific(ksp,KSP_CLASSID,1);
ierr = PetscMalloc(sizeof(KSPFischerGuess_Method2),&itg);CHKERRQ(ierr);
ierr = PetscMalloc(maxl * sizeof(PetscScalar),&itg->alpha);CHKERRQ(ierr);
ierr = PetscLogObjectMemory(ksp,sizeof(KSPFischerGuess_Method2) + maxl*sizeof(PetscScalar));CHKERRQ(ierr);
ierr = KSPGetVecs(ksp,maxl,&itg->xtilde,0,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscLogObjectParents(ksp,maxl,itg->xtilde);CHKERRQ(ierr);
ierr = VecDuplicate(itg->xtilde[0],&itg->Ax);CHKERRQ(ierr);
ierr = PetscLogObjectParent(ksp,itg->Ax);CHKERRQ(ierr);
ierr = VecDuplicate(itg->xtilde[0],&itg->guess);CHKERRQ(ierr);
ierr = PetscLogObjectParent(ksp,itg->guess);CHKERRQ(ierr);
*ITG = itg;
PetscFunctionReturn(0);
}
示例14: VecCreate_MPI
/*
VecCreate_MPI_Private - Basic create routine called by VecCreate_MPI() (i.e. VecCreateMPI()),
VecCreateMPIWithArray(), VecCreate_Shared() (i.e. VecCreateShared()), VecCreateGhost(),
VecDuplicate_MPI(), VecCreateGhostWithArray(), VecDuplicate_MPI(), and VecDuplicate_Shared()
If alloc is true and array is NULL then this routine allocates the space, otherwise
no space is allocated.
*/
PetscErrorCode VecCreate_MPI_Private(Vec v,PetscBool alloc,PetscInt nghost,const PetscScalar array[])
{
Vec_MPI *s;
PetscErrorCode ierr;
PetscFunctionBegin;
ierr = PetscNewLog(v,&s);CHKERRQ(ierr);
v->data = (void*)s;
ierr = PetscMemcpy(v->ops,&DvOps,sizeof(DvOps));CHKERRQ(ierr);
s->nghost = nghost;
v->petscnative = PETSC_TRUE;
ierr = PetscLayoutSetUp(v->map);CHKERRQ(ierr);
s->array = (PetscScalar*)array;
s->array_allocated = 0;
if (alloc && !array) {
PetscInt n = v->map->n+nghost;
ierr = PetscMalloc1(n,&s->array);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)v,n*sizeof(PetscScalar));CHKERRQ(ierr);
ierr = PetscMemzero(s->array,n*sizeof(PetscScalar));CHKERRQ(ierr);
s->array_allocated = s->array;
}
/* By default parallel vectors do not have local representation */
s->localrep = 0;
s->localupdate = 0;
v->stash.insertmode = NOT_SET_VALUES;
v->bstash.insertmode = NOT_SET_VALUES;
/* create the stashes. The block-size for bstash is set later when
VecSetValuesBlocked is called.
*/
ierr = VecStashCreate_Private(PetscObjectComm((PetscObject)v),1,&v->stash);CHKERRQ(ierr);
ierr = VecStashCreate_Private(PetscObjectComm((PetscObject)v),PetscAbs(v->map->bs),&v->bstash);CHKERRQ(ierr);
#if defined(PETSC_HAVE_MATLAB_ENGINE)
ierr = PetscObjectComposeFunction((PetscObject)v,"PetscMatlabEnginePut_C",VecMatlabEnginePut_Default);CHKERRQ(ierr);
ierr = PetscObjectComposeFunction((PetscObject)v,"PetscMatlabEngineGet_C",VecMatlabEngineGet_Default);CHKERRQ(ierr);
#endif
ierr = PetscObjectChangeTypeName((PetscObject)v,VECMPI);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例15: NEPAllocateSolution
/*@
NEPAllocateSolution - Allocate memory storage for common variables such
as eigenvalues and eigenvectors.
Collective on NEP
Input Parameters:
+ nep - eigensolver context
- extra - number of additional positions, used for methods that require a
working basis slightly larger than ncv
Developers Note:
This is PETSC_EXTERN because it may be required by user plugin NEP
implementations.
Level: developer
@*/
PetscErrorCode NEPAllocateSolution(NEP nep,PetscInt extra)
{
PetscErrorCode ierr;
PetscInt oldsize,newc,requested;
PetscLogDouble cnt;
Mat T;
Vec t;
PetscFunctionBegin;
requested = nep->ncv + extra;
/* oldsize is zero if this is the first time setup is called */
ierr = BVGetSizes(nep->V,NULL,NULL,&oldsize);CHKERRQ(ierr);
newc = PetscMax(0,requested-oldsize);
/* allocate space for eigenvalues and friends */
if (requested != oldsize) {
if (oldsize) {
ierr = PetscFree4(nep->eigr,nep->eigi,nep->errest,nep->perm);CHKERRQ(ierr);
}
ierr = PetscMalloc4(requested,&nep->eigr,requested,&nep->eigi,requested,&nep->errest,requested,&nep->perm);CHKERRQ(ierr);
cnt = newc*sizeof(PetscScalar) + newc*sizeof(PetscReal) + newc*sizeof(PetscInt);
ierr = PetscLogObjectMemory((PetscObject)nep,cnt);CHKERRQ(ierr);
}
/* allocate V */
if (!nep->V) { ierr = NEPGetBV(nep,&nep->V);CHKERRQ(ierr); }
if (!oldsize) {
if (!((PetscObject)(nep->V))->type_name) {
ierr = BVSetType(nep->V,BVSVEC);CHKERRQ(ierr);
}
if (nep->split) T = nep->A[0];
else {
ierr = NEPGetFunction(nep,&T,NULL,NULL,NULL);CHKERRQ(ierr);
}
ierr = MatGetVecs(T,&t,NULL);CHKERRQ(ierr);
ierr = BVSetSizesFromVec(nep->V,t,requested);CHKERRQ(ierr);
ierr = VecDestroy(&t);CHKERRQ(ierr);
} else {
ierr = BVResize(nep->V,requested,PETSC_FALSE);CHKERRQ(ierr);
}
PetscFunctionReturn(0);
}