| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(comm_handler_t), | intent(in) | :: | comm_handler |
Communicators |
||
| type(equilibrium_storage_t), | intent(in) | :: | equi_on_cano |
Equilibrim quantities on canonical mesh |
||
| type(equilibrium_storage_t), | intent(in) | :: | equi_on_stag |
Equilibrim quantities on staggered mesh |
||
| type(mesh_cart_t), | intent(in) | :: | mesh_cano |
Canonical mesh |
||
| type(mesh_cart_t), | intent(in) | :: | mesh_stag |
Staggered mesh |
||
| type(parallel_map_t), | intent(in) | :: | map |
Parallel map |
||
| type(params_solver_aligned3d_t), | intent(in) | :: | params_solver |
Parameters for solver |
||
| character(len=*), | intent(in) | :: | solver_type |
Type of solver |
||
| real(kind=GP), | intent(in), | dimension(mesh_cano%get_n_points()) | :: | rhs |
Right hand side |
|
| real(kind=GP), | intent(inout), | dimension(mesh_cano%get_n_points()) | :: | sol |
On input: initial guess, on output :: solution |
|
| integer, | intent(out) | :: | niter |
Number of (outer) iterations, negative number if error occured |
||
| real(kind=GP), | intent(out) | :: | res |
Pseudo-residual (relative) of solution |
||
| real(kind=GP), | intent(out) | :: | true_res |
True residual (relative) of solution |
||
| integer, | intent(out), | optional | :: | cnt_matvec |
Counts number that matvec was called (~total iterations) |
|
| real(kind=GP), | intent(in), | optional, | dimension(mesh_cano%get_n_points()) | :: | lambda |
Coefficient lambda, default = 1.0 |
| real(kind=GP), | intent(in), | optional, | dimension(mesh_cano%get_n_points()) | :: | xi |
Coefficient xi, default = 1.0 |
| real(kind=GP), | intent(in), | optional, | dimension(mesh_stag%get_n_points()) | :: | co_stag |
Coefficient co, default = 1.0, defined on staggered mesh |
| real(kind=GP), | intent(in), | optional, | dimension(mesh_cano%get_n_points()) | :: | fcx |
Coefficient fcx, default = 1.0 |
| integer, | intent(in), | optional, | dimension(mesh_cano%get_n_points_boundary()) | :: | bnd_descrs |
Boundary descriptor for perpendicular boundary points |
| real(kind=GP), | intent(in), | optional | :: | flutter_fac_cano |
Factor (~switch) in front of flutter divergence on canonical mesh |
|
| real(kind=GP), | intent(in), | optional | :: | flutter_fac_stag |
Factor (~switch) in front of flutter gradient on staggered mesh |
|
| type(inplane_operators_t), | intent(in), | optional | :: | opsinplane_cano |
Inplane operators on canonical mesh |
|
| type(inplane_operators_t), | intent(in), | optional | :: | opsinplane_stag |
Inplane operators on staggered mesh |
|
| real(kind=GP), | intent(in), | optional, | dimension(mesh_stag%get_n_points()) | :: | apar_stag |
Parallel magnetic potential on staggered mesh |
| real(kind=GP), | intent(in), | optional, | dimension(mesh_cano%get_n_points()) | :: | apar_cano |
Parallel magnetic potential on canonical mesh |
| integer, | intent(in), | optional, | dimension(mesh_stag%get_n_points_boundary()) | :: | bnd_descrs_flux |
Boundary descriptor for perpendicular boundary points of parallel flux |
Solves an elliptic Helmholtz problem along magnetic field line, optionally along perturbed magnetic field line via magentic flutter \f[ \lambda * u - \xi*\nabla\cdot\left[co\nabla_\parallel u fcx\right] = rhs \f] with coefficients \f$\lambda, \xi, co, fcx $ used e.g. for implicit treatment of parallel heat conduction The problem is stated on the canonical mesh Perpendicular boundary points are set according to bnd_descrs Magnetic flutter is included in parallel gradient and divergence via Possion bracket and arakawa scheme Perpendicular boundary flux_bnd_descrs is specially reqired for dobule arakawa operation