本文整理汇总了C++中PetscValidIntPointer函数的典型用法代码示例。如果您正苦于以下问题:C++ PetscValidIntPointer函数的具体用法?C++ PetscValidIntPointer怎么用?C++ PetscValidIntPointer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PetscValidIntPointer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: indices
/*@C
DMDARestoreElements - Returns an array containing the indices (in local coordinates)
of all the local elements obtained with DMDAGetElements()
Not Collective
Input Parameter:
+ dm - the DM object
. nel - number of local elements
. nen - number of element nodes
- e - the local indices of the elements' vertices
Level: intermediate
.seealso: DMDAElementType, DMDASetElementType(), DMDAGetElements()
@*/
PetscErrorCode DMDARestoreElements(DM dm,PetscInt *nel,PetscInt *nen,const PetscInt *e[])
{
PetscFunctionBegin;
PetscValidHeaderSpecific(dm,DM_CLASSID,1);
PetscValidIntPointer(nel,2);
PetscValidIntPointer(nen,3);
PetscValidPointer(e,4);
/* XXX */
PetscFunctionReturn(0);
}
示例2: TSAdaptCandidatesClear
/*@C
TSAdaptChoose - choose which method and step size to use for the next step
Collective on TSAdapt
Input Arguments:
+ adapt - adaptive contoller
- h - current step size
Output Arguments:
+ next_sc - optional, scheme to use for the next step
. next_h - step size to use for the next step
- accept - PETSC_TRUE to accept the current step, PETSC_FALSE to repeat the current step with the new step size
Note:
The input value of parameter accept is retained from the last time step, so it will be PETSC_FALSE if the step is
being retried after an initial rejection.
Level: developer
.seealso: TSAdapt, TSAdaptCandidatesClear(), TSAdaptCandidateAdd()
@*/
PetscErrorCode TSAdaptChoose(TSAdapt adapt,TS ts,PetscReal h,PetscInt *next_sc,PetscReal *next_h,PetscBool *accept)
{
PetscErrorCode ierr;
PetscInt ncandidates = adapt->candidates.n;
PetscInt scheme = 0;
PetscReal wlte = -1.0;
PetscReal wltea = -1.0;
PetscReal wlter = -1.0;
PetscFunctionBegin;
PetscValidHeaderSpecific(adapt,TSADAPT_CLASSID,1);
PetscValidHeaderSpecific(ts,TS_CLASSID,2);
if (next_sc) PetscValidIntPointer(next_sc,4);
PetscValidPointer(next_h,5);
PetscValidIntPointer(accept,6);
if (next_sc) *next_sc = 0;
/* Do not mess with adaptivity while handling events*/
if (ts->event && ts->event->status != TSEVENT_NONE) {
*next_h = h;
*accept = PETSC_TRUE;
PetscFunctionReturn(0);
}
ierr = (*adapt->ops->choose)(adapt,ts,h,&scheme,next_h,accept,&wlte,&wltea,&wlter);CHKERRQ(ierr);
if (scheme < 0 || (ncandidates > 0 && scheme >= ncandidates)) SETERRQ2(PetscObjectComm((PetscObject)adapt),PETSC_ERR_ARG_OUTOFRANGE,"Chosen scheme %D not in valid range 0..%D",scheme,ncandidates-1);
if (*next_h < 0) SETERRQ1(PetscObjectComm((PetscObject)adapt),PETSC_ERR_ARG_OUTOFRANGE,"Computed step size %g must be positive",(double)*next_h);
if (next_sc) *next_sc = scheme;
if (*accept && ts->exact_final_time == TS_EXACTFINALTIME_MATCHSTEP) {
/* Increase/reduce step size if end time of next step is close to or overshoots max time */
PetscReal t = ts->ptime + ts->time_step, h = *next_h;
PetscReal tend = t + h, tmax = ts->max_time, hmax = tmax - t;
PetscReal a = (PetscReal)(1.0 + adapt->matchstepfac[0]);
PetscReal b = adapt->matchstepfac[1];
if (t < tmax && tend > tmax) *next_h = hmax;
if (t < tmax && tend < tmax && h*b > hmax) *next_h = hmax/2;
if (t < tmax && tend < tmax && h*a > hmax) *next_h = hmax;
}
if (adapt->monitor) {
const char *sc_name = (scheme < ncandidates) ? adapt->candidates.name[scheme] : "";
ierr = PetscViewerASCIIAddTab(adapt->monitor,((PetscObject)adapt)->tablevel);CHKERRQ(ierr);
if (wlte < 0) {
ierr = PetscViewerASCIIPrintf(adapt->monitor," TSAdapt %s %s %D:%s step %3D %s t=%-11g+%10.3e dt=%-10.3e\n",((PetscObject)adapt)->type_name,((PetscObject)ts)->type_name,scheme,sc_name,ts->steps,*accept ? "accepted" : "rejected",(double)ts->ptime,(double)h,(double)*next_h);CHKERRQ(ierr);
} else {
ierr = PetscViewerASCIIPrintf(adapt->monitor," TSAdapt %s %s %D:%s step %3D %s t=%-11g+%10.3e dt=%-10.3e wlte=%5.3g wltea=%5.3g wlter=%5.3g\n",((PetscObject)adapt)->type_name,((PetscObject)ts)->type_name,scheme,sc_name,ts->steps,*accept ? "accepted" : "rejected",(double)ts->ptime,(double)h,(double)*next_h,(double)wlte,(double)wltea,(double)wlter);CHKERRQ(ierr);
}
ierr = PetscViewerASCIISubtractTab(adapt->monitor,((PetscObject)adapt)->tablevel);CHKERRQ(ierr);
}
PetscFunctionReturn(0);
}
示例3: ISCreateStride
/*@
ISStrideGetInfo - Returns the first index in a stride index set and
the stride width.
Not Collective
Input Parameter:
. is - the index set
Output Parameters:
. first - the first index
. step - the stride width
Level: intermediate
Notes:
Returns info on stride index set. This is a pseudo-public function that
should not be needed by most users.
Concepts: index sets^getting information
Concepts: IS^getting information
.seealso: ISCreateStride(), ISGetSize()
@*/
PetscErrorCode ISStrideGetInfo(IS is,PetscInt *first,PetscInt *step)
{
IS_Stride *sub;
PetscFunctionBegin;
PetscValidHeaderSpecific(is,IS_CLASSID,1);
if (first) PetscValidIntPointer(first,2);
if (step) PetscValidIntPointer(step,3);
sub = (IS_Stride*)is->data;
if (first) *first = sub->first;
if (step) *step = sub->step;
PetscFunctionReturn(0);
}
示例4: DMInterpolationGetDof
PetscErrorCode DMInterpolationGetDof(DMInterpolationInfo ctx, PetscInt *dof)
{
PetscFunctionBegin;
PetscValidIntPointer(dof, 2);
*dof = ctx->dof;
PetscFunctionReturn(0);
}
示例5: DMInterpolationGetDim
PetscErrorCode DMInterpolationGetDim(DMInterpolationInfo ctx, PetscInt *dim)
{
PetscFunctionBegin;
PetscValidIntPointer(dim, 2);
*dim = ctx->dim;
PetscFunctionReturn(0);
}
示例6: ISGeneralSetIndices_General
PetscErrorCode ISGeneralSetIndices_General(IS is,PetscInt n,const PetscInt idx[],PetscCopyMode mode)
{
PetscErrorCode ierr;
IS_General *sub = (IS_General*)is->data;
PetscFunctionBegin;
if (n < 0) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"length < 0");
if (n) PetscValidIntPointer(idx,3);
if (sub->allocated) {ierr = PetscFree(sub->idx);CHKERRQ(ierr);}
ierr = PetscLayoutSetLocalSize(is->map, n);CHKERRQ(ierr);
if (mode == PETSC_COPY_VALUES) {
ierr = PetscMalloc1(n,&sub->idx);CHKERRQ(ierr);
ierr = PetscLogObjectMemory((PetscObject)is,n*sizeof(PetscInt));CHKERRQ(ierr);
ierr = PetscMemcpy(sub->idx,idx,n*sizeof(PetscInt));CHKERRQ(ierr);
sub->allocated = PETSC_TRUE;
} else if (mode == PETSC_OWN_POINTER) {
sub->idx = (PetscInt*)idx;
sub->allocated = PETSC_TRUE;
} else {
sub->idx = (PetscInt*)idx;
sub->allocated = PETSC_FALSE;
}
ierr = ISCreateGeneral_Private(is);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例7: PetscObjectGetNewTag
/*@
PetscCommGetNewTag - Gets a unique new tag from a PETSc communicator. All
processors that share the communicator MUST call this routine EXACTLY the same
number of times. This tag should only be used with the current objects
communicator; do NOT use it with any other MPI communicator.
Collective on comm
Input Parameter:
. comm - the MPI communicator
Output Parameter:
. tag - the new tag
Level: developer
Concepts: tag^getting
Concepts: message tag^getting
Concepts: MPI message tag^getting
.seealso: PetscObjectGetNewTag(), PetscCommDuplicate()
@*/
PetscErrorCode PetscCommGetNewTag(MPI_Comm comm,PetscMPIInt *tag)
{
PetscErrorCode ierr;
PetscCommCounter *counter;
PetscMPIInt *maxval,flg;
PetscFunctionBegin;
PetscValidIntPointer(tag,2);
ierr = MPI_Attr_get(comm,Petsc_Counter_keyval,&counter,&flg);CHKERRQ(ierr);
if (!flg) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_CORRUPT,"Bad MPI communicator supplied; must be a PETSc communicator");
if (counter->tag < 1) {
ierr = PetscInfo1(0,"Out of tags for object, starting to recycle. Comm reference count %d\n",counter->refcount);CHKERRQ(ierr);
ierr = MPI_Attr_get(MPI_COMM_WORLD,MPI_TAG_UB,&maxval,&flg);CHKERRQ(ierr);
if (!flg) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_LIB,"MPI error: MPI_Attr_get() is not returning a MPI_TAG_UB");
counter->tag = *maxval - 128; /* hope that any still active tags were issued right at the beginning of the run */
}
*tag = counter->tag--;
#if defined(PETSC_USE_DEBUG)
/*
Hanging here means that some processes have called PetscCommGetNewTag() and others have not.
*/
ierr = MPI_Barrier(comm);CHKERRQ(ierr);
#endif
PetscFunctionReturn(0);
}
示例8: ISGetLocalSize
/*@
ISContiguousLocal - Locates an index set with contiguous range within a global range, if possible
Not Collective
Input Parmeters:
+ is - the index set
. gstart - global start
. gend - global end
Output Parameters:
+ start - start of contiguous block, as an offset from gstart
- contig - PETSC_TRUE if the index set refers to contiguous entries on this process, else PETSC_FALSE
Level: developer
Concepts: index sets^is contiguous
.seealso: ISGetLocalSize(), VecGetOwnershipRange()
@*/
PetscErrorCode ISContiguousLocal(IS is,PetscInt gstart,PetscInt gend,PetscInt *start,PetscBool *contig)
{
PetscErrorCode ierr;
PetscFunctionBegin;
PetscValidHeaderSpecific(is,IS_CLASSID,1);
PetscValidIntPointer(start,5);
PetscValidIntPointer(contig,5);
if (is->ops->contiguous) {
ierr = (*is->ops->contiguous)(is,gstart,gend,start,contig);CHKERRQ(ierr);
} else {
*start = -1;
*contig = PETSC_FALSE;
}
PetscFunctionReturn(0);
}
示例9: EPSSolve
/*@
EPSGetIterationNumber - Gets the current iteration number. If the
call to EPSSolve() is complete, then it returns the number of iterations
carried out by the solution method.
Not Collective
Input Parameter:
. eps - the eigensolver context
Output Parameter:
. its - number of iterations
Level: intermediate
Note:
During the i-th iteration this call returns i-1. If EPSSolve() is
complete, then parameter "its" contains either the iteration number at
which convergence was successfully reached, or failure was detected.
Call EPSGetConvergedReason() to determine if the solver converged or
failed and why.
.seealso: EPSGetConvergedReason(), EPSSetTolerances()
@*/
PetscErrorCode EPSGetIterationNumber(EPS eps,PetscInt *its)
{
PetscFunctionBegin;
PetscValidHeaderSpecific(eps,EPS_CLASSID,1);
PetscValidIntPointer(its,2);
*its = eps->its;
PetscFunctionReturn(0);
}
示例10: SVDSolve
/*@
SVDGetConverged - Gets the number of converged singular values.
Not Collective
Input Parameter:
. svd - the singular value solver context
Output Parameter:
. nconv - number of converged singular values
Note:
This function should be called after SVDSolve() has finished.
Level: beginner
@*/
PetscErrorCode SVDGetConverged(SVD svd,PetscInt *nconv)
{
PetscFunctionBegin;
PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
PetscValidIntPointer(nconv,2);
*nconv = svd->nconv;
PetscFunctionReturn(0);
}
示例11: PEPSolve
/*@
PEPGetIterationNumber - Gets the current iteration number. If the
call to PEPSolve() is complete, then it returns the number of iterations
carried out by the solution method.
Not Collective
Input Parameter:
. pep - the polynomial eigensolver context
Output Parameter:
. its - number of iterations
Level: intermediate
Note:
During the i-th iteration this call returns i-1. If PEPSolve() is
complete, then parameter "its" contains either the iteration number at
which convergence was successfully reached, or failure was detected.
Call PEPGetConvergedReason() to determine if the solver converged or
failed and why.
.seealso: PEPGetConvergedReason(), PEPSetTolerances()
@*/
PetscErrorCode PEPGetIterationNumber(PEP pep,PetscInt *its)
{
PetscFunctionBegin;
PetscValidHeaderSpecific(pep,PEP_CLASSID,1);
PetscValidIntPointer(its,2);
*its = pep->its;
PetscFunctionReturn(0);
}
示例12: ISSetPermutation
/*@
ISPermutation - PETSC_TRUE or PETSC_FALSE depending on whether the
index set has been declared to be a permutation.
Logically Collective on IS
Input Parmeters:
. is - the index set
Output Parameters:
. perm - PETSC_TRUE if a permutation, else PETSC_FALSE
Level: intermediate
Concepts: permutation
Concepts: index sets^is permutation
.seealso: ISSetPermutation()
@*/
PetscErrorCode ISPermutation(IS is,PetscBool *perm)
{
PetscFunctionBegin;
PetscValidHeaderSpecific(is,IS_CLASSID,1);
PetscValidIntPointer(perm,2);
*perm = (PetscBool) is->isperm;
PetscFunctionReturn(0);
}
示例13: KSPGetIterationNumber
/*@
KSPGetTotalIterations - Gets the total number of iterations this KSP object has performed since was created, counted over all linear solves
Not Collective
Input Parameters:
. ksp - the iterative context
Output Parameters:
. its - total number of iterations
Level: intermediate
Notes: Use KSPGetIterationNumber() to get the count for the most recent solve only
If this is called within a linear solve (such as in a KSPMonitor routine) then it does not include iterations within that current solve
.keywords: KSP, get, residual norm
.seealso: KSPBuildResidual(), KSPGetResidualNorm(), KSPGetIterationNumber()
@*/
PetscErrorCode KSPGetTotalIterations(KSP ksp,PetscInt *its)
{
PetscFunctionBegin;
PetscValidHeaderSpecific(ksp,KSP_CLASSID,1);
PetscValidIntPointer(its,2);
*its = ksp->totalits;
PetscFunctionReturn(0);
}
示例14: with
/*@C
PetscObjectGetReference - Gets the current reference count for
any PETSc object.
Not Collective
Input Parameter:
. obj - the PETSc object; this must be cast with (PetscObject), for example,
PetscObjectGetReference((PetscObject)mat,&cnt);
Output Parameter:
. cnt - the reference count
Level: advanced
.seealso: PetscObjectCompose(), PetscObjectDereference(), PetscObjectReference()
@*/
PetscErrorCode PetscObjectGetReference(PetscObject obj,PetscInt *cnt)
{
PetscFunctionBegin;
PetscValidHeader(obj,1);
PetscValidIntPointer(cnt,2);
*cnt = obj->refct;
PetscFunctionReturn(0);
}
示例15: ISCreateStride
/*@
ISStrideGetInfo - Returns the first index in a stride index set and
the stride width.
Not Collective
Input Parameter:
. is - the index set
Output Parameters:
. first - the first index
. step - the stride width
Level: intermediate
Notes:
Returns info on stride index set. This is a pseudo-public function that
should not be needed by most users.
Concepts: index sets^getting information
Concepts: IS^getting information
.seealso: ISCreateStride(), ISGetSize()
@*/
PetscErrorCode ISStrideGetInfo(IS is,PetscInt *first,PetscInt *step)
{
IS_Stride *sub;
PetscBool flg;
PetscErrorCode ierr;
PetscFunctionBegin;
PetscValidHeaderSpecific(is,IS_CLASSID,1);
if (first) PetscValidIntPointer(first,2);
if (step) PetscValidIntPointer(step,3);
ierr = PetscObjectTypeCompare((PetscObject)is,ISSTRIDE,&flg);CHKERRQ(ierr);
if (!flg) SETERRQ(PetscObjectComm((PetscObject)is),PETSC_ERR_ARG_WRONG,"IS must be of type ISSTRIDE");
sub = (IS_Stride*)is->data;
if (first) *first = sub->first;
if (step) *step = sub->step;
PetscFunctionReturn(0);
}