cable_output_binding_t Derived Type

type, public :: cable_output_binding_t

Ties an output catalogue name to the CABLE model state it describes.

The catalogue (output_catalogue.yaml) describes what a variable is. A binding supplies the part that only Fortran can: the model variable (through an aggregator), the unit conversion, the valid range, and whether the variable exists in the current model configuration.


Components

Type Visibility Attributes Name Initial
character(len=64), public :: name = ""

Catalogue name of the variable this binding belongs to.

class(aggregator_t), public, allocatable :: aggregator

Aggregator wrapping the model working variable. Unallocated if the variable is not available.

real, public :: scale_by = 1.0

Multiply the working variable by this to obtain the output value.

real, public :: divide_by = 1.0

Divide the working variable by this to obtain the output value.

real, public :: offset_by = 0.0

Add this to the working variable to obtain the output value.

real, public, allocatable :: range(:)

Valid range of the variable in output units. Unallocated if unchecked.

logical, public :: available = .true.

Whether the variable exists in the current model configuration.


Constructor

public interface cable_output_binding_t

  • private function cable_output_binding_constructor(name, aggregator, scale_by, divide_by, offset_by, range, available) result(this)

    Constructor for cable_output_binding_t.

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: name
    class(aggregator_t), intent(in), optional :: aggregator

    Absent for variables that do not exist in the current model configuration.

    real, intent(in), optional :: scale_by
    real, intent(in), optional :: divide_by
    real, intent(in), optional :: offset_by
    real, intent(in), optional :: range(:)
    logical, intent(in), optional :: available

    Return Value type(cable_output_binding_t)