AirRelativeHumidity Module

History

current version 1.0 - 3rd June 2021

version date comment
1.0 3/June/2021 Original code

License

license: GNU GPL http://www.gnu.org/licenses/

Module Description

Module to manage air relative humidity with arbitrary time cumulation



Contents


Variables

Type Visibility Attributes Name Initial
integer(kind=short), public :: dtRelHumidity = 0

cumulation deltat

type(ObservationalNetwork), public :: hygrometers

sensor stations network

type(grid_real), public :: relHumidityAir

[% 0-100]

real(kind=float), private, parameter :: MISSING_DEF_REAL = -9999.9
real(kind=float), private :: cellsizeInterpolation

spatial resolution of interpolated grid

integer(kind=short), private :: dtGrid

dt of imported field

integer(kind=short), private :: export

activates grid exporting

type(CRS), private :: exportGridMapping
integer(kind=short), private :: export_dt

time between two exportations

integer(kind=short), private :: export_epsg

coordinate reference system of exported grid

character(len=1000), private :: export_file

name of exported grid

character(len=1000), private :: export_file_var

name of exported variance grid

integer(kind=short), private :: export_format

1 = esri_ascii, 2 = esri_binary, 3 = netcdf

character(len=1000), private :: export_path

folder where to put exported grids

type(DateTime), private :: export_start

time and date to start exporting

type(DateTime), private :: export_stop

time and date to stop exporting

type(grid_real), private :: exportedGrid
type(grid_real), private :: exportedGridVar
character(len=300), private :: fileGrid

file containing grids

integer(kind=short), private :: fileunit

unit of file containing data

type(grid_real), private :: grid_devst

standard deviation of kriging interpolation

integer(kind=short), private :: i

loop index

real(kind=float), private :: idw_power

power to be used with IDW

type(grid_real), private :: interpolatedMap(3)

1 = map for thiessen, 2 = map for idw, 3 = map for kriging

integer(kind=short), private :: interpolationMethod

method to spatial interpolate site data

integer(kind=short), private :: interpolationMethod_assignment

method to assign spatial interpolation ! 1 = one method for the entire domain, 2 = a map with interpolation method codes

type(grid_integer), private :: interpolationMethod_map
integer(kind=short), private :: interpolationMethod_vector(3)

defines active interpolation methods

integer(kind=short), private :: j

loop index

integer(kind=short), private :: krige_anisotropy

considers anisotropy, default = 0 excludes anisotropy

integer(kind=short), private :: krige_lags

number of lags for semivariogram. if undefined or set to 0 default to 15

real(kind=float), private :: krige_maxlag

maximum distance to be considered for semivariogram assessment. If undefined or set to 0, it is computed automatically

integer(kind=short), private :: krige_var

when set to 1 a grid of kriging variance is generated and exported if export option is active, default to 0

integer(kind=short), private :: krige_varmodel

1 = spherical, 2 = exponential, 3 = gaussian, 0 = automatic fitting. default to 2

logical, private :: needConversion
integer(kind=short), private :: neighbors

number of closest data to use for interpolation

real(kind=float), private :: offset_value

offset to apply to final map

real(kind=float), private, parameter :: refElevation = 1000.

reference elevation for applying lapse rate

real(kind=float), private :: scale_factor

scale factor to apply to final map

type(DateTime), private :: timeNew

time when new data must be read

type(DateTime), private :: timeNewExport

time when new exporting must occur

real(kind=float), private :: valid_prcn

when data from several time steps are read, this is the minimum percentage (0-1) of valid data that must be prresent to consider valid the aggregated value.


Subroutines

public subroutine AirRelativeHumidityInit(ini, mask, dtMeteo, tstart)

Initialize air relative humidity

Arguments

Type IntentOptional Attributes Name
type(IniList), intent(in) :: ini
type(grid_integer), intent(in) :: mask

defines interpolation extent

integer(kind=short), intent(in) :: dtMeteo

deltat of meteo data reading

type(DateTime), intent(in) :: tstart

initial time

public subroutine AirRelativeHumidityRead(time)

Read air relative humidity data

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time

current time

private subroutine SetSpecificProperties(method, ini, mask)

set properties and initialize variables for each interpolation method

Arguments

Type IntentOptional Attributes Name
integer(kind=short), intent(in) :: method
type(IniList), intent(in) :: ini
type(grid_integer), intent(in) :: mask