Octopus
helmholtz_decomposition.F90 File Reference

Go to the source code of this file.

Modules

module  helmholtz_decomposition_m
 The Helmholtz decomposition is intended to contain "only mathematical" functions and procedures to compute the Helmholtz decomposition of a generic field.
 

Data Types

type  helmholtz_decomposition_m::helmholtz_decomposition_t
 

Functions/Subroutines

subroutine helmholtz_decomposition_m::helmholtz_decomposition_init (this, namespace, sys_grid, system_mc, space)
 Initialize Helmholtz decomposition object. More...
 
subroutine helmholtz_decomposition_m::get_indices_from_mask (np, mask, indices)
 
subroutine helmholtz_decomposition_m::helmholtz_finalize (this)
 
subroutine helmholtz_decomposition_m::helmholtz_visualize_boxes (this, namespace, space)
 Visualise boxes for use in Helmholtz Decomposition. More...
 
subroutine helmholtz_decomposition_m::zapply_inner_stencil_mask (this, field)
 
subroutine helmholtz_decomposition_m::zsubtract_average_from_inner_stencil (this, field)
 
subroutine helmholtz_decomposition_m::zget_vector_potential (this, namespace, vector_potential, total_field, trans_field, apply_boundary)
 
subroutine zfrom_trans_field (this, namespace, vector_potential, trans_field, apply_boundary)
 
subroutine zfrom_total_field (this, namespace, vector_potential, total_field, apply_boundary)
 
subroutine helmholtz_decomposition_m::zget_trans_field (this, namespace, transverse_field, total_field, vector_potential, apply_boundary)
 
subroutine helmholtz_decomposition_m::zcompute_surface_correction_trans_field (this, namespace, field, surface_correction)
 
subroutine helmholtz_decomposition_m::zget_scalar_potential (this, namespace, scalar_potential, total_field, apply_boundary)
 
subroutine helmholtz_decomposition_m::zget_long_field (this, namespace, longitudinal_field, total_field, scalar_potential, apply_boundary)
 
subroutine helmholtz_decomposition_m::zcompute_surface_correction_long_field (this, namespace, field, surface_correction)
 
subroutine helmholtz_decomposition_m::dapply_inner_stencil_mask (this, field)
 
subroutine helmholtz_decomposition_m::dsubtract_average_from_inner_stencil (this, field)
 
subroutine helmholtz_decomposition_m::dget_vector_potential (this, namespace, vector_potential, total_field, trans_field, apply_boundary)
 
subroutine dfrom_trans_field (this, namespace, vector_potential, trans_field, apply_boundary)
 
subroutine dfrom_total_field (this, namespace, vector_potential, total_field, apply_boundary)
 
subroutine helmholtz_decomposition_m::dget_trans_field (this, namespace, transverse_field, total_field, vector_potential, apply_boundary)
 
subroutine helmholtz_decomposition_m::dcompute_surface_correction_trans_field (this, namespace, field, surface_correction)
 
subroutine helmholtz_decomposition_m::dget_scalar_potential (this, namespace, scalar_potential, total_field, apply_boundary)
 
subroutine helmholtz_decomposition_m::dget_long_field (this, namespace, longitudinal_field, total_field, scalar_potential, apply_boundary)
 
subroutine helmholtz_decomposition_m::dcompute_surface_correction_long_field (this, namespace, field, surface_correction)
 

Function/Subroutine Documentation

◆ zfrom_trans_field()

subroutine zget_vector_potential::zfrom_trans_field ( class(helmholtz_decomposition_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
complex(real64), dimension(:,:), intent(out), contiguous  vector_potential,
complex(real64), dimension(:,:), intent(in), contiguous  trans_field,
logical, intent(in)  apply_boundary 
)
private
Parameters
[in,out]thisHelmholtz object
[out]vector_potentialVector potential obtained from the total_field. The field will be defined on the grid of the Helmholtz type (thisgrid), UP UNTIL THISGRIDNP vector_potential(1:thisgridnp_part, 1:thisgridboxdim)
[in]trans_fieldTransverse field. To ensure the correct behaviour this field must be correctly defined on the grid of the system that calls Helmholtz (sys_gr), UP UNTIL SYS_GRNP_PART total_field(1:sys_grnp_part, 1:sys_grboxdim)
[in]apply_boundaryShould the curl apply boundary conditions?

Definition at line 567 of file helmholtz_decomposition.F90.

◆ zfrom_total_field()

subroutine zget_vector_potential::zfrom_total_field ( class(helmholtz_decomposition_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
complex(real64), dimension(:,:), intent(out), contiguous  vector_potential,
complex(real64), dimension(:,:), intent(inout), contiguous  total_field,
logical, intent(in)  apply_boundary 
)
private
Parameters
[in,out]thisHelmholtz object
[out]vector_potentialVector potential obtained from the total_field. The field will be defined on the grid of the Helmholtz type (thisgrid), UP UNTIL THISGRIDNP vector_potential(1:thisgridnp_part, 1:thisgridboxdim)
[in,out]total_fieldTotal field to decompose. To ensure the correct behaviour this field must be correctly defined on the grid of the system that calls Helmholtz (sys_gr), UP UNTIL SYS_GRNP_PART total_field(1:sys_grnp_part, 1:sys_grboxdim)
[in]apply_boundaryShould the curl apply boundary conditions?

Definition at line 609 of file helmholtz_decomposition.F90.

◆ dfrom_trans_field()

subroutine dget_vector_potential::dfrom_trans_field ( class(helmholtz_decomposition_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
real(real64), dimension(:,:), intent(out), contiguous  vector_potential,
real(real64), dimension(:,:), intent(in), contiguous  trans_field,
logical, intent(in)  apply_boundary 
)
private
Parameters
[in,out]thisHelmholtz object
[out]vector_potentialVector potential obtained from the total_field. The field will be defined on the grid of the Helmholtz type (thisgrid), UP UNTIL THISGRIDNP vector_potential(1:thisgridnp_part, 1:thisgridboxdim)
[in]trans_fieldTransverse field. To ensure the correct behaviour this field must be correctly defined on the grid of the system that calls Helmholtz (sys_gr), UP UNTIL SYS_GRNP_PART total_field(1:sys_grnp_part, 1:sys_grboxdim)
[in]apply_boundaryShould the curl apply boundary conditions?

Definition at line 1091 of file helmholtz_decomposition.F90.

◆ dfrom_total_field()

subroutine dget_vector_potential::dfrom_total_field ( class(helmholtz_decomposition_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
real(real64), dimension(:,:), intent(out), contiguous  vector_potential,
real(real64), dimension(:,:), intent(inout), contiguous  total_field,
logical, intent(in)  apply_boundary 
)
private
Parameters
[in,out]thisHelmholtz object
[out]vector_potentialVector potential obtained from the total_field. The field will be defined on the grid of the Helmholtz type (thisgrid), UP UNTIL THISGRIDNP vector_potential(1:thisgridnp_part, 1:thisgridboxdim)
[in,out]total_fieldTotal field to decompose. To ensure the correct behaviour this field must be correctly defined on the grid of the system that calls Helmholtz (sys_gr), UP UNTIL SYS_GRNP_PART total_field(1:sys_grnp_part, 1:sys_grboxdim)
[in]apply_boundaryShould the curl apply boundary conditions?

Definition at line 1133 of file helmholtz_decomposition.F90.