Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
sc::SCElementOp(3)		     MPQC		    sc::SCElementOp(3)

NAME
       sc::SCElementOp - Objects of class SCElementOp are used to perform
       operations on the elements of matrices.

SYNOPSIS
       #include	<elemop.h>

       Inherits	sc::SavableState.

       Inherited by sc::BlockedSCElementOp, sc::OneBodyIntOp,
       sc::SCElementAccumulateDiagSCMatrix, sc::SCElementAccumulateSCMatrix,
       sc::SCElementAccumulateSCVector,	sc::SCElementAccumulateSymmSCMatrix,
       sc::SCElementAssign, sc::SCElementDot, sc::SCElementInvert,
       sc::SCElementKNorm, sc::SCElementMaxAbs,	sc::SCElementMinAbs,
       sc::SCElementRandomize, sc::SCElementScale, sc::SCElementScaleDiagonal,
       sc::SCElementShiftDiagonal, sc::SCElementSquareRoot, and
       sc::SCElementSumAbs.

   Public Member Functions
       SCElementOp (StateIn &s)
       virtual int has_collect ()
	   If duplicates of the	SCElementOp exist (that	is, there is more than
	   one node), then if has_collect returns nonzero then collect is
	   called with a MessageGrp reference after all	of the blocks have
	   been	processed.
       virtual void defer_collect (int)
       virtual void collect (const Ref<	MessageGrp > &)
       virtual void collect (const Ref<	SCElementOp > &)
	   Multithreaded use of	cloneable SCElementOp objects requires that
	   data	from cloned objects be collected.
       virtual int has_side_effects ()
	   By default this returns nonzero.
       virtual bool threadsafe ()
	   Returns true	if this	SCElementOp is threadsafe.
       virtual bool cloneable ()
	   Returns true	if this	SCElementOp supports the cloneable member.
       virtual Ref< SCElementOp	> clone	()
	   Returns a clone of this object.
       virtual void process (SCMatrixBlockIter &)=0
	   This	is the fallback	routine	to process blocks and is called	by
	   process_spec	members	that are not overridden.
       void process_base (SCMatrixBlock	*block)
	   Lazy	matrix implementors can	call this member when the type of
	   block specialization	is unknown.
       virtual void process_spec_rect (SCMatrixRectBlock *)
	   Matrices should call	these members when the type of block is	known.
       virtual void process_spec_ltri (SCMatrixLTriBlock *)
       virtual void process_spec_diag (SCMatrixDiagBlock *)
       virtual void process_spec_vsimp (SCVectorSimpleBlock *)
       virtual void process_spec_rectsub (SCMatrixRectSubBlock *)
       virtual void process_spec_ltrisub (SCMatrixLTriSubBlock *)
       virtual void process_spec_diagsub (SCMatrixDiagSubBlock *)
       virtual void process_spec_vsimpsub (SCVectorSimpleSubBlock *)

       Public Member Functions inherited from sc::SavableState
       SavableState & operator=	(const SavableState &)
       void save_state (StateOut &)
	   Save	the state of the object	as specified by	the StateOut object.
       void save_object_state (StateOut	&)
	   This	can be used for	saving state when the exact type of the	object
	   is known for	both the save and the restore.
       virtual void save_vbase_state (StateOut &)
	   Save	the virtual bases for the object.
       virtual void save_data_state (StateOut &)
	   Save	the base classes (with save_data_state)	and the	members	in the
	   same	order that the StateIn CTOR initializes	them.

       Public Member Functions inherited from sc::DescribedClass
       DescribedClass (const DescribedClass &)
       DescribedClass &	operator= (const DescribedClass	&)
       ClassDesc * class_desc () const	throw ()
	   This	returns	the unique pointer to the ClassDesc corresponding to
	   the given type_info object.
       const char * class_name () const
	   Return the name of the object's exact type.
       int class_version () const
	   Return the version of the class.
       virtual void print (std::ostream	&=ExEnv::out0()) const
	   Print the object.

       Public Member Functions inherited from sc::RefCount
       int lock_ptr () const
	   Lock	this object.
       int unlock_ptr () const
	   Unlock this object.
       void use_locks (bool inVal)
	   start and stop using	locks on this object
       refcount_t nreference ()	const
	   Return the reference	count.
       refcount_t reference ()
	   Increment the reference count and return the	new count.
       refcount_t dereference ()
	   Decrement the reference count and return the	new count.
       int managed () const
       void unmanage ()
	   Turn	off the	reference counting mechanism for this object.
       int managed () const
	   Return 1 if the object is managed. Otherwise	return 0.

       Public Member Functions inherited from sc::Identity
       Identifier identifier ()
	   Return the Identifier for this argument.

   Additional Inherited	Members
       Static Public Member Functions inherited	from sc::SavableState
       static void save_state (SavableState *s,	StateOut &)
       static SavableState * restore_state (StateIn &si)
	   Restores objects saved with save_state.
       static SavableState * key_restore_state (StateIn	&si, const char
	   *keyword)
	   Like	restore_state, but keyword is used to override values while
	   restoring.
       static SavableState * dir_restore_state (StateIn	&si, const char
	   *objectname,	const char *keyword=0)

       Protected Member	Functions inherited from sc::SavableState
       SavableState (const SavableState	&)
       SavableState (StateIn &)
	   Each	derived	class StateIn CTOR handles the restore corresponding
	   to calling save_object_state, save_vbase_state, and save_data_state
	   listed above.

       Protected Member	Functions inherited from sc::RefCount
       RefCount	(const RefCount	&)
       RefCount	& operator= (const RefCount &)

Detailed Description
       Objects of class	SCElementOp are	used to	perform	operations on the
       elements	of matrices.

       When the	SCElementOp object is given to the element_op member of	a
       matrix, each block the matrix is	passed to one of the process,
       process_base, or	process_base members.

Member Function	Documentation
   virtual Ref<	SCElementOp > sc::SCElementOp::clone ()	[virtual]
       Returns a clone of this object. This is needed for multithreaded	use of
       SCElementOp objects that	are not	thread safe. The default implemenation
       throws an exception.

       Reimplemented in	sc::OneBodyIntOp.

   virtual bool	sc::SCElementOp::cloneable () [virtual]
       Returns true if this SCElementOp	supports the cloneable member. The
       default implmentation returns false.

       Reimplemented in	sc::OneBodyIntOp.

   virtual void	sc::SCElementOp::collect (const	Ref< SCElementOp > &)
       [virtual]
       Multithreaded use of cloneable SCElementOp objects requires that	data
       from cloned objects be collected. The default implementation will throw
       an exception.

       Reimplemented in	sc::SCElementInvert, sc::SCElementMaxAbs,
       sc::SCElementMinAbs, sc::SCElementSumAbs, and sc::SCElementKNorm.

   virtual int sc::SCElementOp::has_collect () [virtual]
       If duplicates of	the SCElementOp	exist (that is,	there is more than one
       node), then if has_collect returns nonzero then collect is called with
       a MessageGrp reference after all	of the blocks have been	processed. The
       default return value of has_collect is 0	and collect's default action
       is do nothing. If defer_collect member is called	with nonzero, collect
       will do nothing (this is	only used by the blocked matrices).

       Reimplemented in	sc::SCElementInvert, sc::SCElementMaxAbs,
       sc::SCElementMinAbs, sc::SCElementSumAbs, and sc::SCElementKNorm.

   virtual int sc::SCElementOp::has_side_effects () [virtual]
       By default this returns nonzero.	If the ElementOp specialization	will
       change any elements of the matrix, then this must be overridden to
       return nonzero.

       Reimplemented in	sc::OneBodyIntOp, sc::LevelShift, sc::SCElementScale,
       sc::SCElementRandomize, sc::SCElementAssign, sc::SCElementSquareRoot,
       sc::SCElementInvert, sc::SCElementScaleDiagonal,
       sc::SCElementShiftDiagonal, sc::SCElementDot,
       sc::SCElementAccumulateSCMatrix,	sc::SCElementAccumulateSymmSCMatrix,
       sc::SCElementAccumulateDiagSCMatrix, and
       sc::SCElementAccumulateSCVector.

   virtual void	sc::SCElementOp::process (SCMatrixBlockIter &) [pure virtual]
       This is the fallback routine to process blocks and is called by
       process_spec members that are not overridden.

       Implemented in sc::OneBodyIntOp,	sc::LevelShift,	sc::ALevelShift,
       sc::BLevelShift,	sc::SCElementScale, sc::SCElementRandomize,
       sc::SCElementAssign, sc::SCElementSquareRoot, sc::SCElementInvert,
       sc::SCElementScaleDiagonal, sc::SCElementShiftDiagonal,
       sc::SCElementMaxAbs, sc::SCElementMinAbs, sc::SCElementSumAbs,
       sc::SCElementKNorm, sc::SCElementDot, sc::SCElementAccumulateSCMatrix,
       sc::SCElementAccumulateSymmSCMatrix,
       sc::SCElementAccumulateDiagSCMatrix, and
       sc::SCElementAccumulateSCVector.

   void	sc::SCElementOp::process_base (SCMatrixBlock * block)
       Lazy matrix implementors	can call this member when the type of block
       specialization is unknown. However, this	will attempt to	dynamic_cast
       block to	a block	specialization and will	thus be	less efficient.

   virtual void	sc::SCElementOp::process_spec_rect (SCMatrixRectBlock *)
       [virtual]
       Matrices	should call these members when the type	of block is known.
       ElementOp specializations should	override these when efficiency is
       important, since	these give the most efficient access to	the elements
       of the block.

       Reimplemented in	sc::OneBodyIntOp.

   virtual bool	sc::SCElementOp::threadsafe () [virtual]
       Returns true if this SCElementOp	is threadsafe. The default
       implementation returns false.

Author
       Generated automatically by Doxygen for MPQC from	the source code.

Version	2.3.1			Tue May	13 2025		    sc::SCElementOp(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sc_SCElementOp&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help