mus_compute_Poisson_module Module

This module provides the definition and methods to solve poisson equation. author: Kannan Masilamani Implementation is based on: Luo, K., Wu, J., Yi, H., & Tan, H. (2016). International Journal of Heat and Mass Transfer Lattice Boltzmann modelling of electro-thermo-convection in a planar layer of dielectric liquid subjected to unipolar injection and thermal gradient. International Journal of Heat and Mass Transfer, 103, 832–846.

Guo, Z. (2014). A Coupled Lattice Boltzmann Method to Solve Nernst – Planck Model for Simulating Electro-osmotic Flows. Journal of Scientific Computing, (61), 222–238. http://doi.org/10.1007/s10915-014-9820-6

This implementation solve equation of the form is the source term For Poisson Eq: For Poisson Boltzmann Linear Eq: For Poisson Boltzmann nonLinear Eq: For 1:1 Electrolye solution, above equation is simplied to


Uses

  • module~~mus_compute_poisson_module~~UsesGraph module~mus_compute_poisson_module mus_compute_Poisson_module env_module env_module module~mus_compute_poisson_module->env_module iso_c_binding iso_c_binding module~mus_compute_poisson_module->iso_c_binding module~mus_dervarpos_module mus_derVarPos_module module~mus_compute_poisson_module->module~mus_dervarpos_module module~mus_field_prop_module mus_field_prop_module module~mus_compute_poisson_module->module~mus_field_prop_module module~mus_param_module mus_param_module module~mus_compute_poisson_module->module~mus_param_module module~mus_scheme_layout_module mus_scheme_layout_module module~mus_compute_poisson_module->module~mus_scheme_layout_module tem_aux_module tem_aux_module module~mus_compute_poisson_module->tem_aux_module tem_geometry_module tem_geometry_module module~mus_compute_poisson_module->tem_geometry_module tem_param_module tem_param_module module~mus_compute_poisson_module->tem_param_module tem_varSys_module tem_varSys_module module~mus_compute_poisson_module->tem_varSys_module module~mus_dervarpos_module->env_module module~mus_dervarpos_module->module~mus_scheme_layout_module module~mus_dervarpos_module->tem_aux_module module~mus_dervarpos_module->tem_varSys_module module~mus_scheme_derived_quantities_module mus_scheme_derived_quantities_module module~mus_dervarpos_module->module~mus_scheme_derived_quantities_module tem_stencil_module tem_stencil_module module~mus_dervarpos_module->tem_stencil_module module~mus_field_prop_module->env_module module~mus_field_prop_module->tem_aux_module aot_out_module aot_out_module module~mus_field_prop_module->aot_out_module flu_binding flu_binding module~mus_field_prop_module->flu_binding module~mus_fluid_module mus_fluid_module module~mus_field_prop_module->module~mus_fluid_module module~mus_physics_module mus_physics_module module~mus_field_prop_module->module~mus_physics_module module~mus_poisson_module mus_poisson_module module~mus_field_prop_module->module~mus_poisson_module module~mus_scheme_header_module mus_scheme_header_module module~mus_field_prop_module->module~mus_scheme_header_module module~mus_species_module mus_species_module module~mus_field_prop_module->module~mus_species_module tem_logging_module tem_logging_module module~mus_field_prop_module->tem_logging_module module~mus_param_module->env_module module~mus_param_module->aot_out_module aotus_module aotus_module module~mus_param_module->aotus_module module~mus_abortcriteria_module mus_abortCriteria_module module~mus_param_module->module~mus_abortcriteria_module module~mus_param_module->module~mus_physics_module tem_general_module tem_general_module module~mus_param_module->tem_general_module module~mus_param_module->tem_logging_module tem_tools_module tem_tools_module module~mus_param_module->tem_tools_module module~mus_scheme_layout_module->env_module module~mus_scheme_layout_module->tem_aux_module module~mus_scheme_layout_module->tem_param_module module~mus_scheme_layout_module->aot_out_module aot_table_module aot_table_module module~mus_scheme_layout_module->aot_table_module module~mus_scheme_layout_module->aotus_module module~mus_moments_type_module mus_moments_type_module module~mus_scheme_layout_module->module~mus_moments_type_module module~mus_scheme_layout_module->module~mus_scheme_derived_quantities_module mpi mpi module~mus_scheme_layout_module->mpi tem_comm_env_module tem_comm_env_module module~mus_scheme_layout_module->tem_comm_env_module tem_dyn_array_module tem_dyn_array_module module~mus_scheme_layout_module->tem_dyn_array_module tem_grow_array_module tem_grow_array_module module~mus_scheme_layout_module->tem_grow_array_module module~mus_scheme_layout_module->tem_logging_module module~mus_scheme_layout_module->tem_stencil_module module~mus_scheme_layout_module->tem_tools_module

Used by

  • module~~mus_compute_poisson_module~~UsedByGraph module~mus_compute_poisson_module mus_compute_Poisson_module module~mus_initpoisson_module mus_initPoisson_module module~mus_initpoisson_module->module~mus_compute_poisson_module module~mus_flow_module mus_flow_module module~mus_flow_module->module~mus_initpoisson_module module~mus_dynloadbal_module mus_dynLoadBal_module module~mus_dynloadbal_module->module~mus_flow_module module~mus_program_module mus_program_module module~mus_program_module->module~mus_flow_module module~mus_program_module->module~mus_dynloadbal_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_flow_module program~musubi musubi program~musubi->module~mus_program_module

Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: QQ_27 = 27
integer, private, parameter :: QQ_19 = 19
integer, private, parameter :: qN00 = 1
integer, private, parameter :: q0N0 = 2
integer, private, parameter :: q00N = 3
integer, private, parameter :: q100 = 4
integer, private, parameter :: q010 = 5
integer, private, parameter :: q001 = 6
integer, private, parameter :: q0NN = 7
integer, private, parameter :: q0N1 = 8
integer, private, parameter :: q01N = 9
integer, private, parameter :: q011 = 10
integer, private, parameter :: qN0N = 11
integer, private, parameter :: q10N = 12
integer, private, parameter :: qN01 = 13
integer, private, parameter :: q101 = 14
integer, private, parameter :: qNN0 = 15
integer, private, parameter :: qN10 = 16
integer, private, parameter :: q1N0 = 17
integer, private, parameter :: q110 = 18
integer, private, parameter :: q000_19 = 19
integer, private, parameter :: qNNN = 19
integer, private, parameter :: qNN1 = 20
integer, private, parameter :: qN1N = 21
integer, private, parameter :: qN11 = 22
integer, private, parameter :: q1NN = 23
integer, private, parameter :: q1N1 = 24
integer, private, parameter :: q11N = 25
integer, private, parameter :: q111 = 26
integer, private, parameter :: q000_27 = 27
integer, private, parameter :: QQ_9 = 9
integer, private, parameter :: qN0 = 1
integer, private, parameter :: q0N = 2
integer, private, parameter :: q10 = 3
integer, private, parameter :: q01 = 4
integer, private, parameter :: qNN = 5
integer, private, parameter :: qN1 = 6
integer, private, parameter :: q1N = 7
integer, private, parameter :: q11 = 8
integer, private, parameter :: q00_9 = 9

Subroutines

public subroutine mus_Poisson_advRel_d2q9(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Advection relaxation routine for the poisson equation with an explicit calculation of all equilibrium quantities. Slow and simple. The right hand side of equation is added as a source term in mus_apply_sourceTerms routine

Read more…

Arguments

Type IntentOptional Attributes Name
type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields

public subroutine mus_Poisson_advRel_generic(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Advection relaxation routine for the poisson equation with an explicit calculation of all equilibrium quantities. Slow and simple. The right hand side of equation is added as a source term in mus_apply_sourceTerms routine

Read more…

Arguments

Type IntentOptional Attributes Name
type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields

public subroutine mus_PBLinear_advRel_generic(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Advection relaxation routine for the linear poisson boltzmann equation with an explicit calculation of all equilibrium quantities. Slow and simple. Where k^2 is inverse of debye length and in this kernel refered as RHS_coeff

Read more…

Arguments

Type IntentOptional Attributes Name
type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields

public subroutine mus_PBnonLinear_advRel_generic(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Advection relaxation routine for the nonlinear poisson boltzmann equation for electrolyte solution

Read more…

Arguments

Type IntentOptional Attributes Name
type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields