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

Detailed Description

Clean the divergence from a H(Curl) vector field.

Divergence is removed by adding a gradient field, such that \( f = f + \nabla \phi \), where \( \nabla^2 \phi = - \nabla \cdot f \). Cleaning may also be applied to a field which is pre-multiplied by the H(Curl)::MOP in which case \( \nabla^2 \phi = - \nabla^T f \) and \( f = f + M \nabla \phi \). The mass matrix version is applied if mop is associated with the corresponding H(Curl)::MOP.

Note
This only removes the 0-th order component, which is sufficient for orthogonalization against the H(Curl)::WOP null space. Higher order cleaning requires the full H(Curl) + Grad(H^1) vector space.
Inheritance diagram for oft_hcurl_divout:
Inheritance graph
[legend]

Public Member Functions

procedure apply (self, a)
 Clean divergence from field.
 
procedure(oft_bc_proto), deferred apply (self, a)
 Apply boundary condition to field.
 
procedure delete (self)
 Clean-up internal storage.
 
procedure(oft_bc_delete), deferred delete (self)
 Clean-up internal storage.
 
procedure setup (self, ml_hcurl_rep, ml_lag_rep, bc, solver)
 Setup matrix and solver with default.
 

Public Attributes

integer(i4app_freq =1
 Frequency to apply solver.
 
class(oft_solver_bc), pointer bc => NULL()
 Boundary condition.
 
integer(i4count =0
 Number of times apply has been called.
 
logical internal_solver = .FALSE.
 Solver was constructed internally?
 
class(oft_ml_fem_type), pointer ml_hcurl_rep => NULL()
 Lagrange FE space.
 
class(oft_ml_fem_type), pointer ml_lag_rep => NULL()
 Lagrange FE space.
 
class(oft_matrix), pointer mop => NULL()
 Mass matrix, applies divoutm if associated.
 
logical pm = .FALSE.
 Flag for solver convergence monitor.
 
class(oft_solver), pointer solver => NULL()
 Solver object for LAG::LOP operator.
 

Member Function/Subroutine Documentation

◆ apply() [1/2]

procedure apply ( class(oft_hcurl_divout), intent(inout)  self,
class(oft_vector), intent(inout)  a 
)

Clean divergence from field.

Parameters
[in,out]aField for divergence cleaning

◆ apply() [2/2]

procedure(oft_bc_proto), deferred apply ( class(oft_solver_bc), intent(inout)  self,
class(oft_vector), intent(inout)  a 
)
pure virtualinherited

Apply boundary condition to field.

Parameters
[in,out]selfBoundary condition object
[in,out]aField to apply BC to

◆ delete() [1/2]

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

Clean-up internal storage.

◆ delete() [2/2]

procedure(oft_bc_delete), deferred delete ( class(oft_solver_bc), intent(inout)  self)
pure virtualinherited

Clean-up internal storage.

Parameters
[in,out]selfBoundary condition object

◆ setup()

procedure setup ( class(oft_hcurl_divout), intent(inout)  self,
class(oft_ml_fem_type), intent(inout), target  ml_hcurl_rep,
class(oft_ml_fem_type), intent(inout), target  ml_lag_rep,
character(len=*), intent(in)  bc,
class(oft_solver), intent(in), optional, target  solver 
)

Setup matrix and solver with default.

Parameters
[in]bcBoundary condition

Member Data Documentation

◆ app_freq

integer(i4) app_freq =1

Frequency to apply solver.

◆ bc

class(oft_solver_bc), pointer bc => NULL()

Boundary condition.

◆ count

integer(i4) count =0

Number of times apply has been called.

◆ internal_solver

logical internal_solver = .FALSE.

Solver was constructed internally?

◆ ml_hcurl_rep

class(oft_ml_fem_type), pointer ml_hcurl_rep => NULL()

Lagrange FE space.

◆ ml_lag_rep

class(oft_ml_fem_type), pointer ml_lag_rep => NULL()

Lagrange FE space.

◆ mop

class(oft_matrix), pointer mop => NULL()

Mass matrix, applies divoutm if associated.

◆ pm

logical pm = .FALSE.

Flag for solver convergence monitor.

◆ solver

class(oft_solver), pointer solver => NULL()

Solver object for LAG::LOP operator.


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