wall Module

Detect all the grid points on the wall boundary condition and store them in a single file


Uses

  • module~~wall~~UsesGraph module~wall wall module~utils utils module~wall->module~utils module~vartypes vartypes module~wall->module~vartypes mpi mpi module~wall->mpi iso_fortran_env iso_fortran_env module~vartypes->iso_fortran_env

Used by

  • module~~wall~~UsedByGraph module~wall wall module~solver solver module~solver->module~wall program~main main program~main->module~solver

Contents


Variables

TypeVisibility AttributesNameInitial
integer, private :: ierr

Integer to store error

integer, private :: new_type

Create new type for MPI

integer, private :: thisfile

File hadler

integer, private, parameter:: maxlen =70

Maximum length for string

real(kind=wp), private, dimension(:, :), allocatable, target:: wallc

Centre of wall surface

real(kind=wp), private, dimension(:), pointer:: wall_x

X coordiante of center of wall surface

real(kind=wp), private, dimension(:), pointer:: wall_y

Y coordiante of center of wall surface

real(kind=wp), private, dimension(:), pointer:: wall_z

Z coordiante of center of wall surface

integer, private, dimension(6):: no_slip_flag =0

Flag to detect wall

integer, public :: n_wall

Number of points on the wall

integer, public :: total_n_wall

Total number of points on the block across all processes

character(len=maxlen), private, dimension(:), allocatable:: str

Store all wall corridnate of current process in a string vector

character(len=maxlen), private :: line

Line to write in output file

character, private, parameter:: lf =Achar(10)

End of line character

integer, private, dimension(:), allocatable:: n_wall_buf

Store n_wall points of all processors in a array form

integer, private, dimension(:), allocatable:: write_flag

Check if current processor has any wall points to write

integer, private :: imx
integer, private :: jmx
integer, private :: kmx

Subroutines

public subroutine write_surfnode(files, nodes, control, bc, dims)

Extract and write the wall surface node points in a file shared by all the MPI processes

Arguments

Type IntentOptional AttributesName
type(filetype), intent(in) :: files
type(nodetype), intent(in), dimension(-2:dims%imx+3,-2:dims%jmx+3,-2:dims%kmx+3):: nodes
type(controltype), intent(in) :: control
type(boundarytype), intent(in) :: bc
type(extent), intent(in) :: dims

private subroutine allocate_memory(control)

Allocate memory to str and wallc variable array

Arguments

Type IntentOptional AttributesName
type(controltype), intent(in) :: control

private subroutine link_aliases()

Link pointers wall_x, wall_y, wall_z to wallc

Arguments

None

private subroutine setup_surface(files, control, bc)

Open MPI_shared write file, allocate memory and setup pointers

Arguments

Type IntentOptional AttributesName
type(filetype), intent(in) :: files
type(controltype), intent(in) :: control
type(boundarytype), intent(in) :: bc

private subroutine find_wall(bc)

Setup wall flag for all six boundary of the block

Arguments

Type IntentOptional AttributesName
type(boundarytype), intent(in) :: bc

private subroutine surface_points(nodes)

Extract surface points and store them in a string vector str(ind)

Arguments

Type IntentOptional AttributesName
type(nodetype), intent(in), dimension(-2:imx+3,-2:jmx+3,-2:kmx+3):: nodes