Emulate runtime polymorphism for boundary condition classes.
----- Getters -----
Global constructor
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(bc_poly), | allocatable | :: | bc(:) | |||
| character(len=*), | intent(in) | :: | input_file | |||
| character(len=*), | intent(in) | :: | sec | |||
| type(mesh), | intent(in) | :: | msh |
----- Getters -----
----- Destructor -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(bc_poly), | allocatable | :: | bc(:) |
----- Getters -----
loop over all boundaries, moving the vertices and conceptual surfaces from the time interval t1 to t2
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mesh), | intent(inout) | :: | msh | |||
| type(bc_poly), | intent(in) | :: | bc(:) | |||
| real(kind=psb_dpk_) | :: | t1 | ||||
| real(kind=psb_dpk_) | :: | t2 |
----- Boundary Values Updater -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ib | |||
| type(bc_poly), | intent(in) | :: | bc | |||
| type(dimensions), | intent(in) | :: | dim | |||
| type(mesh), | intent(in) | :: | msh | |||
| type(matptr), | intent(in), | pointer | :: | mats(:) | ||
| integer, | intent(in) | :: | im(:) | |||
| real(kind=psb_dpk_), | intent(in) | :: | x(:) | |||
| real(kind=psb_dpk_), | intent(inout) | :: | bx(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ib | |||
| type(bc_poly), | intent(in) | :: | bc | |||
| type(dimensions), | intent(in) | :: | dim | |||
| type(mesh), | intent(in) | :: | msh | |||
| type(vector), | intent(in) | :: | x(:) | |||
| type(vector), | intent(inout) | :: | bx(:) |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(in) | :: | bc | |||
| type(dimensions), | intent(in) | :: | dim | |||
| integer, | intent(out) | :: | id | |||
| real(kind=psb_dpk_), | intent(inout) | :: | a(:) | |||
| real(kind=psb_dpk_), | intent(inout) | :: | b(:) | |||
| real(kind=psb_dpk_), | intent(inout) | :: | c(:) |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(in) | :: | bc | |||
| type(dimensions), | intent(in) | :: | dim | |||
| integer, | intent(out) | :: | id | |||
| real(kind=psb_dpk_), | intent(inout) | :: | a(:) | |||
| real(kind=psb_dpk_), | intent(inout) | :: | b(:) | |||
| type(vector), | intent(inout) | :: | c(:) |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(in) | :: | bc | |||
| real(kind=psb_dpk_), | intent(in) | :: | x1 | |||
| real(kind=psb_dpk_), | intent(in) | :: | x2 |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(in) | :: | bc | |||
| real(kind=psb_dpk_), | intent(in) | :: | x |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(in) | :: | bc |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(in) | :: | bc |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(in) | :: | bc |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(inout) | :: | bc | |||
| integer, | intent(in) | :: | i | |||
| real(kind=psb_dpk_), | intent(in) | :: | a | |||
| real(kind=psb_dpk_), | intent(in) | :: | b | |||
| real(kind=psb_dpk_), | intent(in) | :: | c |
----- Getters -----
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_poly), | intent(inout) | :: | bc | |||
| integer, | intent(in) | :: | i | |||
| real(kind=psb_dpk_), | intent(in) | :: | a | |||
| real(kind=psb_dpk_), | intent(in) | :: | b | |||
| type(vector), | intent(in) | :: | c |
Implement a runtime polymorphism pattern [1] to emulate an abstract parent of the bc_math/bc_wall classes. TODO: Modernize by 1. Refactoring math/wall so they extend bc_poly, 2. Replace all TYPE(bc_poly) with CLASS(bc_poly), and 3. Make bc_poly ABSTRACT.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | id | ||||
| type(bc_math), | private, | pointer | :: | math | => | null() | |
| type(motion), | private | :: | mot | ||||
| type(bc_wall), | private, | pointer | :: | wall | => | null() |
| generic, public :: get_abc => get_abc_s, get_abc_v | |
| generic, public :: get_displacement => get_bc_motion_displacement | |
| generic, public :: get_velocity => get_bc_motion_velocity | |
| generic, public :: nemo_sizeof => nemo_bc_poly_sizeof | |
| generic, public :: set_bc => set_bc_poly_map_s, set_bc_poly_map_v | |
| generic, public :: surface_motion_ => get_bc_surface_motion | |
| generic, public :: vertex_motion_ => get_bc_vertex_motion | |
| procedure, private :: get_abc_s | |
| procedure, private :: get_abc_v | |
| procedure, private :: get_bc_motion_displacement | |
| procedure, private :: get_bc_motion_velocity | |
| procedure, private :: get_bc_surface_motion | |
| procedure, private :: get_bc_vertex_motion | |
| procedure, private :: nemo_bc_poly_sizeof | |
| procedure, private :: set_bc_poly_map_s | |
| procedure, private :: set_bc_poly_map_v |