neumann_mirror Subroutine

public subroutine neumann_mirror(self, equi, mesh, perp_bnd_flux, bnd_descrs_nmn, u, tstep_u, diff_co, temperature_prefac, lambda, xi, rhs, time_extrapolate, u_floor)

Apply "neumann mirroring", i.e. perpendicular neumann zero boundary condition in preparation for implicit solve of a neutrals equation

Type Bound

neutrals_module_t

Arguments

Type IntentOptional Attributes Name
class(neutrals_module_t), intent(in) :: self

Instance of class

class(equilibrium_t), intent(in) :: equi

Equilibrium

type(mesh_cart_t), intent(in) :: mesh

Mesh (any) within poloidal plane

type(perp_bnd_flux_t), intent(in) :: perp_bnd_flux

Perpendicular boundary flux utility

integer, intent(in), dimension(mesh%get_n_points_boundary()) :: bnd_descrs_nmn

Boundary descriptors

real(kind=GP), intent(in), dimension(mesh%get_n_points()) :: u

Target variable values at timepoint t (i.e. before implicit solve)

type(karniadakis_t), intent(in) :: tstep_u

Timestepper object for target variable

real(kind=GP), intent(in), dimension(mesh%get_n_points()) :: diff_co

Effective diffusion coefficient, excluding the jacobian

real(kind=GP), intent(in), dimension(mesh%get_n_points()) :: temperature_prefac

Temperature prefactor in lambda when solving for (u T) instead of (u)

real(kind=GP), intent(inout), dimension(mesh%get_n_points_inner()) :: lambda

Lambda values, some of which will be overwritten at boundary polygon points

real(kind=GP), intent(inout), dimension(mesh%get_n_points_inner()) :: xi

Xi values, some of which will be overwritten at boundary polygon points

real(kind=GP), intent(inout), dimension(mesh%get_n_points()) :: rhs

Rhs values, some of which will be overwritten at boundary polygon points

logical, intent(in) :: time_extrapolate

Switch whether or not to use time extrapolation to mirror values at t+1

real(kind=GP), intent(in), optional :: u_floor

Optional floor to apply when time extrapolating, only used if time_extrapolate = T


Contents