field_manager Module


Uses

  • module~~field_manager~~UsesGraph module~field_manager field_manager iso_fortran_env iso_fortran_env module~field_manager->iso_fortran_env

Used by

  • module~~field_manager~~UsedByGraph module~field_manager field_manager module~text_output text_output module~text_output->module~field_manager module~output_manager_core output_manager_core module~text_output->module~output_manager_core module~netcdf_output netcdf_output module~netcdf_output->module~field_manager module~netcdf_output->module~output_manager_core module~output_operators_slice output_operators_slice module~output_operators_slice->module~field_manager module~output_operators_base output_operators_base module~output_operators_slice->module~output_operators_base module~output_operators_slice->module~output_manager_core module~output_operators_base->module~field_manager module~output_operators_base->module~output_manager_core module~output_operators_time_average output_operators_time_average module~output_operators_time_average->module~field_manager module~output_operators_time_average->module~output_operators_base module~output_operators_time_average->module~output_manager_core module~output_operators_library output_operators_library module~output_operators_library->module~field_manager module~output_operators_library->module~output_operators_slice module~output_operators_library->module~output_operators_base module~output_operators_library->module~output_operators_time_average module~output_operators_interp output_operators_interp module~output_operators_library->module~output_operators_interp module~output_operators_library->module~output_manager_core module~output_operators_interp->module~field_manager module~output_operators_interp->module~output_operators_base module~output_operators_interp->module~output_manager_core module~output_manager_core->module~field_manager module~output_manager output_manager module~output_manager->module~field_manager module~output_manager->module~text_output module~output_manager->module~netcdf_output module~output_manager->module~output_operators_slice module~output_manager->module~output_operators_time_average module~output_manager->module~output_operators_library module~output_manager->module~output_manager_core

Contents


Variables

TypeVisibility AttributesNameInitial
integer, public, parameter:: string_length =256
integer, private, parameter:: nmaxdims =10
integer, private, parameter:: rk =kind(_ONE_)
integer, public, parameter:: id_dim_lon =1
integer, public, parameter:: id_dim_lat =2
integer, public, parameter:: id_dim_z =3
integer, public, parameter:: id_dim_zi =4
integer, public, parameter:: id_dim_time =5
integer, public, parameter:: id_dim_unused =20
integer, public, parameter:: status_not_registered =0
integer, public, parameter:: status_registered_no_data =1
integer, public, parameter:: status_registered_with_data =2
integer, public, parameter:: output_level_none =0
integer, public, parameter:: output_level_required =2
integer, public, parameter:: output_level_default =8
integer, public, parameter:: output_level_debug =32
real(kind=rk), public, parameter:: default_fill_value =-huge(_ONE_)
real(kind=rk), public, parameter:: default_minimum =default_fill_value+spacing(default_fill_value)
real(kind=rk), public, parameter:: default_maximum =huge(_ONE_)
integer, private, parameter:: hash_table_size =256

Derived Types

type, public :: type_dimension

Components

TypeVisibility AttributesNameInitial
character(len=string_length), public :: name =''
character(len=string_length), public :: iterator =''
integer, public :: length =-1
integer, public :: global_length =-1
integer, public :: offset =0
integer, public :: id =-1
type(type_field), public, pointer:: coordinate=> null()
type(type_dimension), public, pointer:: next=> null()

type, public :: type_dimension_pointer

Components

TypeVisibility AttributesNameInitial
type(type_dimension), public, pointer:: p=> null()

type, public :: type_attribute

Components

TypeVisibility AttributesNameInitial
character(len=string_length), public :: name =''
class(type_attribute), public, pointer:: next=> null()

type, public, extends(type_attribute) :: type_real_attribute

Components

TypeVisibility AttributesNameInitial
character(len=string_length), public :: name =''
class(type_attribute), public, pointer:: next=> null()
real(kind=rk), public :: value =0.0_rk

type, public, extends(type_attribute) :: type_integer_attribute

Components

TypeVisibility AttributesNameInitial
character(len=string_length), public :: name =''
class(type_attribute), public, pointer:: next=> null()
integer, public :: value =0

type, public, extends(type_attribute) :: type_string_attribute

Components

TypeVisibility AttributesNameInitial
character(len=string_length), public :: name =''
class(type_attribute), public, pointer:: next=> null()
character(len=string_length), public :: value =''

type, public :: type_attributes

Components

TypeVisibility AttributesNameInitial
class(type_attribute), public, pointer:: first=> null()

Type-Bound Procedures

procedure, public :: set_object => attributes_set_object
procedure, public :: delete => attributes_delete
procedure, public :: set_real => attributes_set_real
procedure, public :: set_integer => attributes_set_integer
procedure, public :: set_string => attributes_set_string
generic, public :: set => set_real, set_integer, set_string, set_object
procedure, public :: update => attributes_update

type, public :: type_nd_data_pointer

Components

TypeVisibility AttributesNameInitial
real(kind=rk), public, pointer:: p0d=> null()
real(kind=rk), public, pointer:: p1d(:)=> null()
real(kind=rk), public, pointer:: p2d(:,:)=> null()
real(kind=rk), public, pointer:: p3d(:,:,:)=> null()

Type-Bound Procedures

procedure, public :: set_0d => data_set_0d
procedure, public :: set_1d => data_set_1d
procedure, public :: set_2d => data_set_2d
procedure, public :: set_3d => data_set_3d
generic, public :: set => set_0d, set_1d, set_2d, set_3d
procedure, public :: get_extents => data_get_extents
procedure, public :: is_empty => data_is_empty

type, public :: type_field

Components

TypeVisibility AttributesNameInitial
integer, public :: id =0
character(len=string_length), public :: name =''
character(len=string_length), public :: units =''
character(len=string_length), public :: long_name =''
character(len=string_length), public :: standard_name =''
real(kind=rk), public :: fill_value =default_fill_value
real(kind=rk), public :: minimum =default_minimum
real(kind=rk), public :: maximum =default_maximum
integer, public :: output_level =output_level_default
logical, public :: in_output =.false.
logical, public, pointer:: used_now=> null()
integer, public :: status =status_not_registered
type(type_dimension_pointer), public, allocatable:: dimensions(:)
type(type_attributes), public :: attributes
integer, public, allocatable:: extents(:)
type(type_nd_data_pointer), public :: data
class(type_category_node), public, pointer:: category=> null()
type(type_field), public, pointer:: next=> null()

Type-Bound Procedures

procedure, public :: has_dimension => field_has_dimension
procedure, public :: finalize => field_finalize
procedure, public :: field_set_real_attribute
generic, public :: set_attribute => field_set_real_attribute

type, private, abstract :: type_node

Components

TypeVisibility AttributesNameInitial
class(type_node), public, pointer:: parent=> null()
class(type_node), public, pointer:: first_child=> null()
class(type_node), public, pointer:: next_sibling=> null()

Type-Bound Procedures

procedure, public :: finalize => node_finalize

type, private, extends(type_node) :: type_field_node

Components

TypeVisibility AttributesNameInitial
class(type_node), public, pointer:: parent=> null()
class(type_node), public, pointer:: first_child=> null()
class(type_node), public, pointer:: next_sibling=> null()
type(type_field), public, pointer:: field=> null()

Type-Bound Procedures

procedure, public :: finalize => node_finalize

type, public, extends(type_node) :: type_category_node

Components

TypeVisibility AttributesNameInitial
class(type_node), public, pointer:: parent=> null()
class(type_node), public, pointer:: first_child=> null()
class(type_node), public, pointer:: next_sibling=> null()
character(len=string_length), public :: name =''
integer, public :: output_level =output_level_none

Type-Bound Procedures

procedure, public :: finalize => node_finalize
procedure, public :: get_all_fields
procedure, public :: has_fields
procedure, public :: get_path => category_get_path

type, private :: type_dictionary_bin

Components

TypeVisibility AttributesNameInitial
type(type_field), public, pointer:: first_field=> null()

type, public :: type_field_set_member

Components

TypeVisibility AttributesNameInitial
type(type_field), public, pointer:: field=> null()
type(type_field_set_member), public, pointer:: next=> null()

type, public :: type_field_set

Components

TypeVisibility AttributesNameInitial
type(type_field_set_member), public, pointer:: first=> null()

Type-Bound Procedures

procedure, public :: add => field_set_add
procedure, public :: finalize => field_set_finalize

type, public :: type_field_manager

Components

TypeVisibility AttributesNameInitial
type(type_dimension), public, pointer:: first_dimension=> null()
type(type_dimension_pointer), public, allocatable:: prepend_dimensions(:)
type(type_dimension_pointer), public, allocatable:: append_dimensions(:)
type(type_dictionary_bin), public :: field_table(hash_table_size)
type(type_category_node), public :: root
integer, public :: nregistered =0

Type-Bound Procedures

procedure, public :: initialize
procedure, public :: finalize
procedure, public :: register
procedure, public :: find
procedure, public :: list
procedure, public :: send_data_0d
procedure, public :: send_data_1d
procedure, public :: send_data_2d
procedure, public :: send_data_3d
procedure, public :: send_data_by_name_0d
procedure, public :: send_data_by_name_1d
procedure, public :: send_data_by_name_2d
procedure, public :: send_data_by_name_3d
procedure, public :: select_for_output
procedure, public :: select_category_for_output
procedure, public :: register_dimension
procedure, public :: find_dimension
procedure, public :: find_category
procedure, public :: get_state
procedure, public :: reset_used
generic, public :: send_data => send_data_0d, send_data_1d, send_data_2d, send_data_3d, send_data_by_name_0d, send_data_by_name_1d, send_data_by_name_2d, send_data_by_name_3d

Functions

private function next_free_dimension_id(self)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(in) :: self

Return Value integer

private function find_dimension(self, dimid) result(dim)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(in) :: self
integer, intent(in) :: dimid

Return Value type(type_dimension), pointer

private function select_for_output(self, name) result(field)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name

Return Value type(type_field), pointer

private function select_category_for_output(self, name, output_level) result(category)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name
integer, intent(in) :: output_level

Return Value class(type_category_node), pointer

private recursive function has_fields(self)

Arguments

Type IntentOptional AttributesName
class(type_category_node), intent(inout) :: self

Return Value logical

private function find(self, name, create) result(field)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name
logical, intent(in), optional :: create

Return Value type(type_field), pointer

public function has_dimension(dimensions, id)

Arguments

Type IntentOptional AttributesName
type(type_dimension_pointer), intent(in) :: dimensions(:)
integer, intent(in) :: id

Return Value logical

private function field_has_dimension(self, id)

Arguments

Type IntentOptional AttributesName
class(type_field), intent(in) :: self
integer, intent(in) :: id

Return Value logical

private function find_category(self, name, create) result(category)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout), target:: self
character(len=*), intent(in) :: name
logical, intent(in), optional :: create

Return Value class(type_category_node), pointer

private function data_is_empty(self)

Arguments

Type IntentOptional AttributesName
class(type_nd_data_pointer), intent(in) :: self

Return Value logical

private function get_state(self) result(field_set)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self

Return Value type(type_field_set)

private function category_get_path(self) result(path)

Arguments

Type IntentOptional AttributesName
class(type_category_node), intent(in), target:: self

Return Value character(len=256)

private function hash(str)

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: str

Return Value integer


Subroutines

private subroutine register_dimension(self, name, length, global_length, offset, id, newid)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name
integer, intent(in), optional :: length
integer, intent(in), optional :: global_length
integer, intent(in), optional :: offset
integer, intent(in), optional :: id
integer, intent(out), optional :: newid

private subroutine initialize(self, prepend_by_default, append_by_default)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
integer, intent(in), optional :: prepend_by_default(:)
integer, intent(in), optional :: append_by_default(:)

private subroutine list(self)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(in) :: self

private recursive subroutine list_node(category, depth)

Arguments

Type IntentOptional AttributesName
type(type_category_node), intent(in) :: category
integer, intent(in) :: depth

private subroutine finalize(self)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self

private subroutine reset_used(self)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self

private subroutine field_set_add(self, field)

Arguments

Type IntentOptional AttributesName
class(type_field_set), intent(inout) :: self
type(type_field), target:: field

private subroutine field_set_finalize(self)

Arguments

Type IntentOptional AttributesName
class(type_field_set), intent(inout) :: self

private recursive subroutine get_all_fields(self, set, output_level)

Arguments

Type IntentOptional AttributesName
class(type_category_node), intent(inout) :: self
type(type_field_set), intent(inout) :: set
integer, intent(in) :: output_level

private subroutine register(self, name, units, long_name, standard_name, fill_value, minimum, maximum, dimensions, data0d, data1d, data2d, data3d, no_default_dimensions, category, output_level, coordinate_dimension, part_of_state, used, used_now, field)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name
character(len=*), intent(in) :: units
character(len=*), intent(in) :: long_name
character(len=*), intent(in), optional :: standard_name
real(kind=rk), intent(in), optional :: fill_value
real(kind=rk), intent(in), optional :: minimum
real(kind=rk), intent(in), optional :: maximum
integer, intent(in), optional :: dimensions(:)
real(kind=rk), optional target:: data0d
real(kind=rk), optional target:: data1d(:)
real(kind=rk), optional target:: data2d(:,:)
real(kind=rk), optional target:: data3d(:,:,:)
logical, intent(in), optional :: no_default_dimensions
character(len=*), intent(in), optional :: category
integer, intent(in), optional :: output_level
integer, intent(in), optional :: coordinate_dimension
logical, intent(in), optional :: part_of_state
logical, intent(out), optional :: used
logical, optional target:: used_now
type(type_field), optional pointer:: field

private subroutine attributes_delete(self, name)

Arguments

Type IntentOptional AttributesName
class(type_attributes), intent(inout) :: self
character(len=*), intent(in) :: name

private subroutine attributes_set_object(self, name, attribute)

Arguments

Type IntentOptional AttributesName
class(type_attributes), intent(inout) :: self
character(len=*), intent(in) :: name
class(type_attribute), intent(inout), target:: attribute

private subroutine attributes_set_real(self, name, value)

Arguments

Type IntentOptional AttributesName
class(type_attributes), intent(inout) :: self
character(len=*), intent(in) :: name
real(kind=rk), intent(in) :: value

private subroutine attributes_set_integer(self, name, value)

Arguments

Type IntentOptional AttributesName
class(type_attributes), intent(inout) :: self
character(len=*), intent(in) :: name
integer, intent(in) :: value

private subroutine attributes_set_string(self, name, value)

Arguments

Type IntentOptional AttributesName
class(type_attributes), intent(inout) :: self
character(len=*), intent(in) :: name
character(len=*), intent(in) :: value

private subroutine attributes_update(self, other)

Arguments

Type IntentOptional AttributesName
class(type_attributes), intent(inout) :: self
class(type_attributes), intent(in) :: other

private subroutine field_finalize(self)

Arguments

Type IntentOptional AttributesName
class(type_field), intent(inout) :: self

private subroutine add_field_to_tree(self, field, category)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout), target:: self
type(type_field), target:: field
character(len=*), intent(in), optional :: category

private subroutine add_to_category(parent, node)

Arguments

Type IntentOptional AttributesName
type(type_category_node), intent(inout), target:: parent
class(type_node), target:: node

private subroutine send_data_by_name_0d(self, name, data)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name
real(kind=rk), target:: data

private subroutine send_data_by_name_1d(self, name, data)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name
real(kind=rk), target:: data(:)

private subroutine send_data_by_name_2d(self, name, data)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name
real(kind=rk), target:: data(:,:)

private subroutine send_data_by_name_3d(self, name, data)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
character(len=*), intent(in) :: name
real(kind=rk), target:: data(:,:,:)

private subroutine check_sent_data(field)

Arguments

Type IntentOptional AttributesName
type(type_field), intent(inout) :: field

private subroutine send_data_0d(self, field, data)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
type(type_field), intent(inout) :: field
real(kind=rk), target:: data

private subroutine send_data_1d(self, field, data)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
type(type_field), intent(inout) :: field
real(kind=rk), target:: data(:)

private subroutine send_data_2d(self, field, data)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
type(type_field), intent(inout) :: field
real(kind=rk), target:: data(:,:)

private subroutine send_data_3d(self, field, data)

Arguments

Type IntentOptional AttributesName
class(type_field_manager), intent(inout) :: self
type(type_field), intent(inout) :: field
real(kind=rk), target:: data(:,:,:)

private subroutine data_set_0d(self, data)

Arguments

Type IntentOptional AttributesName
class(type_nd_data_pointer), intent(inout) :: self
real(kind=rk), target:: data

private subroutine data_set_1d(self, data)

Arguments

Type IntentOptional AttributesName
class(type_nd_data_pointer), intent(inout) :: self
real(kind=rk), target:: data(:)

private subroutine data_set_2d(self, data)

Arguments

Type IntentOptional AttributesName
class(type_nd_data_pointer), intent(inout) :: self
real(kind=rk), target:: data(:,:)

private subroutine data_set_3d(self, data)

Arguments

Type IntentOptional AttributesName
class(type_nd_data_pointer), intent(inout) :: self
real(kind=rk), target:: data(:,:,:)

private subroutine data_get_extents(self, extents)

Arguments

Type IntentOptional AttributesName
class(type_nd_data_pointer), intent(in) :: self
integer, intent(out), allocatable:: extents(:)

private subroutine fatal_error(location, error)

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: location
character(len=*), intent(in) :: error

private recursive subroutine node_finalize(self)

Arguments

Type IntentOptional AttributesName
class(type_node), intent(inout) :: self

private subroutine field_set_real_attribute(self, name, value)

Arguments

Type IntentOptional AttributesName
class(type_field), intent(inout) :: self
character(len=*), intent(in) :: name
real(kind=rk), intent(in) :: value