5.13.2-dev0
mHM
The mesoscale Hydrological Model
Loading...
Searching...
No Matches
mo_upscaling_operators Module Reference

Module containing upscaling operators. More...

Functions/Subroutines

integer(i4) function, dimension(size(l1_upper_rowid_cell, 1)), public majority_statistics (nclass, l1_upper_rowid_cell, l1_lower_rowid_cell, l1_left_colonid_cell, l1_right_colonid_cell, l0_finescale_2d_data)
 majority statistics
 
real(dp) function, dimension(size(l0upbound_inlx, 1)), public l0_fractionalcover_in_lx (datain0, classid, mask0, l0upbound_inlx, l0downbound_inlx, l0leftbound_inlx, l0rightbound_inlx, ntcells0_inlx)
 fractional coverage of a given class of L0 fields in Lx field (Lx = L1 or L11)
 
real(dp) function, dimension(size(nl0_cells_in_l1_cell, 1)), public upscale_arithmetic_mean (nl0_cells_in_l1_cell, l1_upper_rowid_cell, l1_lower_rowid_cell, l1_left_colonid_cell, l1_right_colonid_cell, l0_cellid, mask0, nodata_value, l0_finescale_data)
 aritmetic mean
 
real(dp) function, dimension(size(nl0_cells_in_l1_cell, 1)), public upscale_harmonic_mean (nl0_cells_in_l1_cell, l1_upper_rowid_cell, l1_lower_rowid_cell, l1_left_colonid_cell, l1_right_colonid_cell, l0_cellid, mask0, nodata_value, l0_finescale_data)
 harmonic mean
 
real(dp) function, dimension(size(l1_upper_rowid_cell, 1)), public upscale_geometric_mean (l1_upper_rowid_cell, l1_lower_rowid_cell, l1_left_colonid_cell, l1_right_colonid_cell, mask0, nodata_value, l0_finescale_data)
 geometric mean
 
real(dp) function, dimension(size(nl0_cells_in_l1_cell, 1)) upscale_p_norm (nl0_cells_in_l1_cell, l1_upper_rowid_cell, l1_lower_rowid_cell, l1_left_colonid_cell, l1_right_colonid_cell, l0_cellid, mask0, nodata_value, p_norm, l0_finescale_data)
 aritmetic mean
 

Detailed Description

Module containing upscaling operators.

This module provides the routines for upscaling_operators.

Authors
Giovanni Dalmasso, Rohini Kumar
Date
Dec 2012

Function/Subroutine Documentation

◆ l0_fractionalcover_in_lx()

real(dp) function, dimension(size(l0upbound_inlx, 1)), public mo_upscaling_operators::l0_fractionalcover_in_lx ( integer(i4), dimension(:), intent(in)  datain0,
integer(i4), intent(in)  classid,
logical, dimension(:, :), intent(in)  mask0,
integer(i4), dimension(:), intent(in)  l0upbound_inlx,
integer(i4), dimension(:), intent(in)  l0downbound_inlx,
integer(i4), dimension(:), intent(in)  l0leftbound_inlx,
integer(i4), dimension(:), intent(in)  l0rightbound_inlx,
integer(i4), dimension(:), intent(in)  ntcells0_inlx 
)

fractional coverage of a given class of L0 fields in Lx field (Lx = L1 or L11)

Fractional coverage of a given class of L0 fields in Lx field (Lx = L1 or L11). For example, this routine can be used for calculating the karstic fraction.

Parameters
[in]integer(i4), dimension(:) :: dataIn0input fields at finer scale
[in]integer(i4) :: classIdclass id for which fraction has to be estimated
[in]logical, dimension(:, :) :: mask0finer scale L0 mask
[in]integer(i4), dimension(:) :: L0upBound_inLxrow start at finer L0 scale
[in]integer(i4), dimension(:) :: L0downBound_inLxrow end at finer L0 scale
[in]integer(i4), dimension(:) :: L0leftBound_inLxcol start at finer L0 scale
[in]integer(i4), dimension(:) :: L0rightBound_inLxcol end at finer L0 scale
[in]integer(i4), dimension(:) :: nTCells0_inLxtotal number of valid L0 cells in a given Lx cell
Returns
real(dp) :: L0_fractionalCover_in_Lx(:) — packed 1D fraction coverage (Lx) of given class id
Authors
Rohini Kumar
Date
Feb 2013

Definition at line 152 of file mo_upscaling_operators.f90.

References mo_common_constants::nodata_i4.

Referenced by mo_multi_param_reg::karstic_layer(), and mo_multi_param_reg::mpr().

Here is the caller graph for this function:

◆ majority_statistics()

integer(i4) function, dimension(size(l1_upper_rowid_cell, 1)), public mo_upscaling_operators::majority_statistics ( integer(i4), intent(in)  nclass,
integer(i4), dimension(:), intent(in)  l1_upper_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_lower_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_left_colonid_cell,
integer(i4), dimension(:), intent(in)  l1_right_colonid_cell,
integer(i4), dimension(:, :), intent(in)  l0_finescale_2d_data 
)

majority statistics

upscale grid L0_fineScale_2D_data based on a majority statistics

Parameters
[in]integer(i4) :: nClassnumber of classes
[in]integer(i4), dimension(:) :: L1_upper_rowId_cellupper row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_lower_rowId_celllower row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_left_colonId_cellleft colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_right_colonId_cellright colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:, :) :: L0_fineScale_2D_datahigh resolution data
Returns
integer(i4) :: majority_statistics(:) — Upscaled variable based on majority.
Authors
Giovanni Dalmasso, Rohini Kumar
Date
Dec 2012

Definition at line 65 of file mo_upscaling_operators.f90.

References majority_statistics().

Referenced by majority_statistics().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ upscale_arithmetic_mean()

real(dp) function, dimension(size(nl0_cells_in_l1_cell, 1)), public mo_upscaling_operators::upscale_arithmetic_mean ( integer(i4), dimension(:), intent(in)  nl0_cells_in_l1_cell,
integer(i4), dimension(:), intent(in)  l1_upper_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_lower_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_left_colonid_cell,
integer(i4), dimension(:), intent(in)  l1_right_colonid_cell,
integer(i4), dimension(:), intent(in)  l0_cellid,
logical, dimension(:, :), intent(in)  mask0,
real(dp), intent(in)  nodata_value,
real(dp), dimension(:), intent(in)  l0_finescale_data 
)

aritmetic mean

upscaling of level-0 grid data to level-1 using aritmetic mean

Parameters
[in]integer(i4), dimension(:) :: nL0_cells_in_L1_cellnumber of level-0 cells within a level-1 cell
[in]integer(i4), dimension(:) :: L1_upper_rowId_cellupper row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_lower_rowId_celllower row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_left_colonId_cellleft colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_right_colonId_cellright colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L0_cellIdcell ID at level-0
[in]logical, dimension(:, :) :: mask0mask at level 0
[in]real(dp) :: nodata_valueno data value
[in]real(dp), dimension(:) :: L0_fineScale_datahigh resolution data
Returns
real(dp) :: upscale_arithmetic_mean(:) — Upscaled variable from L0 to L1 using arithmetic mean
Authors
Giovanni Dalmasso, Rohini Kumar
Date
Dec 2012

Definition at line 266 of file mo_upscaling_operators.f90.

References upscale_arithmetic_mean().

Referenced by mo_multi_param_reg::aerodynamical_resistance(), mo_mpr_pet::bulksurface_resistance(), mo_multi_param_reg::canopy_intercept_param(), mo_multi_param_reg::karstic_layer(), mo_multi_param_reg::mpr(), mo_mpr_runoff::mpr_runoff(), mo_mpr_pet::priestley_taylor_alpha(), and upscale_arithmetic_mean().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ upscale_geometric_mean()

real(dp) function, dimension(size(l1_upper_rowid_cell, 1)), public mo_upscaling_operators::upscale_geometric_mean ( integer(i4), dimension(:), intent(in)  l1_upper_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_lower_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_left_colonid_cell,
integer(i4), dimension(:), intent(in)  l1_right_colonid_cell,
logical, dimension(:, :), intent(in)  mask0,
real(dp), intent(in)  nodata_value,
real(dp), dimension(:), intent(in)  l0_finescale_data 
)

geometric mean

upscaling of level-0 grid data to level-1 using geometric mean

Parameters
[in]integer(i4), dimension(:) :: L1_upper_rowId_cellupper row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_lower_rowId_celllower row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_left_colonId_cellleft colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_right_colonId_cellright colon boundary (level-0) of a level-1 cell
[in]logical, dimension(:, :) :: mask0mask at level 0
[in]real(dp) :: nodata_valueno data value
[in]real(dp), dimension(:) :: L0_fineScale_datahigh resolution data
Returns
real(dp) :: upscale_geometric_mean(:) — Upscaled variable from L0 to L1 using geometric mean
Authors
Giovanni Dalmasso, Rohini Kumar
Date
Dec 2012

Definition at line 469 of file mo_upscaling_operators.f90.

References upscale_geometric_mean().

Referenced by upscale_geometric_mean().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ upscale_harmonic_mean()

real(dp) function, dimension(size(nl0_cells_in_l1_cell, 1)), public mo_upscaling_operators::upscale_harmonic_mean ( integer(i4), dimension(:), intent(in)  nl0_cells_in_l1_cell,
integer(i4), dimension(:), intent(in)  l1_upper_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_lower_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_left_colonid_cell,
integer(i4), dimension(:), intent(in)  l1_right_colonid_cell,
integer(i4), dimension(:), intent(in)  l0_cellid,
logical, dimension(:, :), intent(in)  mask0,
real(dp), intent(in)  nodata_value,
real(dp), dimension(:), intent(in)  l0_finescale_data 
)

harmonic mean

upscaling of level-0 grid data to level-1 using harmonic mean

Parameters
[in]integer(i4), dimension(:) :: nL0_cells_in_L1_cellnumber of level-0 cells within a level-1 cell
[in]integer(i4), dimension(:) :: L1_upper_rowId_cellupper row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_lower_rowId_celllower row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_left_colonId_cellleft colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_right_colonId_cellright colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L0_cellIdcell ID at level-0
[in]logical, dimension(:, :) :: mask0mask at Level 0
[in]real(dp) :: nodata_valueno data value
[in]real(dp), dimension(:) :: L0_fineScale_datahigh resolution data
Returns
real(dp) :: upscale_harmonic_mean(:) — Upscaled variable from L0 to L1 using harmonic mean
Authors
Giovanni Dalmasso, Rohini Kumar
Date
Dec 2012

Definition at line 369 of file mo_upscaling_operators.f90.

References upscale_harmonic_mean().

Referenced by mo_mpr_smhorizons::mpr_smhorizons(), mo_mpr_pet::pet_correctbylai(), and upscale_harmonic_mean().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ upscale_p_norm()

real(dp) function, dimension(size(nl0_cells_in_l1_cell, 1)) mo_upscaling_operators::upscale_p_norm ( integer(i4), dimension(:), intent(in)  nl0_cells_in_l1_cell,
integer(i4), dimension(:), intent(in)  l1_upper_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_lower_rowid_cell,
integer(i4), dimension(:), intent(in)  l1_left_colonid_cell,
integer(i4), dimension(:), intent(in)  l1_right_colonid_cell,
integer(i4), dimension(:), intent(in)  l0_cellid,
logical, dimension(:, :), intent(in)  mask0,
real(dp), intent(in)  nodata_value,
real(dp), intent(in)  p_norm,
real(dp), dimension(:), intent(in)  l0_finescale_data 
)
private

aritmetic mean

upscaling of level-0 grid data to level-1 using aritmetic mean

Parameters
[in]integer(i4), dimension(:) :: nL0_cells_in_L1_cellnumber of level-0 cells within a level-1 cell
[in]integer(i4), dimension(:) :: L1_upper_rowId_cellupper row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_lower_rowId_celllower row boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_left_colonId_cellleft colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L1_right_colonId_cellright colon boundary (level-0) of a level-1 cell
[in]integer(i4), dimension(:) :: L0_cellIdcell ID at level-0
[in]logical, dimension(:, :) :: mask0mask at level 0
[in]real(dp) :: nodata_valueno data value
[in]real(dp) :: p_normp_norm value
[in]real(dp), dimension(:) :: L0_fineScale_datahigh resolution data
Returns
real(dp) :: upscale_arithmetic_mean(:) — Upscaled variable from L0 to L1 using arithmetic mean
Authors
Giovanni Dalmasso, Rohini Kumar
Date
Dec 2012

Definition at line 576 of file mo_upscaling_operators.f90.

References upscale_p_norm().

Referenced by upscale_p_norm().

Here is the call graph for this function:
Here is the caller graph for this function: