Define and manipulate scalar-field values associated with a field-parent mesh Class
Result is new scalar_field from parent field
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(field), | intent(in) | :: | base | |||
real(kind=psb_dpk_), | intent(in) | :: | x(:) | |||
real(kind=psb_dpk_), | intent(in) | :: | bx(:) |
----- Algebra Operations -----
Set the left-hand-side scalar_field values to the provided constant
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(inout) | :: | f | |||
real(kind=psb_dpk_), | intent(in) | :: | x |
----- Algebra Operations -----
Set the left-hand-side scalar_field values to the provided values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(inout) | :: | f | |||
real(kind=psb_dpk_), | intent(in) | :: | x(:) |
----- Algebra Operations -----
Abort iff the scalar_field arguments are not associated with the same mesh
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | f1 | |||
type(scalar_field), | intent(in) | :: | f2 | |||
character(len=*), | intent(in) | :: | where |
----- Algebra Operations -----
Define scalar_field from mesh, dimensions, boundary conditions, materials, face-centeredness, and values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(out) | :: | fld | |||
type(mesh), | intent(in), | target | :: | msh | ||
type(dimensions), | intent(in), | optional | :: | dim | ||
type(bc_poly), | intent(in), | optional | target | :: | bc(:) | |
type(matptr), | intent(in), | optional | target | :: | mats(:) | |
logical, | intent(in), | optional | :: | on_faces | ||
real(kind=psb_dpk_), | intent(in), | optional | :: | x0 | ||
character(len=*), | intent(in), | optional | :: | name |
----- Algebra Operations -----
Deallocate scalar_field components: field parent and component arrays
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(inout) | :: | fld |
----- Algebra Operations -----
Get parent field
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld | |||
type(field), | intent(out) | :: | base |
----- Algebra Operations -----
get scalar_field boundary values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld | |||
real(kind=psb_dpk_), | intent(out), | allocatable | :: | bx(:) |
----- Algebra Operations -----
get one scalar_field value
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld | |||
real(kind=psb_dpk_), | intent(out) | :: | x | |||
integer, | intent(in) | :: | i |
----- Algebra Operations -----
get one scalar_field previous value
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld | |||
real(kind=psb_dpk_), | intent(out) | :: | xp | |||
integer, | intent(in) | :: | i |
----- Algebra Operations -----
Result is scalar_field material identifier
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld | |||
integer, | intent(in) | :: | i |
----- Algebra Operations -----
get all scalar_field values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld | |||
real(kind=psb_dpk_), | intent(out), | allocatable | :: | x(:) |
----- Algebra Operations -----
Get all scalar_field previous values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld | |||
real(kind=psb_dpk_), | intent(out), | allocatable | :: | xp(:) |
----- Algebra Operations -----
Result contains scalar_field cell values interpolated onto cell faces
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld |
----- Algebra Operations -----
Result is L1 norm of scalar_field
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld |
----- Algebra Operations -----
Result is infinity-norm of scalar_field
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld |
----- Algebra Operations -----
Result is the scalar_field size
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | fld |
----- Algebra Operations -----
Result is the arithmetic difference of the two scalar_field operands
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | f1 | |||
type(scalar_field), | intent(in) | :: | f2 |
----- Algebra Operations -----
Result is the arithmetic difference of the scalar_field operand and the constant operand
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | f1 | |||
real(kind=psb_dpk_), | intent(in) | :: | f2 |
----- Algebra Operations -----
Result is the ratio of the left-hand-side numerator and right-hand-side denominator scalar_field objects
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | f1 | |||
type(scalar_field), | intent(in) | :: | f2 |
----- Algebra Operations -----
REsult is the arithmetic product of two scalar_field objects
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | f1 | |||
type(scalar_field), | intent(in) | :: | f2 |
----- Algebra Operations -----
Rescale the scalar_field argument by the provided multiplicative constant
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=psb_dpk_), | intent(in) | :: | a | |||
class(scalar_field), | intent(in) | :: | f |
----- Algebra Operations -----
Result is the arithmetic sum of the two scalar_field operands
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(in) | :: | f1 | |||
type(scalar_field), | intent(in) | :: | f2 |
----- Algebra Operations -----
Set one scalar_field value
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(inout) | :: | f | |||
integer, | intent(in) | :: | i | element number to set |
||
real(kind=psb_dpk_), | intent(in) | :: | x | value |
----- Algebra Operations -----
Set a group of scalar field values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(inout) | :: | f | |||
integer, | intent(in) | :: | ig | |||
real(kind=psb_dpk_), | intent(in) | :: | x |
----- Algebra Operations -----
Set all scalar_field values
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(scalar_field), | intent(inout) | :: | fld | |||
type(matptr), | intent(in), | pointer | :: | mats(:) | ||
type(scalar_field), | intent(in), | optional | :: | temp | temperature |
Encapsulate scalar-field state and operations, storing a mesh association in the parent field
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private, | allocatable | :: | bmat(:) | |||
real(kind=psb_dpk_), | private, | allocatable | :: | bx(:) | face values |
||
integer, | private, | allocatable | :: | mat(:) | |||
real(kind=psb_dpk_), | private, | allocatable | :: | x(:) | field nodal values |
||
real(kind=psb_dpk_), | private, | allocatable | :: | xp(:) | previous nodal values |
public function scalar_field_(base, x, bx) | Result is new scalar_field from parent field |
generic, public :: assignment(=) => assign_scalar_field_s, assign_scalar_field_v | User-defined assignment |
procedure, public :: bc_ | |
procedure, public :: check_field_operands | |
generic, public :: check_mesh_consistency => check_mesh_consistency_bf, check_mesh_consistency_sf | |
procedure, public :: create_field | |
procedure, public :: create_scalar_field | Constructor |
generic, public :: dim_ => get_field_dim | |
generic, public :: field_norm1 => nemo_scalar_field_norm1 | |
generic, public :: field_normi => nemo_scalar_field_normi | |
generic, public :: fld_size => get_field_size | |
procedure, public :: free_field | Destructor |
procedure, public :: get_base | |
generic, public :: get_bx => get_scalar_field_bx | |
generic, public :: get_material => get_field_mat_sub | |
procedure, public :: get_mesh | |
procedure, public :: get_scalar_field_mat_id | |
procedure, public :: get_units | |
generic, public :: get_x => get_scalar_field_x, get_scalar_field_element | |
generic, public :: get_xp => get_scalar_field_xp, get_scalar_field_element_prev | |
generic, public :: interp_on_faces => interp_on_faces_s | |
procedure, public :: mark_as_defined | |
procedure, public :: mat_ | |
procedure, public :: msh_ | |
procedure, public :: name_ | |
procedure, public :: nemo_sizeof | |
procedure, public :: on_faces_ | Getters |
generic, public :: operator(*) => scalar_field_scal, scalar_field_mul | Algebra operations |
generic, public :: operator(+) => scalar_field_sum | |
generic, public :: operator(-) => scalar_field_dif, scalar_field_dif_s | |
generic, public :: operator(/) => scalar_field_div | |
procedure, public :: set_field_dim | |
generic, public :: set_field_element => set_scalar_field_element | |
generic, public :: set_field_group => set_scalar_field_group | |
procedure, public :: set_field_on_faces | Setters |
procedure, public :: set_units | |
generic, public :: update_field => update_scalar_field | |
procedure, public :: user_defined | |
procedure, private :: assign_scalar_field_s | |
procedure, private :: assign_scalar_field_v | |
procedure, private :: check_mesh_consistency_sf | |
procedure, private :: get_scalar_field_bx | |
procedure, private :: get_scalar_field_element | |
procedure, private :: get_scalar_field_element_prev | |
procedure, private :: get_scalar_field_x | |
procedure, private :: get_scalar_field_xp | |
procedure, private :: interp_on_faces_s | |
procedure, private :: nemo_scalar_field_norm1 | |
procedure, private :: nemo_scalar_field_normi | |
procedure, private :: scalar_field_dif | |
procedure, private :: scalar_field_dif_s | |
procedure, private :: scalar_field_div | |
procedure, private :: scalar_field_mul | |
procedure, private, pass(f) :: scalar_field_scal | |
procedure, private :: scalar_field_sum | |
procedure, private :: set_scalar_field_element | |
procedure, private :: set_scalar_field_group | |
procedure, private :: update_scalar_field |