Apply "neumann mirroring", i.e. perpendicular neumann zero boundary condition in preparation for implicit solve of a neutrals equation
| Type | Intent | Optional | 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 |