BSpline Finite Element Exterior Calculus
Loading...
Searching...
No Matches
m_tensorprod_basis::tensorprodfun Type Reference

The tensor product function which is represented by a linear combination of the basis functions from a tensor product space. More...

Public Member Functions

procedure init (this, space, vec)
 Initialize a tensor product function with a given tensor product space and an optional vector.
 
procedure distribute (this)
 Distribute the tensor product B-spline function to the neighbouring ranks/subdomains.
 
procedure accumulate (this, my_data, inds)
 Accumulate the tensor product B-spline function to the neighbouring ranks/subdomains.
 
procedure destroy (this)
 Destroy a tensor product B-spline function.
 
generic assignment (out, in)
 Copy a tensor product B-spline function.
 
procedure axpy (y, a, x)
 Perform the operation this = this + a * x for tensor product B-spline functions.
 
procedure scale (this, a)
 Scale a tensor product B-spline function by a scalar.
 
procedure reset (this, vec)
 Reset the tensor product function to zero.
 
procedure is_initialized (this)
 Check if the tensor product function is initialized.
 

Public Attributes

type(tensorprodspacespace
 The tensor product space to which this function belongs.
 
real(wp), dimension(:, :, :), pointer data => null()
 The coefficients of the tensor product function.
 
type(sharedmemorywindowshmem_window
 MPI window for shared memory access.
 
logical is_on_device = .false.
 Indicates whether the data is stored on a GPU device.
 

Detailed Description

The tensor product function which is represented by a linear combination of the basis functions from a tensor product space.

Member Function/Subroutine Documentation

◆ accumulate()

procedure m_tensorprod_basis::tensorprodfun::accumulate ( class(tensorprodfun), intent(inout) this,
real(wp), dimension(:, :, :), intent(in), optional, target, contiguous my_data,
type(tensorprodindices), intent(in), optional inds )

Accumulate the tensor product B-spline function to the neighbouring ranks/subdomains.

Parameters
[in,out]thisTensor product B-spline function to accumulate
[in]my_data_(optional)_ If provided, this local data will be summed across the shared memory ranks and added to the shared window before accumulation
[in]inds_(optional)_ If provided, only accumulate the specified indices (used for non-responsible B-splines)
Note
Data from active and non-responsible B-splines is sent to the responsible ranks, and the results are added. At the end, the responsible ranks will have the full values for their responsible B-splines, while the non-responsible ranks will have zero values for their active and non-responsible B-splines. Hence, this action is idempotent (like distribute()).

◆ assignment()

generic m_tensorprod_basis::tensorprodfun::assignment ( class(tensorprodfun), intent(out) out,
class(tensorprodfun), intent(in) in )

Copy a tensor product B-spline function.

Parameters
[out]outTensor product B-spline function to copy to
[in]inTensor product B-spline function to copy from

◆ axpy()

procedure m_tensorprod_basis::tensorprodfun::axpy ( class(tensorprodfun), intent(inout) y,
real(wp), intent(in) a,
type(tensorprodfun), intent(in) x )

Perform the operation this = this + a * x for tensor product B-spline functions.

Parameters
[in,out]thisTensor product B-spline function to update
[in]aScalar multiplier
[in]xTensor product B-spline function to add

◆ destroy()

procedure m_tensorprod_basis::tensorprodfun::destroy ( class(tensorprodfun), intent(inout) this)

Destroy a tensor product B-spline function.

Parameters
[in,out]thisTensor product B-spline function to destroy

◆ distribute()

procedure m_tensorprod_basis::tensorprodfun::distribute ( class(tensorprodfun), intent(inout) this)

Distribute the tensor product B-spline function to the neighbouring ranks/subdomains.

Parameters
[in,out]thisTensor product B-spline function to distribute

◆ init()

procedure m_tensorprod_basis::tensorprodfun::init ( class(tensorprodfun), intent(out) this,
type(tensorprodspace), intent(in) space,
intent(in) vec )

Initialize a tensor product function with a given tensor product space and an optional vector.

Parameters
[out]thisTensor product function to initialize
[in]spaceTensor product space to which the function belongs
[in]vec_(optional)_ Vector containing the coefficients of the tensor product function

◆ is_initialized()

procedure m_tensorprod_basis::tensorprodfun::is_initialized ( class(tensorprodfun), intent(in) this)

Check if the tensor product function is initialized.

Parameters
[in]thisTensor product function to check
Returns
Whether the tensor product function is initialized

◆ reset()

procedure m_tensorprod_basis::tensorprodfun::reset ( class(tensorprodfun), intent(inout) this,
intent(in) vec )

Reset the tensor product function to zero.

Parameters
[in,out]thisTensor product function to reset
[in]vec_(optional)_ Vector containing the coefficients of the tensor product function

◆ scale()

procedure m_tensorprod_basis::tensorprodfun::scale ( class(tensorprodfun), intent(inout) this,
real(wp), intent(in) a )

Scale a tensor product B-spline function by a scalar.

Parameters
[in,out]thisTensor product B-spline function to scale
[in]aScalar multiplier

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