The Open FUSION Toolkit 1.0.0-beta5
Modeling tools for plasma and fusion research and engineering
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
oft_petsc_vector Type Referenceabstract

Detailed Description

PETSc vector class.

Used for implementing composite fields in OFT with PETSc backend. Replacement for oft_vectors::oft_block_field when PETSc backend is being used.

Inheritance diagram for oft_petsc_vector:
Inheritance graph
[legend]

Public Member Functions

procedure(vec_add), deferred add (self, gamma, alpha, a, beta, b)
 Add fields.
 
procedure add (self, gamma, alpha, a, beta, b)
 Add vectors.
 
procedure delete (self)
 Delete field.
 
procedure delete (self)
 Delete vector.
 
generic dot (self, a)
 Dot product with a second field.
 
generic dot (self, a)
 Dot product with a second field.
 
procedure(vec_dot_cvec), deferred dot_complex (self, a)
 
procedure dot_complex (self, a)
 Dot product with a second vector.
 
procedure(vec_dot_vec), deferred dot_real (self, a)
 
procedure dot_real (self, a)
 Dot product with a second vector.
 
procedure(vec_get_local), deferred get_local (self, array, iblock)
 Get local portion of field.
 
procedure get_local (self, array, iblock)
 Get local portion of field.
 
procedure(vec_get_slice), deferred get_slice (self, array, iblock)
 Get owned portion of field.
 
procedure get_slice (self, array, iblock)
 Get owned portion of field.
 
generic mdot (self, a, n)
 Dot product with a set of fields.
 
generic mdot (self, a, n)
 Dot product with a set of fields.
 
procedure(vec_mdot_cvec), deferred mdot_complex (self, a, n)
 
procedure mdot_complex (self, a, n)
 Dot product with a second vector.
 
procedure(vec_mdot_vec), deferred mdot_real (self, a, n)
 
procedure mdot_real (self, a, n)
 Dot product with a second vector.
 
procedure(vec_mult), deferred mult (self, a, div_flag)
 Multiply fields element by element.
 
procedure mult (self, a, div_flag)
 Multiply fields element by element.
 
generic new (self, new)
 Create a new field as a bare copy.
 
generic new (self, new)
 Create a new field as a bare copy.
 
procedure(vec_new_cvec), deferred new_complex (self, new)
 
procedure new_complex (self, new)
 Create a new vector as a bare copy.
 
procedure(vec_new_vec), deferred new_real (self, new)
 
procedure new_real (self, new)
 Create a new vector as a bare copy.
 
procedure(vec_norm), deferred norm (self, itype)
 Norm of field.
 
procedure norm (self, itype)
 Norm of vector.
 
procedure(vec_restore_local), deferred restore_local (self, array, iblock, add, wait)
 Restore local portion of field.
 
procedure restore_local (self, array, iblock, add, wait)
 Restore local portion of field.
 
procedure(vec_restore_slice), deferred restore_slice (self, array, iblock, wait)
 Restore owned portion of field.
 
procedure restore_slice (self, array, iblock, wait)
 Restore owned portion of field.
 
procedure(vec_scale), deferred scale (self, alpha)
 Scale field by a scalar.
 
procedure scale (self, alpha)
 Scale vector by a scalar.
 
procedure(vec_set), deferred set (self, alpha, iblock, random)
 Set all elements to a scalar.
 
procedure set (self, alpha, iblock, random)
 Set all elements to a scalar.
 
procedure(vec_stitch), deferred stitch (self, up_method)
 Perform global sitching.
 
procedure stitch (self, up_method)
 Perform global stitching.
 
procedure(vec_sum), deferred sum (self)
 Sum reduction over field.
 
procedure sum (self)
 Sum reduction over vector.
 

Public Attributes

type(tvecscatter) get
 PETSc local to global scatter context.
 
type(tis) lis
 PETSc local to global mapping.
 
logical loc_current = .FALSE.
 Flag indicating local/global vectors are consistent.
 
logical loc_store = .FALSE.
 Flag indicating pending local->global sync.
 
type(oft_map), dimension(:), pointer map => NULL()
 Block mapping.
 
integer(i4n = -1
 Local size of field.
 
integer(i4nblocks = 1
 Number of blocks.
 
integer(i8ng = -1
 Gobal size of field.
 
integer(i4nslice = -1
 Local size of field.
 
type(oft_seam), pointer stitch_info => NULL()
 Seam information.
 
type(tvec) v
 PETSc vector object.
 
type(tvec) vloc
 PETSc local vector object.
 

Member Function/Subroutine Documentation

◆ add() [1/2]

procedure(vec_add), deferred add ( class(oft_vector), intent(inout)  self,
real(r8), intent(in)  gamma,
real(r8), intent(in)  alpha,
class(oft_vector), intent(inout), target  a,
real(r8), intent(in), optional  beta,
class(oft_vector), intent(inout), optional, target  b 
)
pure virtualinherited

Add fields.

◆ add() [2/2]

procedure add ( class(oft_petsc_vector), intent(inout)  self,
real(r8), intent(in)  gamma,
real(r8), intent(in)  alpha,
class(oft_vector), intent(in), target  a,
real(r8), intent(in), optional  beta,
class(oft_vector), intent(in), optional, target  b 
)

Add vectors.

self = \( \gamma \) self + \( \alpha \) a + \( \beta \) b

Parameters
[in]gammaScale of source vector
[in]alphaScale of first vector
[in]aFirst vector to add
[in]betaScale of second vector (optional)
[in]bSecond vector to add (optional)

◆ delete() [1/2]

procedure delete ( class(oft_vector), intent(inout)  self)
inherited

Delete field.

Note
This subroutine is a dummy routine used to specify the interface of the member function and catch errors in uninitialized fields.

◆ delete() [2/2]

procedure delete ( class(oft_petsc_vector), intent(inout)  self)

Delete vector.

◆ dot() [1/2]

generic dot ( class(oft_vector), intent(inout)  self,
class(oft_vector), intent(inout), target  a 
)
inherited

Dot product with a second field.

◆ dot() [2/2]

generic dot ( class(oft_vector), intent(inout)  self,
class(oft_cvector), intent(inout), target  a 
)
inherited

Dot product with a second field.

◆ dot_complex() [1/2]

procedure(vec_dot_cvec), deferred dot_complex ( class(oft_vector), intent(inout)  self,
class(oft_cvector), intent(inout), target  a 
)
pure virtualinherited

◆ dot_complex() [2/2]

procedure dot_complex ( class(oft_petsc_vector), intent(inout)  self,
class(oft_cvector), intent(in), target  a 
)

Dot product with a second vector.

Parameters
[in]aSecond vector for dot product
Returns
\( \sum_i self_i a_i \)

◆ dot_real() [1/2]

procedure(vec_dot_vec), deferred dot_real ( class(oft_vector), intent(inout)  self,
class(oft_vector), intent(inout), target  a 
)
pure virtualinherited

◆ dot_real() [2/2]

procedure dot_real ( class(oft_petsc_vector), intent(inout)  self,
class(oft_vector), intent(in), target  a 
)

Dot product with a second vector.

Parameters
[in]aSecond vector for dot product
Returns
\( \sum_i self_i a_i \)

◆ get_local() [1/2]

procedure(vec_get_local), deferred get_local ( class(oft_vector), intent(inout)  self,
real(r8), dimension(:), intent(inout), pointer  array,
integer(i4), intent(in), optional  iblock 
)
pure virtualinherited

Get local portion of field.

◆ get_local() [2/2]

procedure get_local ( class(oft_petsc_vector), intent(inout)  self,
real(r8), dimension(:), intent(inout), pointer  array,
integer(i4), intent(in), optional  iblock 
)

Get local portion of field.

Parameters
[in]alphaUpdated field value
Note
This subroutine is a dummy routine used to specify the interface of the member function and catch errors in uninitialized fields.

◆ get_slice() [1/2]

procedure(vec_get_slice), deferred get_slice ( class(oft_vector), intent(inout)  self,
real(r8), dimension(:), intent(inout), pointer  array,
integer(i4), intent(in), optional  iblock 
)
pure virtualinherited

Get owned portion of field.

◆ get_slice() [2/2]

procedure get_slice ( class(oft_petsc_vector), intent(inout)  self,
real(r8), dimension(:), intent(inout), pointer  array,
integer(i4), intent(in), optional  iblock 
)

Get owned portion of field.

Parameters
[in]alphaUpdated field value
Note
This subroutine is a dummy routine used to specify the interface of the member function and catch errors in uninitialized fields.

◆ mdot() [1/2]

generic mdot ( class(oft_vector), intent(inout)  self,
type(oft_vector_ptr), dimension(n), intent(inout)  a,
integer(i4), intent(in)  n 
)
inherited

Dot product with a set of fields.

◆ mdot() [2/2]

generic mdot ( class(oft_vector), intent(inout)  self,
type(oft_cvector_ptr), dimension(n), intent(inout)  a,
integer(i4), intent(in)  n 
)
inherited

Dot product with a set of fields.

◆ mdot_complex() [1/2]

procedure(vec_mdot_cvec), deferred mdot_complex ( class(oft_vector), intent(inout)  self,
type(oft_cvector_ptr), dimension(n), intent(inout)  a,
integer(i4), intent(in)  n 
)
pure virtualinherited

◆ mdot_complex() [2/2]

procedure mdot_complex ( class(oft_petsc_vector), intent(inout)  self,
type(oft_vector_ptr), dimension(n), intent(in)  a,
integer(i4), intent(in)  n 
)

Dot product with a second vector.

Parameters
[in]aSecond vector for dot product
Returns
\( \sum_i self_i a_i \)

◆ mdot_real() [1/2]

procedure(vec_mdot_vec), deferred mdot_real ( class(oft_vector), intent(inout)  self,
type(oft_vector_ptr), dimension(n), intent(inout)  a,
integer(i4), intent(in)  n 
)
pure virtualinherited

◆ mdot_real() [2/2]

procedure mdot_real ( class(oft_petsc_vector), intent(inout)  self,
type(oft_vector_ptr), dimension(n), intent(in)  a,
integer(i4), intent(in)  n 
)

Dot product with a second vector.

Parameters
[in]aSecond vector for dot product
Returns
\( \sum_i self_i a_i \)

◆ mult() [1/2]

procedure(vec_mult), deferred mult ( class(oft_vector), intent(inout)  self,
class(oft_vector), intent(inout), target  a,
logical, intent(in), optional  div_flag 
)
pure virtualinherited

Multiply fields element by element.

◆ mult() [2/2]

procedure mult ( class(oft_petsc_vector), intent(inout)  self,
class(oft_vector), intent(in), target  a,
logical, intent(in), optional  div_flag 
)

Multiply fields element by element.

\( self_i = self_i * a_i \)

Parameters
[in]aFirst field to add

◆ new() [1/2]

generic new ( class(oft_vector), intent(in)  self,
class(oft_cvector), intent(out), pointer  new 
)
inherited

Create a new field as a bare copy.

◆ new() [2/2]

generic new ( class(oft_vector), intent(in)  self,
class(oft_vector), intent(out), pointer  new 
)
inherited

Create a new field as a bare copy.

◆ new_complex() [1/2]

procedure(vec_new_cvec), deferred new_complex ( class(oft_vector), intent(in)  self,
class(oft_cvector), intent(out), pointer  new 
)
pure virtualinherited

◆ new_complex() [2/2]

procedure new_complex ( class(oft_petsc_vector), intent(in)  self,
class(oft_cvector), intent(out), pointer  new 
)

Create a new vector as a bare copy.

Creates a new vector of the same size and with the same gobal mapping. The new vector is also initialized to 0.

Parameters
[out]newNew vector

◆ new_real() [1/2]

procedure(vec_new_vec), deferred new_real ( class(oft_vector), intent(in)  self,
class(oft_vector), intent(out), pointer  new 
)
pure virtualinherited

◆ new_real() [2/2]

procedure new_real ( class(oft_petsc_vector), intent(in)  self,
class(oft_vector), intent(out), pointer  new 
)

Create a new vector as a bare copy.

Creates a new vector of the same size and with the same gobal mapping. The new vector is also initialized to 0.

Parameters
[out]newNew vector

◆ norm() [1/2]

procedure(vec_norm), deferred norm ( class(oft_vector), intent(inout)  self,
integer(i4), intent(in)  itype 
)
pure virtualinherited

Norm of field.

◆ norm() [2/2]

procedure norm ( class(oft_petsc_vector), intent(inout)  self,
integer(i4), intent(in)  itype 
)

Norm of vector.

Parameters
[in]itypeType of norm (1-> 1-norm, 2-> 2-norm, 3-> Inf-norm)
Returns
norm(self)

◆ restore_local() [1/2]

procedure(vec_restore_local), deferred restore_local ( class(oft_vector), intent(inout)  self,
real(r8), dimension(:), intent(in)  array,
integer(i4), intent(in), optional  iblock,
logical, intent(in), optional  add,
logical, intent(in), optional  wait 
)
pure virtualinherited

Restore local portion of field.

◆ restore_local() [2/2]

procedure restore_local ( class(oft_petsc_vector), intent(inout)  self,
real(r8), dimension(:), intent(inout)  array,
integer(i4), intent(in), optional  iblock,
logical, intent(in), optional  add,
logical, intent(in), optional  wait 
)

Restore local portion of field.

Parameters
[in]alphaUpdated field value
Note
This subroutine is a dummy routine used to specify the interface of the member function and catch errors in uninitialized fields.

◆ restore_slice() [1/2]

procedure(vec_restore_slice), deferred restore_slice ( class(oft_vector), intent(inout)  self,
real(r8), dimension(:), intent(in)  array,
integer(i4), intent(in), optional  iblock,
logical, intent(in), optional  wait 
)
pure virtualinherited

Restore owned portion of field.

◆ restore_slice() [2/2]

procedure restore_slice ( class(oft_petsc_vector), intent(inout)  self,
real(r8), dimension(:), intent(in)  array,
integer(i4), intent(in), optional  iblock,
logical, intent(in), optional  wait 
)

Restore owned portion of field.

Parameters
[in]alphaUpdated field value
Note
This subroutine is a dummy routine used to specify the interface of the member function and catch errors in uninitialized fields.

◆ scale() [1/2]

procedure(vec_scale), deferred scale ( class(oft_vector), intent(inout)  self,
real(r8), intent(in)  alpha 
)
pure virtualinherited

Scale field by a scalar.

◆ scale() [2/2]

procedure scale ( class(oft_petsc_vector), intent(inout)  self,
real(r8), intent(in)  alpha 
)

Scale vector by a scalar.

self = \( \alpha \) self

Parameters
[in]alphaFactor to scale field

◆ set() [1/2]

procedure(vec_set), deferred set ( class(oft_vector), intent(inout)  self,
real(r8), intent(in)  alpha,
integer(i4), intent(in), optional  iblock,
logical, intent(in), optional  random 
)
pure virtualinherited

Set all elements to a scalar.

◆ set() [2/2]

procedure set ( class(oft_petsc_vector), intent(inout)  self,
real(r8), intent(in)  alpha,
integer(i4), intent(in), optional  iblock,
logical, intent(in), optional  random 
)

Set all elements to a scalar.

Parameters
[in]alphaUpdated vector value
[in]randomSet to random number, if true alpha is ignored (optional)

◆ stitch() [1/2]

procedure(vec_stitch), deferred stitch ( class(oft_vector), intent(inout)  self,
integer(i4), intent(in)  up_method 
)
pure virtualinherited

Perform global sitching.

◆ stitch() [2/2]

procedure stitch ( class(oft_petsc_vector), intent(inout)  self,
integer(i4), intent(in)  up_method 
)

Perform global stitching.

Parameters
[in]up_methodType of stitching to perform

◆ sum() [1/2]

procedure(vec_sum), deferred sum ( class(oft_vector), intent(inout)  self)
pure virtualinherited

Sum reduction over field.

◆ sum() [2/2]

procedure sum ( class(oft_petsc_vector), intent(inout)  self)

Sum reduction over vector.

Returns
\( \sum_i self_i \)

Member Data Documentation

◆ get

type(tvecscatter) get

PETSc local to global scatter context.

◆ lis

type(tis) lis

PETSc local to global mapping.

◆ loc_current

logical loc_current = .FALSE.

Flag indicating local/global vectors are consistent.

◆ loc_store

logical loc_store = .FALSE.

Flag indicating pending local->global sync.

◆ map

type(oft_map), dimension(:), pointer map => NULL()
inherited

Block mapping.

◆ n

integer(i4) n = -1
inherited

Local size of field.

◆ nblocks

integer(i4) nblocks = 1
inherited

Number of blocks.

◆ ng

integer(i8) ng = -1
inherited

Gobal size of field.

◆ nslice

integer(i4) nslice = -1
inherited

Local size of field.

◆ stitch_info

type(oft_seam), pointer stitch_info => NULL()
inherited

Seam information.

◆ v

type(tvec) v

PETSc vector object.

◆ vloc

type(tvec) vloc

PETSc local vector object.


The documentation for this type was generated from the following file: