The Open FUSION Toolkit 1.0.0-8905cc5
Modeling tools for plasma and fusion research and engineering
|
Clean the divergence from a H(Curl) + Grad(H^1) 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 mass matrix 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 mass matrix.
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_grad_rep, bc, solver) |
Setup matrix and solver with default. | |
Public Attributes | |
integer(i4) | app_freq = 1 |
Frequency to apply solver. | |
class(oft_solver_bc), pointer | bc => NULL() |
Boundary condition. | |
class(oft_vector), pointer | bnorm => NULL() |
Normal field source on boundary. | |
integer(i4) | count = 0 |
Number of times apply has been called. | |
logical | internal_solver = .FALSE. |
Solver was constructed internally? | |
logical | keep_boundary = .FALSE. |
Flag for keeping boundary gradients. | |
class(oft_ml_fem_type), pointer | ml_curl => NULL() |
class(oft_ml_fem_type), pointer | ml_grad => NULL() |
class(oft_ml_fem_comp_type), pointer | ml_hcurl_full => NULL() |
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 H^1::LOP operator. | |
procedure apply | ( | class(oft_hcurl_grad_divout), intent(inout) | self, |
class(oft_vector), intent(inout) | a | ||
) |
Clean divergence from field.
[in,out] | a | Field for divergence cleaning |
|
pure virtualinherited |
Apply boundary condition to field.
[in,out] | self | Boundary condition object |
[in,out] | a | Field to apply BC to |
procedure delete | ( | class(oft_hcurl_grad_divout), intent(inout) | self | ) |
Clean-up internal storage.
|
pure virtualinherited |
Clean-up internal storage.
[in,out] | self | Boundary condition object |
procedure setup | ( | class(oft_hcurl_grad_divout), intent(inout) | self, |
class(oft_ml_fem_comp_type), intent(inout), target | ml_hcurl_grad_rep, | ||
character(len=*), intent(in) | bc, | ||
class(oft_solver), intent(in), optional, target | solver | ||
) |
Setup matrix and solver with default.
[in] | bc | Boundary condition |
integer(i4) app_freq = 1 |
Frequency to apply solver.
class(oft_solver_bc), pointer bc => NULL() |
Boundary condition.
class(oft_vector), pointer bnorm => NULL() |
Normal field source on boundary.
integer(i4) count = 0 |
Number of times apply has been called.
logical internal_solver = .FALSE. |
Solver was constructed internally?
logical keep_boundary = .FALSE. |
Flag for keeping boundary gradients.
class(oft_ml_fem_type), pointer ml_curl => NULL() |
class(oft_ml_fem_type), pointer ml_grad => NULL() |
class(oft_ml_fem_comp_type), pointer ml_hcurl_full => NULL() |
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 H^1::LOP operator.