Blaise,

    Currently there is no way to do this. For a given object it will only print 
the help message once, but if you create two objects of the same type and do 
XXXSetFromOptions() for each it will print it twice. Note that if all the 
prefixes for the objects are different then this is what you want. However if 
you are not setting prefix options seemingly identical help messages will get 
printed. 

   To change this we would need to introduce a way of tracking alreadyprinted 
per class and per prefix instead of per object. It is unlikely we will change 
this. We recommend not using VecSetFromOptions() and MatSetFromOptions() in 
real applications and for each KSP, SNES, and TS using a different prefix so 
the help is appropriate.

   I agree getting a bunch of identical help messages is annoying.

   Barry

On Jan 15, 2014, at 1:04 PM, Blaise A Bourdin <bour...@lsu.edu> wrote:

> Hi,
> 
> Is there a way to prevent the help section for basic objects from being 
> printed multiple times? In the attached example, the basic help for Vec and 
> Mat is printed twice, but I would prefer if it were printed only 
> once.<testPrintOptions.c>
> bourdin@galerkin:Options $ ./testPrintOptions -h
> --------------------------------------------------------------------------
> Petsc Development GIT revision: v3.4.3-2316-gaf107cc  GIT Date: 2014-01-15 
> 10:14:00 -0600
>       The PETSc Team
> :
> :
> :
> Vector (Vec) options -------------------------------------------------
>  -vec_type <mpi>: Vector type (one of) seq mpi standard shared (VecSetType)
> Vector (Vec) options -------------------------------------------------
>  -vec_type <mpi>: Vector type (one of) seq mpi standard shared (VecSetType)
> Options for SEQAIJ matrix -------------------------------------------------
>  -mat_no_unroll: <FALSE> Do not optimize for inodes (slower) (None)
>  -mat_no_inode: <FALSE> Do not optimize for inodes -slower- (None)
>  -mat_inode_limit <5>: Do not use inodes larger then this value (None)
> Matrix (Mat) options -------------------------------------------------
>  -mat_block_size <-1>: Set the blocksize used to store the matrix 
> (MatSetBlockSize)
>  -mat_type <aij>: Matrix type (one of) mffd mpimaij seqmaij maij is shell 
> composite mpiaij
>      seqaij mpiaijperm seqaijperm seqaijcrl mpiaijcrl mpibaij seqbaij 
> mpisbaij seqsbaij mpibstrm seqbstrm mpisbstrm seqsbstrm mpidense seqdense 
> mpiadj scatter blockmat nest (MatSetType)
>  -mat_is_symmetric: Checks if mat is symmetric on MatAssemblyEnd() 
> (MatIsSymmetric)
>  -mat_is_symmetric <0>: Checks if mat is symmetric on MatAssemblyEnd() 
> (MatIsSymmetric)
>  -mat_null_space_test: <FALSE> Checks if provided null space is correct in 
> MatAssemblyEnd() (MatSetNullSpaceTest)
>  -mat_new_nonzero_location_err: <FALSE> Generate an error if new nonzeros are 
> created in the matrix structure (useful to test preallocation) (MatSetOption)
>  -mat_new_nonzero_allocation_err: <FALSE> Generate an error if new nonzeros 
> are allocated in the matrix structure (useful to test preallocation) 
> (MatSetOption)
> Options for SEQAIJ matrix -------------------------------------------------
>  -mat_no_unroll: <FALSE> Do not optimize for inodes (slower) (None)
>  -mat_no_inode: <FALSE> Do not optimize for inodes -slower- (None)
>  -mat_inode_limit <5>: Do not use inodes larger then this value (None)
> Matrix (Mat) options -------------------------------------------------
>  -mat_block_size <-1>: Set the blocksize used to store the matrix 
> (MatSetBlockSize)
>  -mat_type <aij>: Matrix type (one of) mffd mpimaij seqmaij maij is shell 
> composite mpiaij
>      seqaij mpiaijperm seqaijperm seqaijcrl mpiaijcrl mpibaij seqbaij 
> mpisbaij seqsbaij mpibstrm seqbstrm mpisbstrm seqsbstrm mpidense seqdense 
> mpiadj scatter blockmat nest (MatSetType)
>  -mat_is_symmetric: Checks if mat is symmetric on MatAssemblyEnd() 
> (MatIsSymmetric)
>  -mat_is_symmetric <0>: Checks if mat is symmetric on MatAssemblyEnd() 
> (MatIsSymmetric)
>  -mat_null_space_test: <FALSE> Checks if provided null space is correct in 
> MatAssemblyEnd() (MatSetNullSpaceTest)
>  -mat_new_nonzero_location_err: <FALSE> Generate an error if new nonzeros are 
> created in the matrix structure (useful to test preallocation) (MatSetOption)
>  -mat_new_nonzero_allocation_err: <FALSE> Generate an error if new nonzeros 
> are allocated in the matrix structure (useful to test preallocation) 
> (MatSetOption)
> 
> 
> Blaise
> -- 
> Department of Mathematics and Center for Computation & Technology
> Louisiana State University, Baton Rouge, LA 70803, USA
> Tel. +1 (225) 578 1612, Fax  +1 (225) 578 4276 
> http://www.math.lsu.edu/~bourdin
> 
> 
> 
> 
> 
> 
> 

Reply via email to