The Open FUSION Toolkit 1.0.0-beta6
Modeling tools for plasma and fusion research and engineering
Loading...
Searching...
No Matches
thin_wall_hodlr Module Reference

Detailed Description

Hierarchical Off-Diagonal Low Rank matrix approximation functionality for ThinCurr.

  • SVD compression
  • Adaptive Cross Approximation
Authors
Chris Hansen
Date
Feb 2024

Data Types

type  cmat_container
 Needs docs. More...
type  oft_tw_block
 Needs docs. More...
type  oft_tw_hodlr_bjpre
 Complex block-Jacobi preconditioner for ThinCurr HODLR matrices. More...
type  oft_tw_hodlr_op
 Needs docs. More...
type  oft_tw_hodlr_rbjpre
 Real block-Jacobi preconditioner for ThinCurr HODLR matrices. More...
type  oft_tw_level
 Needs docs. More...
type  rmat_container
 Needs docs. More...

Functions/Subroutines

recursive subroutine bjprecond_apply (self, u, g)
 Precondition a linear system using a Block-Jacobi method (complex).
subroutine bjprecond_delete (self)
 Destroy Block-Jacobi preconditioner and deallocate all internal storage.
subroutine get_qr (mat, q, r)
recursive subroutine rbjprecond_apply (self, u, g)
 Precondition a linear system using a Block-Jacobi method (real).
subroutine rbjprecond_delete (self)
 Destroy Block-Jacobi preconditioner and deallocate all internal storage.
subroutine tw_compute_bops_block (self, bop, row_block, col_block, dir)
 Needs Docs.
subroutine tw_compute_bops_hole (self, bop, bop_dr)
 Needs Docs.
subroutine tw_compute_lmatblock (row_obj, col_obj, lmat, row_block, col_block)
 Compute mutual inductance matrix between two thin-wall models.
subroutine tw_compute_lmathole (row_obj, col_obj, lmat)
 Compute mutual inductance matrix between two thin-wall models.
subroutine tw_hodlr_bapply (self, a, bx, by, bz)
 Apply the matrix to a field.
subroutine tw_hodlr_bcompute (self, save_file)
 Needs Docs.
subroutine tw_hodlr_lapply (self, a, b)
 Apply the matrix to a field.
subroutine tw_hodlr_lassemble (self, diag)
 Needs docs.
subroutine tw_hodlr_lcompute (self, save_file)
 Needs Docs.
subroutine tw_hodlr_setup (self, required)
 Needs Docs.
subroutine tw_part_mesh (self, leaf_target, nlevels, levels)
 Needs Docs.

Function/Subroutine Documentation

◆ bjprecond_apply()

recursive subroutine bjprecond_apply ( class(oft_tw_hodlr_bjpre), intent(inout) self,
class(oft_cvector), intent(inout) u,
class(oft_cvector), intent(inout) g )

Precondition a linear system using a Block-Jacobi method (complex).

Parameters
[in,out]selfSolver object
[in,out]uGuess/Solution field
[in,out]gRHS/Residual field

◆ bjprecond_delete()

subroutine bjprecond_delete ( class(oft_tw_hodlr_bjpre), intent(inout) self)

Destroy Block-Jacobi preconditioner and deallocate all internal storage.

◆ get_qr()

subroutine get_qr ( real(8), dimension(:,:), intent(in) mat,
real(8), dimension(:,:), intent(out), allocatable q,
real(8), dimension(:,:), intent(out), allocatable r )

◆ rbjprecond_apply()

recursive subroutine rbjprecond_apply ( class(oft_tw_hodlr_rbjpre), intent(inout) self,
class(oft_vector), intent(inout) u,
class(oft_vector), intent(inout) g )

Precondition a linear system using a Block-Jacobi method (real).

Parameters
[in,out]selfSolver object
[in,out]uGuess/Solution field
[in,out]gRHS/Residual field

◆ rbjprecond_delete()

subroutine rbjprecond_delete ( class(oft_tw_hodlr_rbjpre), intent(inout) self)

Destroy Block-Jacobi preconditioner and deallocate all internal storage.

◆ tw_compute_bops_block()

subroutine tw_compute_bops_block ( type(tw_type), intent(inout) self,
real(8), dimension(:,:), intent(out) bop,
type(oft_tw_block), intent(in) row_block,
type(oft_tw_block), intent(in) col_block,
integer(4), intent(in) dir )

Needs Docs.

Parameters
[out]bopMagnetic field evaluation matrix
[in]row_blockBlock of rows to compute
[in]col_blockBlock of columns to compute

◆ tw_compute_bops_hole()

subroutine tw_compute_bops_hole ( type(tw_type), intent(inout) self,
real(8), dimension(:,:,:), intent(out) bop,
real(8), dimension(:,:,:), intent(out) bop_dr )

Needs Docs.

Parameters
[out]bopMagnetic field evaluation matrix
[out]bop_drMagnetic field evaluation matrix

◆ tw_compute_lmatblock()

subroutine tw_compute_lmatblock ( type(tw_type), intent(in) row_obj,
type(tw_type), intent(in) col_obj,
real(8), dimension(:,:), intent(out) lmat,
type(oft_tw_block), intent(in) row_block,
type(oft_tw_block), intent(in) col_block )

Compute mutual inductance matrix between two thin-wall models.

Parameters
[in]row_objThin-wall model object for rows
[in]col_objThin-wall model object for columns
[in]row_blockBlock of rows to compute
[in]col_blockBlock of columns to compute
[out]lmatMutual inductance matrix

◆ tw_compute_lmathole()

subroutine tw_compute_lmathole ( type(tw_type), intent(in) row_obj,
type(tw_type), intent(in) col_obj,
real(8), dimension(:,:), intent(inout), pointer, contiguous lmat )

Compute mutual inductance matrix between two thin-wall models.

Parameters
[in]row_objThin-wall model object for rows
[in]col_objThin-wall model object for columns
[in,out]lmatMutual inductance matrix

◆ tw_hodlr_bapply()

subroutine tw_hodlr_bapply ( class(oft_tw_hodlr_op), intent(inout) self,
class(oft_vector), intent(inout), target a,
class(oft_vector), intent(inout) bx,
class(oft_vector), intent(inout) by,
class(oft_vector), intent(inout) bz )

Apply the matrix to a field.

b = self * a

Note
This subroutine is a dummy routine used to specify the interface of the member function and catch errors in uninitialized matrices.
Parameters
[in]aSource field
[out]bResult of matrix product

◆ tw_hodlr_bcompute()

subroutine tw_hodlr_bcompute ( class(oft_tw_hodlr_op), intent(inout) self,
character(len=*), intent(in), optional save_file )

Needs Docs.

◆ tw_hodlr_lapply()

subroutine tw_hodlr_lapply ( class(oft_tw_hodlr_op), intent(inout) self,
class(oft_vector), intent(inout), target a,
class(oft_vector), intent(inout) b )

Apply the matrix to a field.

b = self * a

Note
This subroutine is a dummy routine used to specify the interface of the member function and catch errors in uninitialized matrices.
Parameters
[in]aSource field
[out]bResult of matrix product

◆ tw_hodlr_lassemble()

subroutine tw_hodlr_lassemble ( class(oft_tw_hodlr_op), intent(inout) self,
class(oft_vector), intent(inout), optional, target diag )

Needs docs.

◆ tw_hodlr_lcompute()

subroutine tw_hodlr_lcompute ( class(oft_tw_hodlr_op), intent(inout) self,
character(len=*), intent(in), optional save_file )

Needs Docs.

◆ tw_hodlr_setup()

subroutine tw_hodlr_setup ( class(oft_tw_hodlr_op), intent(inout) self,
logical, intent(in) required )

Needs Docs.

◆ tw_part_mesh()

subroutine tw_part_mesh ( type(tw_type), intent(inout) self,
integer(4), intent(in) leaf_target,
integer(4), intent(out) nlevels,
type(oft_tw_level), dimension(:), intent(out), pointer levels )

Needs Docs.

Need docs

Need docs