|
The Open FUSION Toolkit 1.0.0-beta5
Modeling tools for plasma and fusion research and engineering
|
Nedelec H1 FE operator definitions.
Data Types | |
| type | oft_h1_cinterp |
| Interpolate \( \nabla \times \) of a H1 vector field. More... | |
| type | oft_h1_dinterp |
| Interpolate \( \nabla \times \) of a H1 vector field. More... | |
| type | oft_h1_divout |
| Clean the divergence from a H1 vector field. More... | |
| type | oft_h1_rinterp |
| Interpolate a H1 vector field. More... | |
| type | oft_h1_zerograd |
| Orthogonalize a H1 vector field by zeroing the gradient subspace. More... | |
Functions/Subroutines | |
| subroutine | h1_base_pop (acors, afine) |
| Transfer a base level Lagrange scalar field to the next MPI level. | |
| subroutine | h1_base_push (afine, acors) |
| Transfer a MPI level Lagrange scalar field to the base level. | |
| subroutine | h1_bmc (a, hcpc, hcpv, new_tol) |
| Compute the 0-th order gradient due to a jump plane. | |
| subroutine | h1_cinterp (self, cell, f, gop, val) |
| Reconstruct \( \nabla \times \) of a Nedelec H1 vector field. | |
| subroutine | h1_curltp (a, b) |
| Apply the curl transpose operator to a H1 field. | |
| subroutine | h1_dinterp (self, cell, f, gop, val) |
| Reconstruct \( \nabla \cdot \) of a Nedelec H1 vector field. | |
| subroutine | h1_div (a, b) |
| Apply the divergence operator to a H1 field. | |
| subroutine | h1_divout_apply (self, u) |
| Remove divergence from a H1 vector field by adding a gradient correction. | |
| subroutine | h1_divout_delete (self) |
| Clean-up internal storage for a oft_h1_divout object. | |
| subroutine | h1_divout_setup (self, bc) |
| Setup matrix and solver with default. | |
| subroutine | h1_getmop (mat, bc) |
| Construct mass matrix for a H1 representation. | |
| subroutine | h1_getmop_pre (pre, mats, level, nlevels) |
| Compute eigenvalues and smoothing coefficients for the operator H1::MOP. | |
| subroutine | h1_grad (a, b, keep_boundary) |
| Add the gradient of a H0 scalar field to a H1 vector field. | |
| subroutine | h1_gradtp (a, b) |
| Apply the transposed gradient operator to a Nedelec H1 vector field. | |
| subroutine | h1_inject (afine, acors) |
| Inject a fine level Lagrange scalar field to the next coarsest level. | |
| subroutine | h1_interp (acors, afine) |
| Interpolate a coarse level Lagrange scalar field to the next finest level. | |
| real(r8) function | h1_jump_error (u, quad_order) |
| Evaluate the jump error in a field over internal faces. | |
| subroutine | h1_mc (a, hcpc, hcpv, new_tol) |
| Compute the 0-th order gradient due to a jump plane. | |
| subroutine | h1_mloptions |
| Read-in options for the basic Nedelec H1(Curl) ML preconditioners. | |
| subroutine | h1_mop_eigs (minlev) |
| Compute eigenvalues and smoothing coefficients for the operator H1::MOP. | |
| subroutine | h1_rinterp (self, cell, f, gop, val) |
| Reconstruct a Nedelec H1 vector field. | |
| subroutine | h1_rinterp_delete (self) |
| Destroy temporary internal storage. | |
| subroutine | h1_rinterp_setup (self) |
| Setup interpolator for H1 vector fields. | |
| subroutine | h1_setup_interp (create_full) |
| Construct interpolation matrices on each MG level. | |
| subroutine | h1_zerob (a) |
| Zero a Nedelec H1 vector field at all boundary nodes. | |
| subroutine | h1_zerograd_apply (self, u) |
| subroutine | h1_zerograd_delete (self) |
| subroutine | h1_zeroi (a) |
| Zero a Nedelec H1 vector field at all interior nodes. | |
| subroutine | h1curl_zerob (a) |
| Zero the curl components of a Nedelec H1 vector field at all boundary nodes. | |
| subroutine | h1grad_zerop (a) |
| Zero the gradient components of a Nedelec H1 vector field at all boundary nodes. | |
| subroutine | hgrad_ginterpmatrix (mat) |
| Construct interpolation matrix for polynomial levels. | |
| subroutine | oft_h1_bproject (field, x) |
| Boundary projection of a vector field onto a H1 basis. | |
| subroutine | oft_h1_project (field, x) |
| Project a vector field onto a H1 basis. | |
Variables | |
| real(r8), dimension(fem_max_levels), private | df_mop =-1.d99 |
| integer(i4), dimension(fem_max_levels), private | nu_mop =0 |
| subroutine h1_base_pop | ( | class(oft_vector), intent(inout) | acors, |
| class(oft_vector), intent(inout) | afine | ||
| ) |
Transfer a base level Lagrange scalar field to the next MPI level.
| [in] | acors | Vector to transfer |
| [in,out] | afine | Fine vector from transfer |
| subroutine h1_base_push | ( | class(oft_vector), intent(inout) | afine, |
| class(oft_vector), intent(inout) | acors | ||
| ) |
Transfer a MPI level Lagrange scalar field to the base level.
| [in] | afine | Vector to transfer |
| [in,out] | acors | Fine vector from transfer |
| subroutine h1_bmc | ( | class(oft_vector), intent(inout) | a, |
| real(r8), dimension(3), intent(in) | hcpc, | ||
| real(r8), dimension(3), intent(in) | hcpv, | ||
| real(r8), intent(in), optional | new_tol | ||
| ) |
Compute the 0-th order gradient due to a jump plane.
The jump is represented as a circular surface defined by a center possition and surface normal. This method requires that the mesh contain a matching internal surface, such that no edge crosses the jump plane.
| [in,out] | a | Jump field |
| [in] | hcpc | Jump plane center possition [3] |
| [in] | hcpv | Jump plane normal vector [3] |
| subroutine h1_cinterp | ( | class(oft_h1_cinterp), intent(inout) | self, |
| integer(i4), intent(in) | cell, | ||
| real(r8), dimension(:), intent(in) | f, | ||
| real(r8), dimension(3,4), intent(in) | gop, | ||
| real(r8), dimension(:), intent(out) | val | ||
| ) |
Reconstruct \( \nabla \times \) of a Nedelec H1 vector field.
| [in] | cell | Cell for interpolation |
| [in] | f | Possition in cell in logical coord [4] |
| [in] | gop | Logical gradient vectors at f [3,4] |
| [out] | val | Reconstructed field at f [3] |
| subroutine h1_curltp | ( | class(oft_vector), intent(inout) | a, |
| class(oft_vector), intent(inout) | b | ||
| ) |
Apply the curl transpose operator to a H1 field.
| subroutine h1_dinterp | ( | class(oft_h1_dinterp), intent(inout) | self, |
| integer(i4), intent(in) | cell, | ||
| real(r8), dimension(:), intent(in) | f, | ||
| real(r8), dimension(3,4), intent(in) | gop, | ||
| real(r8), dimension(:), intent(out) | val | ||
| ) |
Reconstruct \( \nabla \cdot \) of a Nedelec H1 vector field.
| [in] | cell | Cell for interpolation |
| [in] | f | Possition in cell in logical coord [4] |
| [in] | gop | Logical gradient vectors at f [3,4] |
| [out] | val | Reconstructed field at f [1] |
| subroutine h1_div | ( | class(oft_vector), intent(inout) | a, |
| class(oft_vector), intent(inout) | b | ||
| ) |
Apply the divergence operator to a H1 field.
| subroutine h1_divout_apply | ( | class(oft_h1_divout), intent(inout) | self, |
| class(oft_vector), intent(inout) | u | ||
| ) |
Remove divergence from a H1 vector field by adding a gradient correction.
| [in,out] | u | Field for divergence cleaning |
| subroutine h1_divout_delete | ( | class(oft_h1_divout), intent(inout) | self | ) |
Clean-up internal storage for a oft_h1_divout object.
| subroutine h1_divout_setup | ( | class(oft_h1_divout), intent(inout) | self, |
| character(len=*), intent(in) | bc | ||
| ) |
Setup matrix and solver with default.
| [in] | bc | Boundary condition |
| subroutine h1_getmop | ( | class(oft_matrix), intent(inout), pointer | mat, |
| character(len=*), intent(in) | bc | ||
| ) |
Construct mass matrix for a H1 representation.
Supported boundary conditions
'none' Full matrix'zerob' Dirichlet for all boundary DOF| [in,out] | mat | Matrix object |
| [in] | bc | Boundary condition |
| subroutine h1_getmop_pre | ( | class(oft_solver), intent(out), pointer | pre, |
| type(oft_matrix_ptr), dimension(:), intent(inout), pointer | mats, | ||
| integer(i4), intent(in), optional | level, | ||
| integer(i4), intent(in), optional | nlevels | ||
| ) |
Compute eigenvalues and smoothing coefficients for the operator H1::MOP.
| subroutine h1_grad | ( | class(oft_vector), intent(inout) | a, |
| class(oft_vector), intent(inout) | b, | ||
| logical, intent(in), optional | keep_boundary | ||
| ) |
Add the gradient of a H0 scalar field to a H1 vector field.
keep_boundary flag otherwise.| [in,out] | a | Scalar field |
| [in,out] | b | Vector field for gradient |
| [in] | keep_boundary | Flag to keep 0-th order boundary component (optional) |
| subroutine h1_gradtp | ( | class(oft_vector), intent(inout) | a, |
| class(oft_vector), intent(inout) | b | ||
| ) |
Apply the transposed gradient operator to a Nedelec H1 vector field.
| [in,out] | a | Input field |
| [in,out] | b | \( G^{T} a \) |
| subroutine h1_inject | ( | class(oft_vector), intent(inout) | afine, |
| class(oft_vector), intent(inout) | acors | ||
| ) |
Inject a fine level Lagrange scalar field to the next coarsest level.
| [in] | afine | Vector to inject |
| [in,out] | acors | Coarse vector from injection |
| subroutine h1_interp | ( | class(oft_vector), intent(inout) | acors, |
| class(oft_vector), intent(inout) | afine | ||
| ) |
Interpolate a coarse level Lagrange scalar field to the next finest level.
| [in] | acors | Vector to interpolate |
| [in,out] | afine | Fine vector from interpolation |
| real(r8) function h1_jump_error | ( | class(oft_vector), intent(inout) | u, |
| integer(i4), intent(in) | quad_order | ||
| ) |
Evaluate the jump error in a field over internal faces.
| [in,out] | u | H1 vector field to evaluate |
| [in] | quad_order | Desired quadrature order for integration |
| subroutine h1_mc | ( | class(oft_vector), intent(inout) | a, |
| real(r8), dimension(3), intent(in) | hcpc, | ||
| real(r8), dimension(3), intent(in) | hcpv, | ||
| real(r8), intent(in), optional | new_tol | ||
| ) |
Compute the 0-th order gradient due to a jump plane.
The jump is represented as a circular surface defined by a center possition and surface normal. This method requires that the mesh contain a matching internal surface, such that no edge crosses the jump plane.
| [in,out] | a | Jump field |
| [in] | hcpc | Jump plane center possition [3] |
| [in] | hcpv | Jump plane normal vector [3] |
| subroutine h1_mloptions |
Read-in options for the basic Nedelec H1(Curl) ML preconditioners.
| subroutine h1_mop_eigs | ( | integer(i4), intent(in) | minlev | ) |
Compute eigenvalues and smoothing coefficients for the operator H1::MOP.
| subroutine h1_rinterp | ( | class(oft_h1_rinterp), intent(inout) | self, |
| integer(i4), intent(in) | cell, | ||
| real(r8), dimension(:), intent(in) | f, | ||
| real(r8), dimension(3,4), intent(in) | gop, | ||
| real(r8), dimension(:), intent(out) | val | ||
| ) |
Reconstruct a Nedelec H1 vector field.
| [in] | cell | Cell for interpolation |
| [in] | f | Possition in cell in logical coord [4] |
| [in] | gop | Logical gradient vectors at f [3,4] |
| [out] | val | Reconstructed field at f [3] |
| subroutine h1_rinterp_delete | ( | class(oft_h1_rinterp), intent(inout) | self | ) |
Destroy temporary internal storage.
| subroutine h1_rinterp_setup | ( | class(oft_h1_rinterp), intent(inout) | self | ) |
Setup interpolator for H1 vector fields.
Fetches local representation used for interpolation from vector object
| subroutine h1_setup_interp | ( | logical, intent(in), optional | create_full | ) |
Construct interpolation matrices on each MG level.
| subroutine h1_zerob | ( | class(oft_vector), intent(inout) | a | ) |
Zero a Nedelec H1 vector field at all boundary nodes.
| [in,out] | a | Field to be zeroed |
| subroutine h1_zerograd_apply | ( | class(oft_h1_zerograd), intent(inout) | self, |
| class(oft_vector), intent(inout) | u | ||
| ) |
| subroutine h1_zerograd_delete | ( | class(oft_h1_zerograd), intent(inout) | self | ) |
| subroutine h1_zeroi | ( | class(oft_vector), intent(inout) | a | ) |
Zero a Nedelec H1 vector field at all interior nodes.
| [in,out] | a | Field to be zeroed |
| subroutine h1curl_zerob | ( | class(oft_vector), intent(inout) | a | ) |
Zero the curl components of a Nedelec H1 vector field at all boundary nodes.
| [in,out] | a | Field to be zeroed |
| subroutine h1grad_zerop | ( | class(oft_vector), intent(inout) | a | ) |
Zero the gradient components of a Nedelec H1 vector field at all boundary nodes.
| [in,out] | a | Field to be zeroed |
| subroutine hgrad_ginterpmatrix | ( | class(oft_matrix), intent(inout), pointer | mat | ) |
Construct interpolation matrix for polynomial levels.
| subroutine oft_h1_bproject | ( | class(fem_interp), intent(inout) | field, |
| class(oft_vector), intent(inout) | x | ||
| ) |
Boundary projection of a vector field onto a H1 basis.
| [in,out] | field | Vector field for projection |
| [in,out] | x | Field projected onto H1 basis |
| subroutine oft_h1_project | ( | class(fem_interp), intent(inout) | field, |
| class(oft_vector), intent(inout) | x | ||
| ) |
Project a vector field onto a H1 basis.
| [in,out] | field | Vector field for projection |
| [in,out] | x | Field projected onto H1 basis |
|
private |
|
private |