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 |