ForTrilinos
Data Types
FEpetra_MultiVector Module Reference

List of all members.

Data Types

type  Epetra_MultiVector

Public Member Functions

Constructor Functions
type(Epetra_MultiVector)
function, public 
Epetra_MultiVector (BlockMap, Num_Vectors, zero)
 
Epetra_MultiVector constructor conformal to a BlockMap, optionally zero the newly created vector.
type(Epetra_MultiVector)
function, public 
Epetra_MultiVector (this)
 
Epetra_MultiVector copy constructor.

Private Member Functions

Post-construction modification routines
subroutine ReplaceGlobalValue (this, GlobalRow, VectorIndex, ScalarValue, err)
 
Replaces value at location (GlobalRow,VectorIndex) with ScalarValue
subroutine ReplaceGlobalValue (this, GlobalBlockRow, BlockRowOffset, VectorIndex, ScalarValue, err)
 
Replaces value at location (GlobalBlockRow,BlockRowOffset,VectorIndex) with ScalarValue
subroutine ReplaceMyValue (this, MyRow, VectorIndex, ScalarValue, err)
 
Replaces value at location (MyRow,VectorIndex) with ScalarValue
subroutine ReplaceMyValue (this, MyBlockRow, BlockRowOffset, VectorIndex, ScalarValue, err)
 
Replaces value at location (MyBlockRow,BlockRowOffset,VectorIndex) with ScalarValue
subroutine SumIntoGlobalValue (this, GlobalRow, VectorIndex, ScalarValue, err)
 
Adds ScalarValue to value at location (GlobalRow,VectorIndex)
subroutine SumIntoGlobalValue (this, GlobalBlockRow, BlockRowOffset, VectorIndex, ScalarValue, err)
 
Adds ScalarValue to value at location (GlobalBlockRow,BlockRowOffset,VectorIndex)
subroutine SumIntoMyValue (this, MyRow, VectorIndex, ScalarValue, err)
 
Adds ScalarValue to value at location (MyRow,VectorIndex)
subroutine SumIntoMyValue (this, MyBlockRow, BlockRowOffset, VectorIndex, ScalarValue, err)
 
Adds ScalarValue to value at location (MyBlockRow,BlockRowOffset,VectorIndex)
subroutine PutScalar (this, scalar, err)
 
Replaces all entries with scalar value.
subroutine Random (this, err)
 
Replaces all entries with random values.
Mathematical methods
real(c_double) real(c_double)
function, dimension(i),
allocatable 
Dot (this, x, err)
 
Computes the scalar product of corresponding pairs of vectors.
subroutine Abs (this, A, err)
 
Replaces target with element-wise absolute value of input
subroutine Reciprocal (this, A, err)
 
Reciprocal replaces target with element-wise reciprocal value of input
subroutine Scale (this, scalar_value, err)
 
Scales current values this = scalar_value*this
subroutine Scale (this, scalar_value, MultiVector, err)
 
Replaces current values with scaled input this = scalar_value*MultiVector
real(c_double) real(c_double)
function, dimension(:),
allocatable 
Norm1 (this, err)
 
Computes 1-norm of each vector in the input
real(c_double) real(c_double)
function, dimension(:),
allocatable 
Norm2 (this, err)
 
Computes 2-norm of each vector in the input
real(c_double) real(c_double)
function, dimension(:),
allocatable 
NormInf (this, err)
 
Computes infinity norm of each vector in the input
real(c_double) function,
dimension(:), allocatable 
NormWeighted (this, weights, err)
 
Computes weighted norm (RMS norm) of each vector in the input
real(c_double) real(c_double)
function, dimension(:),
allocatable 
MinValue (this, err)
 
Computes minimum value of each vector in the input
real(c_double) real(c_double)
function, dimension(:),
allocatable 
MaxValue (this, err)
 
MaxValue: compute maximum value of each vector in the input
real(c_double) real(c_double)
function, dimension(:),
allocatable 
MeanValue (this, err)
 
Computes mean (average) value of each vector in the input
subroutine Multiply (this, TransA, TransB, ScalarAB, A, B, ScalarThis, err)
 
Matrix-matrix multiplication this = ScalarThis*This + ScalarAB*MATMUL(A,B)
subroutine Multiply (this, ScalarAB, A, B, ScalarThis, err)
 
Element-by-element multiplication this = ScalarThis*This + ScalarAB*A*B
subroutine ReciprocalMultiply (this, ScalarAB, A, B, ScalarThis, err)
 
Element-by-element multiplication by reciprocal this = ScalarThis*This + ScalarAB*A/B
subroutine Update (this, scalarA, A, scalarThis, err)
 
Updates with scaled copy of input this = ScalarThis*This + ScalarA*A
subroutine Update (this, scalarA, A, scalarB, B, scalarThis, err)
 
Updates with scaled copies of inputs this = ScalarThis*This + ScalarA*A + ScalarB*B
Extraction methods
real(c_double) function,
dimension(:,:), allocatable 
ExtractCopy (this, MyLDA, err)
 
Copies multivector contents into target
Attribute access
integer(c_int) function NumVectors (this)
 
Number of vectors in multivector
integer(c_int) function MyLength (this)
 
Local vector length
integer(c_int) function GlobalLength (this)
 
Global vector length
integer(c_int) function Stride (this)
 
Stride between successive vectors in multivector (only meaningful if ConstantStride()==true)
integer(FT_boolean_t) function ConstantStride (this)
 
True if stride between successive vectors is constant

Member Function/Subroutine Documentation

subroutine FEpetra_MultiVector::Abs ( class(Epetra_MultiVector), intent(inout)  this,
class(Epetra_MultiVector), intent(in)  A,
type(error), intent(out), optional  err 
) [private]


Replaces target with element-wise absolute value of input

Parameters:
[in]AIn The source multivector.
[out]errReturns error information.
integer(FT_boolean_t) function FEpetra_MultiVector::ConstantStride ( class(Epetra_MultiVector), intent(in)  this) [private]


True if stride between successive vectors is constant

real(c_double) real(c_double) function, dimension(i), allocatable FEpetra_MultiVector::Dot ( class(Epetra_MultiVector), intent(in)  this,
class(Epetra_MultiVector), intent(in)  x,
type(error), intent(out), optional  err 
) [private]


Computes the scalar product of corresponding pairs of vectors.

Parameters:
[in]xIn The multivector to be used in conjunction with the "this" multivector
[out]errReturns error information.
type(Epetra_MultiVector) function, public FEpetra_MultiVector::Epetra_MultiVector ( class(Epetra_MultiVector), intent(in)  this)


Epetra_MultiVector copy constructor.

type(Epetra_MultiVector) function, public FEpetra_MultiVector::Epetra_MultiVector ( class(Epetra_BlockMap), intent(in)  BlockMap,
integer(c_int), intent(in)  Num_Vectors,
logical, intent(in)  zero 
)


Epetra_MultiVector constructor conformal to a BlockMap, optionally zero the newly created vector.

Parameters:
[in]BlockMapIn The map to which the vector will conform
[in]Num_VectorsIn Number of vectors in multivector
[in]zeroIn Optionally zero out the output.
real(c_double) function, dimension(:,:), allocatable FEpetra_MultiVector::ExtractCopy ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  MyLDA,
type(error), intent(out), optional  err 
) [private]


Copies multivector contents into target

The input argument MyLDA is a user request for the size of the output; the actual size will be the maximum between this and the stride of the multivector object.

Parameters:
[in]MyLDAIn: Minimum leading dimension of result.
[out]errReturns error information.
integer(c_int) function FEpetra_MultiVector::GlobalLength ( class(Epetra_MultiVector), intent(in)  this) [private]


Global vector length

real(c_double) real(c_double) function, dimension(:), allocatable FEpetra_MultiVector::MaxValue ( class(Epetra_MultiVector), intent(in)  this,
type(error), intent(out), optional  err 
) [private]


MaxValue: compute maximum value of each vector in the input

Parameters:
[out]errReturns error information.
real(c_double) real(c_double) function, dimension(:), allocatable FEpetra_MultiVector::MeanValue ( class(Epetra_MultiVector), intent(in)  this,
type(error), intent(out), optional  err 
) [private]


Computes mean (average) value of each vector in the input

Parameters:
[out]errReturns error information.
real(c_double) real(c_double) function, dimension(:), allocatable FEpetra_MultiVector::MinValue ( class(Epetra_MultiVector), intent(in)  this,
type(error), intent(out), optional  err 
) [private]


Computes minimum value of each vector in the input

Parameters:
[out]errReturns error information.
subroutine FEpetra_MultiVector::Multiply ( class(Epetra_MultiVector), intent(in)  this,
character(c_char), intent(in)  TransA,
character(c_char), intent(in)  TransB,
real(c_double), intent(in)  ScalarAB,
class(Epetra_MultiVector), intent(in)  A,
class(Epetra_MultiVector), intent(in)  B,
real(c_double), intent(in)  ScalarThis,
type(error), intent(out), optional  err 
) [private]


Matrix-matrix multiplication this = ScalarThis*This + ScalarAB*MATMUL(A,B)

This routine will compute the product of the two multivectors A and B and use it to update "this", like the BLAS routine GEMM.

Parameters:
[in]TransAIn: Choose transpose status of A
[in]TransBIn: Choose transpose status of B
[in]AIn: Input multivector A
[in]BIn: Input multivector B
[in]ScalarABIn: scale factor for product MATMUL(A,B)
[in]ScalarThisIn: scale factor for "this"
[out]errReturns error information.
subroutine FEpetra_MultiVector::Multiply ( class(Epetra_MultiVector), intent(in)  this,
real(c_double), intent(in)  ScalarAB,
class(Epetra_MultiVector), intent(in)  A,
class(Epetra_MultiVector), intent(in)  B,
real(c_double), intent(in)  ScalarThis,
type(error), intent(out), optional  err 
) [private]


Element-by-element multiplication this = ScalarThis*This + ScalarAB*A*B

Parameters:
[in]AIn: Input multivector A
[in]BIn: Input multivector B
[in]ScalarABIn: scale factor for product A*B
[in]ScalarThisIn: scale factor for "this"
[out]errReturns error information.
integer(c_int) function FEpetra_MultiVector::MyLength ( class(Epetra_MultiVector), intent(in)  this) [private]


Local vector length

real(c_double) real(c_double) function, dimension(:), allocatable FEpetra_MultiVector::Norm1 ( class(Epetra_MultiVector), intent(in)  this,
type(error), intent(out), optional  err 
) [private]


Computes 1-norm of each vector in the input

Parameters:
[out]errReturns error information.
real(c_double) real(c_double) function, dimension(:), allocatable FEpetra_MultiVector::Norm2 ( class(Epetra_MultiVector), intent(in)  this,
type(error), intent(out), optional  err 
) [private]


Computes 2-norm of each vector in the input

Parameters:
[out]errReturns error information.
real(c_double) real(c_double) function, dimension(:), allocatable FEpetra_MultiVector::NormInf ( class(Epetra_MultiVector), intent(in)  this,
type(error), intent(out), optional  err 
) [private]


Computes infinity norm of each vector in the input

Parameters:
[out]errReturns error information.
real(c_double) function, dimension(:), allocatable FEpetra_MultiVector::NormWeighted ( class(Epetra_MultiVector), intent(in)  this,
class(Epetra_MultiVector), intent(in)  weights,
type(error), intent(out), optional  err 
) [private]


Computes weighted norm (RMS norm) of each vector in the input

Parameters:
[in]weightsIn: the weights.
[out]errReturns error information.
integer(c_int) function FEpetra_MultiVector::NumVectors ( class(Epetra_MultiVector), intent(in)  this) [private]


Number of vectors in multivector

subroutine FEpetra_MultiVector::PutScalar ( class(Epetra_MultiVector), intent(inout)  this,
real(c_double), intent(in)  scalar,
type(error), intent(out), optional  err 
) [private]


Replaces all entries with scalar value.

Parameters:
[in]scalarIn The scalar to which all entries will be set
[out]errReturns error information.
subroutine FEpetra_MultiVector::Random ( class(Epetra_MultiVector), intent(inout)  this,
type(error), intent(out), optional  err 
) [private]


Replaces all entries with random values.

Parameters:
[out]errReturns error information.
subroutine FEpetra_MultiVector::Reciprocal ( class(Epetra_MultiVector), intent(inout)  this,
class(Epetra_MultiVector), intent(in)  A,
type(error), intent(out), optional  err 
) [private]


Reciprocal replaces target with element-wise reciprocal value of input

Parameters:
[in]AIn The source multivector.
[out]errReturns error information.
subroutine FEpetra_MultiVector::ReciprocalMultiply ( class(Epetra_MultiVector), intent(in)  this,
real(c_double), intent(in)  ScalarAB,
class(Epetra_MultiVector), intent(in)  A,
class(Epetra_MultiVector), intent(in)  B,
real(c_double), intent(in)  ScalarThis,
type(error), intent(out), optional  err 
) [private]


Element-by-element multiplication by reciprocal this = ScalarThis*This + ScalarAB*A/B

Parameters:
[in]AIn: Input multivector A
[in]BIn: Input multivector B
[in]ScalarABIn: scale factor for reciprocal product A/B
[in]ScalarThisIn: scale factor for "this"
[out]errReturns error information.
subroutine FEpetra_MultiVector::ReplaceGlobalValue ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  GlobalBlockRow,
integer(c_int), intent(in)  BlockRowOffset,
integer(c_int), intent(in)  VectorIndex,
real(c_double), intent(in)  ScalarValue,
type(error), intent(out), optional  err 
) [private]


Replaces value at location (GlobalBlockRow,BlockRowOffset,VectorIndex) with ScalarValue

The index of the specified location must correspond to an index owned by the map on the calling process; i.e. no communication takes place.

Parameters:
[in]GlobalBlockRowIn The global block row to be set
[in]BlockRowOffsetIn The global block row offest to be set
[in]VectorIndexIn The vector index within the multivector to be set
[in]ScalarValueIn The scalar value to be set
[out]errReturns error information.
subroutine FEpetra_MultiVector::ReplaceGlobalValue ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  GlobalRow,
integer(c_int), intent(in)  VectorIndex,
real(c_double), intent(in)  ScalarValue,
type(error), intent(out), optional  err 
) [private]


Replaces value at location (GlobalRow,VectorIndex) with ScalarValue

The index of the specified location must correspond to an index owned by the map on the calling process; i.e. no communication takes place.

Parameters:
[in]GlobalRowIn The global row to be set
[in]VectorIndexIn The vector index within the multivector to be set
[in]ScalarValueIn The value to be set
[out]errReturns error information.
subroutine FEpetra_MultiVector::ReplaceMyValue ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  MyBlockRow,
integer(c_int), intent(in)  BlockRowOffset,
integer(c_int), intent(in)  VectorIndex,
real(c_double), intent(in)  ScalarValue,
type(error), intent(out), optional  err 
) [private]


Replaces value at location (MyBlockRow,BlockRowOffset,VectorIndex) with ScalarValue

Parameters:
[in]MyBlockRowIn The local block row to be set
[in]BlockRowOffsetIn The local block row offset to be set
[in]VectorIndexIn The vector index within the multivector to be set
[in]ScalarValueIn The scalar value to be set
subroutine FEpetra_MultiVector::ReplaceMyValue ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  MyRow,
integer(c_int), intent(in)  VectorIndex,
real(c_double), intent(in)  ScalarValue,
type(error), intent(out), optional  err 
) [private]


Replaces value at location (MyRow,VectorIndex) with ScalarValue

The index of the specified location must be that of a locally owned element.

Parameters:
[in]MyRowIn The local row to be set
[in]VectorIndexIn The vector index within the multivector to be set
[in]ScalarValueIn The scalar value to be set
[out]errReturns error information.
subroutine FEpetra_MultiVector::Scale ( class(Epetra_MultiVector), intent(inout)  this,
real(c_double), intent(in)  scalar_value,
type(error), intent(out), optional  err 
) [private]


Scales current values this = scalar_value*this

Parameters:
[in]scalar_valueIn The scale factor.
[out]errReturns error information.
subroutine FEpetra_MultiVector::Scale ( class(Epetra_MultiVector), intent(inout)  this,
real(c_double), intent(in)  scalar_value,
class(Epetra_MultiVector), intent(in)  MultiVector,
type(error), intent(out), optional  err 
) [private]


Replaces current values with scaled input this = scalar_value*MultiVector

Parameters:
[in]MultiVectorIn The source multivector.
[in]scalar_valueIn The scale factor.
[out]errReturns error information.
integer(c_int) function FEpetra_MultiVector::Stride ( class(Epetra_MultiVector), intent(in)  this) [private]


Stride between successive vectors in multivector (only meaningful if ConstantStride()==true)

subroutine FEpetra_MultiVector::SumIntoGlobalValue ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  GlobalRow,
integer(c_int), intent(in)  VectorIndex,
real(c_double), intent(in)  ScalarValue,
type(error), intent(out), optional  err 
) [private]


Adds ScalarValue to value at location (GlobalRow,VectorIndex)

Parameters:
[in]GlobalRowIn The global row to be modified
[in]VectorIndexIn The vector index within the multivector to be modified
[in]ScalarValueIn The scalar value to be added
subroutine FEpetra_MultiVector::SumIntoGlobalValue ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  GlobalBlockRow,
integer(c_int), intent(in)  BlockRowOffset,
integer(c_int), intent(in)  VectorIndex,
real(c_double), intent(in)  ScalarValue,
type(error), intent(out), optional  err 
) [private]


Adds ScalarValue to value at location (GlobalBlockRow,BlockRowOffset,VectorIndex)

Parameters:
[in]GlobalBlockRowIn The global block row to be modified
[in]BlockRowOffsetIn The global block row offset to be modified
[in]VectorIndexIn The vector index within the multivector to be modified
[in]ScalarValueIn The scalar value to be added
[out]errReturns error information.
subroutine FEpetra_MultiVector::SumIntoMyValue ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  MyBlockRow,
integer(c_int), intent(in)  BlockRowOffset,
integer(c_int), intent(in)  VectorIndex,
real(c_double), intent(in)  ScalarValue,
type(error), intent(out), optional  err 
) [private]


Adds ScalarValue to value at location (MyBlockRow,BlockRowOffset,VectorIndex)

Parameters:
[in]MyBlockRowIn The local block row to be modified
[in]BlockRowOffsetIn The local block row offset to be modified
[in]VectorIndexIn The vector index within the multivector to be modified
[in]ScalarValueIn The scalar value to be added
[out]errReturns error information.
subroutine FEpetra_MultiVector::SumIntoMyValue ( class(Epetra_MultiVector), intent(in)  this,
integer(c_int), intent(in)  MyRow,
integer(c_int), intent(in)  VectorIndex,
real(c_double), intent(in)  ScalarValue,
type(error), intent(out), optional  err 
) [private]


Adds ScalarValue to value at location (MyRow,VectorIndex)

Parameters:
[in]MyRowIn The local row to be modified
[in]VectorIndexIn The vector index within the multivector to be modified
[in]ScalarValueIn The scalar value to be added
[out]errReturns error information.
subroutine FEpetra_MultiVector::Update ( class(Epetra_MultiVector), intent(inout)  this,
real(c_double), intent(in)  scalarA,
class(Epetra_MultiVector), intent(in)  A,
real(c_double), intent(in)  scalarThis,
type(error), intent(out), optional  err 
) [private]


Updates with scaled copy of input this = ScalarThis*This + ScalarA*A

Parameters:
[in]AIn: Input multivector A
[in]ScalarAIn: scale factor for p A
[in]ScalarThisIn: scale factor for "this"
[out]errReturns error information.
subroutine FEpetra_MultiVector::Update ( class(Epetra_MultiVector), intent(inout)  this,
real(c_double), intent(in)  scalarA,
class(Epetra_MultiVector), intent(in)  A,
real(c_double), intent(in)  scalarB,
class(Epetra_MultiVector), intent(in)  B,
real(c_double), intent(in)  scalarThis,
type(error), intent(out), optional  err 
) [private]


Updates with scaled copies of inputs this = ScalarThis*This + ScalarA*A + ScalarB*B

Parameters:
[in]ScalarAIn: scale factor for A
[in]AIn: Input multivector A
[in]ScalarBIn: scale factor for B
[in]BIn: Input multivector B
[in]ScalarThisIn: scale factor for "this"
[out]errReturns error information.

The documentation for this module was generated from the following file:
 All Classes Files Functions