5 #include <boost/geometry.hpp> 6 #include <boost/geometry/geometries/point.hpp> 7 #include <boost/geometry/geometries/box.hpp> 8 #include <boost/geometry/index/rtree.hpp> 9 #include <boost/math/distributions/gamma.hpp> 10 #include <boost/math/distributions/normal.hpp> 16 #define GRIDPP_VERSION "0.7.0" 17 #define __version__ GRIDPP_VERSION 25 typedef std::vector<float>
vec;
27 typedef std::vector<vec>
vec2;
29 typedef std::vector<vec2>
vec3;
31 typedef std::vector<int>
ivec;
33 typedef std::vector<ivec>
ivec2;
35 typedef std::vector<ivec2>
ivec3;
39 typedef std::vector<double>
dvec;
41 typedef std::vector<dvec>
dvec2;
49 static const float MV = NAN;
53 static const float pi = 3.14159265;
163 const vec2& background,
166 const vec& variance_ratios,
167 const vec& background_at_points,
170 bool allow_extrapolation=
true);
185 const vec& background,
188 const vec& variance_ratios,
189 const vec& background_at_points,
192 bool allow_extrapolation=
true);
210 const vec2& background,
211 const vec2& bvariance,
214 const vec& obs_variance,
215 const vec& background_at_points,
216 const vec& bvariance_at_points,
219 vec2& analysis_variance,
220 bool allow_extrapolation=
true);
238 const vec& background,
239 const vec& bvariance,
242 const vec& obs_variance,
243 const vec& background_at_points,
244 const vec& bvariance_at_points,
247 vec& analysis_variance,
248 bool allow_extrapolation=
true);
264 const vec3& background,
267 const vec& obs_standard_deviations,
268 const vec2& background_at_points,
271 bool allow_extrapolation=
true);
287 const vec2& background,
290 const vec& obs_standard_deviations,
291 const vec2& background_at_points,
294 bool allow_extrapolation=
true);
310 const vec2& background,
313 const vec& background_at_points,
334 const vec2& background,
337 const vec2& background_at_points,
369 const vec2& background,
371 const vec& observations,
372 const ivec& halfwidths,
385 const vec2& background,
387 const vec& observations,
402 vec
gamma_inv(
const vec& levels,
const vec& shape,
const vec& scale);
535 vec2
neighbourhood_search(
const vec2& array,
const vec2& search_array,
int halfwidth,
float search_target_min,
float search_target_max,
float search_delta,
const ivec2& apply_array=
ivec2());
646 float calc_score(
const vec& ref,
const vec& fcst,
float threshold,
Metric metric);
657 float calc_score(
const vec& ref,
const vec& fcst,
float threshold,
float fthreshold,
Metric metric);
708 vec2
nearest(
const Grid& igrid,
const Grid& ogrid,
const vec2& ivalues);
716 vec3
nearest(
const Grid& igrid,
const Grid& ogrid,
const vec3& ivalues);
963 vec2
count(
const Grid& igrid,
const Grid& ogrid,
float radius);
1094 float pressure(
float ielev,
float oelev,
float ipressure,
float itemperature=288.15);
1103 vec
pressure(
const vec& ielev,
const vec& oelev,
const vec& ipressure,
const vec& itemperature);
1137 vec
qnh(
const vec&
pressure,
const vec& altitude);
1181 vec
wind_speed(
const vec& xwind,
const vec& ywind);
1254 void debug(std::string
string);
1259 void warning(std::string
string);
1264 void error(std::string
string);
1290 float calc_quantile(
const vec& array,
float quantile_level);
1311 vec2
calc_quantile(
const vec3& array,
const vec2& quantile_levels);
1378 float interpolate(
float x,
const vec& iX,
const vec& iY);
1386 vec
interpolate(
const vec& x,
const vec& iX,
const vec& iY);
1402 vec2
init_vec2(
int Y,
int X,
float value=MV);
1411 ivec3
init_ivec3(
int Y,
int X,
int E,
int value);
1420 vec3
init_vec3(
int Y,
int X,
int E,
float value=MV);
1440 vec2
window(
const vec2& array,
int length,
gridpp::Statistic statistic,
bool before=
false,
bool keep_missing=
false,
bool missing_edges=
true);
1583 int get_nearest_neighbour(
float lat,
float lon,
bool include_match=
true)
const;
1590 ivec get_neighbours(
float lat,
float lon,
float radius,
bool include_match=
true)
const;
1598 ivec get_neighbours_with_distance(
float lat,
float lon,
float radius, vec& distances,
bool include_match=
true)
const;
1605 int get_num_neighbours(
float lat,
float lon,
float radius,
bool include_match=
true)
const;
1612 ivec get_closest_neighbours(
float lat,
float lon,
int num,
bool include_match=
true)
const;
1614 static float deg2rad(
float deg);
1615 static float rad2deg(
float deg);
1637 static float calc_straight_distance(
float x0,
float y0,
float z0,
float x1,
float y1,
float z1);
1644 static float calc_distance(
const Point& p1,
const Point& p2);
1652 static float calc_straight_distance(
const Point& p1,
const Point& p2);
1664 vec get_lats()
const;
1665 vec get_lons()
const;
1668 const vec& get_x()
const;
1669 const vec& get_y()
const;
1670 const vec& get_z()
const;
1672 typedef boost::geometry::model::point<float, 3, boost::geometry::cs::cartesian>
point;
1673 typedef std::pair<point, unsigned>
value;
1674 typedef boost::geometry::model::box<point>
box;
1675 boost::geometry::index::rtree< value, boost::geometry::index::quadratic<16> >
mTree;
1686 bool operator()(value
const& v)
const;
1695 bool operator()(value
const& v)
const;
1723 int get_nearest_neighbour(
float lat,
float lon,
bool include_match=
true)
const;
1732 ivec get_neighbours(
float lat,
float lon,
float radius,
bool include_match=
true)
const;
1742 ivec get_neighbours_with_distance(
float lat,
float lon,
float radius, vec& distances,
bool include_match=
true)
const;
1751 int get_num_neighbours(
float lat,
float lon,
float radius,
bool include_match=
true)
const;
1760 ivec get_closest_neighbours(
float lat,
float lon,
int num,
bool include_match=
true)
const;
1762 vec get_lats()
const;
1763 vec get_lons()
const;
1764 vec get_elevs()
const;
1765 vec get_lafs()
const;
1773 ivec get_in_domain_indices(
const Grid& grid)
const;
1779 Points get_in_domain(
const Grid& grid)
const;
1781 Point get_point(
int index)
const;
1787 Points subset(
const ivec& indices)
const;
1816 ivec get_nearest_neighbour(
float lat,
float lon,
bool include_match=
true)
const;
1825 ivec2 get_neighbours(
float lat,
float lon,
float radius,
bool include_match=
true)
const;
1835 ivec2 get_neighbours_with_distance(
float lat,
float lon,
float radius, vec& distances,
bool include_match=
true)
const;
1844 int get_num_neighbours(
float lat,
float lon,
float radius,
bool include_match=
true)
const;
1853 ivec2 get_closest_neighbours(
float lat,
float lon,
int num,
bool include_match=
true)
const;
1862 bool get_box(
float lat,
float lon,
int& Y1_out,
int& X1_out,
int& Y2_out,
int& X2_out)
const;
1867 Points to_points()
const;
1869 vec2 get_lats()
const;
1870 vec2 get_lons()
const;
1871 vec2 get_elevs()
const;
1872 vec2 get_lafs()
const;
1875 Point get_point(
int y_index,
int x_index)
const;
1879 vec2 get_2d(vec input)
const;
1880 ivec get_indices(
int index)
const;
1881 ivec2 get_indices(ivec indices)
const;
1902 virtual float corr(
const Point& p1,
const Point& p2)
const = 0;
1909 virtual float corr_background(
const Point& p1,
const Point& p2)
const;
1914 virtual float localization_distance(
const Point& p)
const;
1923 float barnes_rho(
float dist,
float length)
const;
1930 float cressman_rho(
float dist,
float length)
const;
1941 float corr(
const Point& p1,
const Point& p2)
const;
1943 float localization_distance(
const Point& p)
const;
1968 float corr(
const Point& p1,
const Point& p2)
const;
1970 float localization_distance(
const Point& p)
const;
1984 float corr(
const Point& p1,
const Point& p2)
const;
1998 float corr(
const Point& p1,
const Point& p2)
const;
1999 float corr_background(
const Point& p1,
const Point& p2)
const;
2001 float localization_distance(
const Point& p)
const;
2012 virtual float forward(
float value)
const;
2013 virtual float backward(
float value)
const;
2019 vec forward(
const vec& input)
const;
2025 vec backward(
const vec& input)
const;
2031 vec2 forward(
const vec2& input)
const;
2037 vec2 backward(
const vec2& input)
const;
2043 vec3 forward(
const vec3& input)
const;
2049 vec3 backward(
const vec3& input)
const;
2058 float forward(
float value)
const;
2059 float backward(
float value)
const;
2066 float forward(
float value)
const;
2067 float backward(
float value)
const;
2078 float forward(
float value)
const;
2079 float backward(
float value)
const;
2093 Gamma(
float shape,
float scale,
float tolerance=0.01);
2096 float forward(
float value)
const;
2097 float backward(
float value)
const;
2100 boost::math::gamma_distribution<> m_gamma_dist;
2101 boost::math::normal m_norm_dist;
ComparisonOperator
Types of comparison operators.
Definition: gridpp.h:138
Definition: gridpp.h:1887
float test_vec2_input(const vec2 &input)
Testing function for 2D input vector.
Definition: swig.cpp:25
vec2 nearest(const Grid &igrid, const Grid &ogrid, const vec2 &ivalues)
Nearest neighbour dowscaling grid to grid for a deterministic field.
Definition: nearest.cpp:7
std::string version()
The gridpp version.
Definition: gridpp.cpp:8
vec2 calc_gradient(const vec2 &base, const vec2 &values, GradientType gradient_type, int halfwidth, int min_num=2, float min_range=gridpp::MV, float default_gradient=0)
Computes gradients based on values in neighbourhood.
Definition: calc_gradient.cpp:6
Definition: gridpp.h:1683
Bias.
Definition: gridpp.h:108
vec2 neighbourhood_quantile_ens_fast(const vec3 &input, float quantile, int radius, const vec &thresholds)
Deprecated: Compute neighbourhood quantiles fast on ensemble field.
Definition: neighbourhood.cpp:549
float m_localization_distance
Definition: gridpp.h:1931
float laf
Definition: gridpp.h:1564
Greater or equal than, >=.
Definition: gridpp.h:142
static const float MV_CML
Missing value indicator in gridpp command-line tool.
Definition: gridpp.h:51
Helper class for Grid and Points representing a tree of points.
Definition: gridpp.h:1572
void test_not_implemented_exception()
Definition: swig.cpp:98
vec2 bilinear(const Grid &igrid, const Grid &ogrid, const vec2 &ivalues)
Bilinear downscaling grid to grid for a deterministic field.
Definition: bilinear.cpp:27
static const float standard_surface_temperature
Temperature at surface in standard atmosphere [K].
Definition: gridpp.h:59
Minimum of values.
Definition: gridpp.h:90
vec2 window(const vec2 &array, int length, gridpp::Statistic statistic, bool before=false, bool keep_missing=false, bool missing_edges=true)
Compute window statistics across time, independently for each case.
Definition: window.cpp:6
float dewpoint(float temperature, float relative_humidity)
Calculate dewpoint temperature from temperature and relative humidity.
Definition: humidity.cpp:5
Maximum of values.
Definition: gridpp.h:92
Randomly pick a non-nan value.
Definition: gridpp.h:98
float wind_speed(float xwind, float ywind)
Diagnose wind speed from its components.
Definition: wind.cpp:6
Identity transform, i.e.
Definition: gridpp.h:2052
CorrectionType
Method for statistical correction.
Definition: gridpp.h:113
std::vector< int > ivec
1D integer vector
Definition: gridpp.h:31
ivec2 test_ivec2_output()
Definition: swig.cpp:69
vec3 optimal_interpolation_ensi(const Grid &bgrid, const vec3 &background, const Points &obs_points, const vec &obs, const vec &obs_standard_deviations, const vec2 &background_at_points, const StructureFunction &structure, int max_points, bool allow_extrapolation=true)
Optimal interpolation for an ensemble gridded field See Lussana et al 2019 (DOI: 10.1002/qj.3646)
Definition: oi_ensi.cpp:33
ivec test_ivec_output()
Definition: swig.cpp:65
vec2 test_vec2_output()
Testing function for 2D output vector.
Definition: swig.cpp:49
Unknown statistic.
Definition: gridpp.h:99
bool is_valid_lat(float lat, CoordinateType type)
Checks that a lat-coordinate is valid (based on the coordinate type)
Definition: util.cpp:588
Metric
Binary verification metrics.
Definition: gridpp.h:103
vec2 mask_threshold_downscale_quantile(const Grid &igrid, const Grid &ogrid, const vec3 &ivalues_true, const vec3 &ivalues_false, const vec3 &theshold_values, const vec2 &threshold, const ComparisonOperator &comparison_operator, const float quantile_level)
Masked ensemble downscaling and quantile extraction.
Definition: mask_threshold_downscale_consensus.cpp:14
Simple structure function based on distance, elevation, and land area fraction.
Definition: gridpp.h:1950
GradientType
Types of methods to calculate the gradient.
Definition: gridpp.h:126
Definition: gridpp.h:1992
vec2 full_gradient(const Grid &igrid, const Grid &ogrid, const vec2 &ivalues, const vec2 &elev_gradient, const vec2 &laf_gradient=vec2(), Downscaler downscaler=Nearest)
Compute Downscale.
Definition: gradient.cpp:5
float z
Definition: gridpp.h:1568
vec distance(const Grid &grid, const Points &points, int num=1)
For each point, calculates the distance to nearest gridpoint.
Definition: distance.cpp:6
double clock()
The current time.
Definition: util.cpp:256
static const float gas_constant_mol
Universal Gas Constant [kg*m^2*s^-2/(K*mol)].
Definition: gridpp.h:65
vec2 downscale_probability(const Grid &igrid, const Grid &ogrid, const vec3 &ivalues, const vec2 &threshold, const ComparisonOperator &comparison_operator)
Nearest neighbour downscaling grid to grid and probability in one.
Definition: downscale_probability.cpp:7
Extrapolation
Methods for extrapolating outside a curve.
Definition: gridpp.h:79
float test_vec_argout(vec &distances)
Testing function for 1D vector treated as output.
Definition: swig.cpp:86
void set_debug_level(int level)
Set the verbosity of debug messages.
Definition: gridpp.cpp:70
float y
Definition: gridpp.h:1567
CoordinateType type
Definition: gridpp.h:1565
not_implemented_exception()
Definition: gridpp.h:1890
bool is_valid_lon(float lon, CoordinateType type)
Checks that a lon-coordinate is valid (based on the coordinate type)
Definition: util.cpp:593
static const float gas_constant_si
Universal Gas Constant [J/(kg*K)].
Definition: gridpp.h:67
Proportion correct.
Definition: gridpp.h:107
float sea_level_pressure(float ps, float altitude, float temperature, float rh=gridpp::MV, float dewpoint=gridpp::MV)
Convert Surface Pressure to Sea Level Pressure.
Definition: pressure.cpp:28
Population variance of values.
Definition: gridpp.h:95
Point(float lat, float lon, float elev=MV, float laf=MV, CoordinateType type=Geodetic)
Constructor.
Definition: point.cpp:5
vec2 smart(const Grid &igrid, const Grid &ogrid, const vec2 &ivalues, int num, const StructureFunction &structure)
Smart neighbour downscaling grid to grid for a deterministic field.
Definition: smart.cpp:12
void set_omp_threads(int num)
Set the number of OpenMP threads to use.
Definition: gridpp.cpp:57
float relative_humidity(float temperature, float dewpoint)
Calculate relative humidity from temperature and dewpoint temperature.
Definition: humidity.cpp:33
ivec3 test_ivec3_output()
Definition: swig.cpp:76
Statistic get_statistic(std::string name)
Convert name of a statistic enums.
Definition: gridpp.cpp:11
int get_lower_index(float iX, const vec &iValues)
Find the index in a vector that is equal to or just below a value.
Definition: util.cpp:313
vec2 neighbourhood_quantile(const vec2 &input, float quantile, int halfwidth)
Computes a quantile in a sliding square neighbourhood.
Definition: neighbourhood.cpp:534
boost::geometry::model::point< float, 3, boost::geometry::cs::cartesian > point
Definition: gridpp.h:1672
Threat score.
Definition: gridpp.h:105
vec2 fill(const Grid &igrid, const vec2 &input, const Points &points, const vec &radii, float value, bool outside)
Fill in values inside or outside a set of circles (useful for masking)
Definition: fill.cpp:6
Represents a vector of locations and their metadata.
Definition: gridpp.h:1702
vec2 doping_circle(const Grid &igrid, const vec2 &background, const Points &points, const vec &observations, const vec &radii, float max_elev_diff=gridpp::MV)
Insert observations into gridded field using a circle.
Definition: doping.cpp:50
vec2 neighbourhood_quantile_fast(const vec2 &input, float quantile, int halfwidth, const vec &thresholds)
Fast and approximate neighbourhood quantile.
Definition: neighbourhood.cpp:296
std::pair< point, unsigned > value
Definition: gridpp.h:1673
std::vector< ivec2 > ivec3
3D integer vector
Definition: gridpp.h:35
static const float molar_mass
Molar Mass of Dry Air [kg/mol].
Definition: gridpp.h:63
Keep values the way they were.
Definition: gridpp.h:84
Greater than, >
Definition: gridpp.h:141
Definition: gridpp.h:1692
vec2 neighbourhood_brute_force(const vec2 &input, int halfwidth, Statistic statistic)
Spatial neighbourhood filter without any shortcuts.
Definition: neighbourhood.cpp:528
ivec3 init_ivec3(int Y, int X, int E, int value)
Initialize a 3D integer vector of size Y, X, E, with a given value.
Definition: util.cpp:467
std::vector< vec > vec2
2D float vector
Definition: gridpp.h:27
Latitude and longitude.
Definition: gridpp.h:121
Represents a 2D grid of locations and their metadata.
Definition: gridpp.h:1797
static int _debug_level
Definition: gridpp.h:1228
Simple structure function based on distance, elevation, and land area fraction.
Definition: gridpp.h:1981
vec2 neighbourhood(const vec2 &input, int halfwidth, Statistic statistic)
Spatial neighbourhood filter, computing a statistic for a sliding square window.
Definition: neighbourhood.cpp:28
Covariance structure function.
Definition: gridpp.h:1894
bool convert_coordinates(const vec &lats, const vec &lons, CoordinateType type, vec &x_coords, vec &y_coords, vec &z_coords)
Convert lats/lons or 2D x/y coordinates to 3D cartesian coordinates with the centre of the earth as t...
Definition: util.cpp:554
int get_upper_index(float iX, const vec &iValues)
Find the index in a vector that is equal to or just above a value.
Definition: util.cpp:332
Heidke skill score.
Definition: gridpp.h:109
Continue past the end-points using the mean slope of the curve.
Definition: gridpp.h:81
vec2 neighbourhood_score(const Grid &grid, const Points &points, const vec2 &fcst, const vec &ref, int half_width, gridpp::Metric metric, float threshold)
Compute a score for a metric of all points within a radius.
Definition: neighbourhood_score.cpp:6
void debug(std::string string)
Writes a debug message to standard out.
Definition: util.cpp:227
void initialize_omp()
Sets the number of OpenMP threads to 1 if OMP_NUM_THREADS undefined.
Definition: gridpp.cpp:45
static const float swig_default_value
Default value used to fill array in SWIG testing functions.
Definition: gridpp.h:1534
vec count(const Grid &grid, const Points &points, float radius)
For each point, counts the number of gridpoints within the radius.
Definition: count.cpp:6
Lower than, <.
Definition: gridpp.h:139
Continue past the end-points using the slope of the two lowermost or uppermost points in the curve...
Definition: gridpp.h:82
boost::geometry::model::box< point > box
Definition: gridpp.h:1674
vec mX
Definition: gridpp.h:1678
float test_vec2_argout(vec2 &distances)
Testing function for 2D vector treated as output.
Definition: swig.cpp:91
vec2 gridding_nearest(const Grid &grid, const Points &points, const vec &values, int min_num, gridpp::Statistic statistic)
Assign each point to nearest neighbour in grid and aggregate values.
Definition: gridding.cpp:53
float test_vec_input(const vec &input)
Testing function for 1D input vector.
Definition: swig.cpp:12
CoordinateType
Types of coordinates for position of points.
Definition: gridpp.h:120
vec test_vec_output()
Testing function for 1D output vector.
Definition: swig.cpp:45
vec quantile_mapping_curve(const vec &ref, const vec &fcst, vec &output_fcst, vec quantiles=vec())
Create quantile mapping calibration curve.
Definition: quantile_mapping.cpp:5
vec3 init_vec3(int Y, int X, int E, float value=MV)
Initialize a 3D float vector of size Y, X, E, with a given value.
Definition: util.cpp:458
vec mLats
Definition: gridpp.h:1676
Definition: gridpp.h:1933
bool point_in_rectangle(const Point &A, const Point &B, const Point &C, const Point &D, const Point &m)
Checks if a point is located inside a rectangle formed by 4 points.
Definition: util.cpp:542
float wetbulb(float temperature, float pressure, float relative_humidity)
Calculate wetbulb temperature from temperature, pressure, and relative humidity.
Definition: humidity.cpp:91
vec2 mask_threshold_downscale_consensus(const Grid &igrid, const Grid &ogrid, const vec3 &ivalues_true, const vec3 &ivalues_false, const vec3 &theshold_values, const vec2 &threshold, const ComparisonOperator &comparison_operator, const Statistic &statistic)
Masked ensemble downscaling and consensus.
Definition: mask_threshold_downscale_consensus.cpp:11
std::vector< double > dvec
1D double vector
Definition: gridpp.h:39
int num_missing_values(const vec2 &iArray)
Count the number of missing values in a vector.
Definition: util.cpp:218
float lon
Definition: gridpp.h:1562
std::vector< dvec > dvec2
2D double vector
Definition: gridpp.h:41
vec2 gridding(const Grid &grid, const Points &points, const vec &values, float radius, int min_num, Statistic statistic)
Aggregate points onto a grid.
Definition: gridding.cpp:6
Mean of values.
Definition: gridpp.h:91
Statistic
Statistical operations to reduce a vector to a scalar.
Definition: gridpp.h:88
int test_ivec_input(const ivec &input)
Testing function for 1D input vector.
Definition: swig.cpp:18
vec mLons
Definition: gridpp.h:1677
bool is_valid(float value)
Checks if a value is valid.
Definition: util.cpp:20
CoordinateType mType
Definition: gridpp.h:1681
vec2 optimal_interpolation(const Grid &bgrid, const vec2 &background, const Points &obs_points, const vec &obs, const vec &variance_ratios, const vec &background_at_points, const StructureFunction &structure, int max_points, bool allow_extrapolation=true)
Optimal interpolation for a deterministic gridded field.
Definition: oi.cpp:26
vec2 init_vec2(int Y, int X, float value=MV)
Initialize a 2D float vector of size Y, X, with a given value.
Definition: util.cpp:446
vec calc_even_quantiles(const vec &values, int num)
Get reasonably spaced quantile levels from a vector of values, ignoring duplicate values but includin...
Definition: util.cpp:263
vec2 neighbourhood_ens(const vec3 &input, int halfwidth, Statistic statistic)
Deprecated: Compute neighbourhood statistic on ensemble field.
Definition: neighbourhood.cpp:541
A quantile from values.
Definition: gridpp.h:93
float elev
Definition: gridpp.h:1563
float x
Definition: gridpp.h:1566
static const float pi
Mathematical constant pi.
Definition: gridpp.h:53
float apply_curve(float fcst, const vec &curve_ref, const vec &curve_fcst, Extrapolation policy_below, Extrapolation policy_above)
Apply arbitrary calibration curve to a single value.
Definition: curve.cpp:6
vec metric_optimizer_curve(const vec &ref, const vec &fcst, const vec &thresholds, Metric metric, vec &output_fcst)
Create calibration curve that optimizes a metric.
Definition: metric_optimizer.cpp:105
static const float default_min_rho
Definition: gridpp.h:1916
Nearest neighour downscaler.
Definition: gridpp.h:133
float interpolate(float x, const vec &iX, const vec &iY)
Piecewise linear interpolation If x is outside the range of iX, then the min/max value of iY is used...
Definition: util.cpp:351
Multiplicative.
Definition: gridpp.h:115
ivec2 init_ivec2(int Y, int X, int value)
Initialize a 2D integer vector of size Y, X, with a given value.
Definition: util.cpp:452
float qnh(float pressure, float altitude)
Diagnose QNH from pressure and altitude.
Definition: qnh.cpp:6
Standard deviation of values.
Definition: gridpp.h:94
static const float MV
Missing value indicator.
Definition: gridpp.h:49
Downscaler
Types of simple downscaling methods.
Definition: gridpp.h:132
vec get_neighbourhood_thresholds(const vec2 &input, int num_thresholds)
Calculate appropriate approximation thresholds for fast neighbourhood quantile.
Definition: neighbourhood.cpp:243
float calc_quantile(const vec &array, float quantile_level)
Compute a quantile from a 1D vector.
Definition: util.cpp:115
float pressure(float ielev, float oelev, float ipressure, float itemperature=288.15)
Calculate pressure at a new elevation.
Definition: pressure.cpp:5
float calc_score(float a, float b, float c, float d, Metric metric)
Compute the score for a 2x2 contingency table.
Definition: metric_optimizer.cpp:207
float wind_direction(float xwind, float ywind)
Diagnose wind direction from its components.
Definition: wind.cpp:20
X and Y.
Definition: gridpp.h:122
vec monotonize_curve(vec curve_ref, vec curve_fcst, vec &output_fcst)
Ensure calibration curve is monotonic, by removing points on the curve.
Definition: curve.cpp:129
vec gamma_inv(const vec &levels, const vec &shape, const vec &scale)
Extract quantiles from a gamma distribution.
Definition: distribution.cpp:5
vec3 test_vec3_output()
Testing function for 3D output vector.
Definition: swig.cpp:55
float calc_statistic(const vec &array, Statistic statistic)
Compute a statistic on a 1D vector.
Definition: util.cpp:23
float test_vec3_input(const vec3 &input)
Testing function for 3D input vector.
Definition: swig.cpp:34
vec2 optimal_interpolation_full(const Grid &bgrid, const vec2 &background, const vec2 &bvariance, const Points &obs_points, const vec &obs, const vec &obs_variance, const vec &background_at_points, const vec &bvariance_at_points, const StructureFunction &structure, int max_points, vec2 &analysis_variance, bool allow_extrapolation=true)
Optimal interpolation for a deterministic gridded field including analysis variance.
Definition: oi.cpp:326
void future_deprecation_warning(std::string function, std::string other="")
Writes an deprecation warning to standard out.
Definition: util.cpp:248
boost::geometry::index::rtree< value, boost::geometry::index::quadratic< 16 > > mTree
Definition: gridpp.h:1675
vec2 neighbourhood_quantile_ens(const vec3 &input, float quantile, int halfwidth)
Deprecated: Compute neighbourhood quantiles on ensemble field.
Definition: neighbourhood.cpp:545
Represents a single point in some coordinate system.
Definition: gridpp.h:1539
Mean of values.
Definition: gridpp.h:89
void warning(std::string string)
Writes a warning message to standard out.
Definition: util.cpp:231
int get_omp_threads()
Get the number of OpenMP threads currently set.
Definition: gridpp.cpp:63
float get_optimal_threshold(const vec &curve_ref, const vec &curve_fcst, float threshold, Metric metric)
Compute the optimal threshold to remap an input threshold to.
Definition: metric_optimizer.cpp:129
Lower or equal than, <=.
Definition: gridpp.h:140
Additive.
Definition: gridpp.h:116
vec2 fill_missing(const vec2 &values)
Fill in missing values based on nearby values.
Definition: fill.cpp:43
static const float lapse_rate
Constant Lapse Rate moist air standard atmosphere [K/m].
Definition: gridpp.h:57
vec mZ
Definition: gridpp.h:1680
static const float gravit
Gravitational acceleration [m/s^2].
Definition: gridpp.h:61
float * test_array(float *v, int n)
Special function whose presense is needed for SWIG.
Definition: swig.cpp:6
vec2 neighbourhood_search(const vec2 &array, const vec2 &search_array, int halfwidth, float search_target_min, float search_target_max, float search_delta, const ivec2 &apply_array=ivec2())
Find suitable value in neighbourhood that match a search criteria.
Definition: neighbourhood_search.cpp:7
vec2 downscaling(const Grid &igrid, const Grid &ogrid, const vec2 &ivalues, Downscaler downscaler)
Downscale a gridded field.
Definition: downscaling.cpp:21
Continue past the end-points using a slope of 0.
Definition: gridpp.h:83
Continue past the end-points using a slope of 1.
Definition: gridpp.h:80
Bilinear downscaler.
Definition: gridpp.h:134
std::vector< float > vec
1D float vector
Definition: gridpp.h:25
int get_debug_level()
Get the currently set level of debug messagess.
Definition: gridpp.cpp:74
bool compatible_size(const Grid &grid, const vec2 &v)
Check if the grid is the same size as the 2D vector.
Definition: util.cpp:398
vec3 full_gradient_debug(const Grid &igrid, const Grid &ogrid, const vec2 &ivalues, const vec2 &elev_gradient, const vec2 &laf_gradient=vec2(), Downscaler downscaler=Nearest)
Definition: gradient.cpp:276
vec2 doping_square(const Grid &igrid, const vec2 &background, const Points &points, const vec &observations, const ivec &halfwidths, float max_elev_diff=gridpp::MV)
Insert observations into gridded field using a square box.
Definition: doping.cpp:5
Hannsen-Kuiper skill score.
Definition: gridpp.h:106
Count of values.
Definition: gridpp.h:97
float lat
Definition: gridpp.h:1561
Equitable threat score.
Definition: gridpp.h:104
Sum of values.
Definition: gridpp.h:96
static const double radius_earth
Radius of the earth [m].
Definition: gridpp.h:55
Log transformation: output = log(input)
Definition: gridpp.h:2062
vec mY
Definition: gridpp.h:1679
vec2 simple_gradient(const Grid &igrid, const Grid &ogrid, const vec2 &ivalues, float elev_gradient, Downscaler downscaler=Nearest)
Elevation correction dowscaling grid to grid for a deterministic field.
Definition: simple_gradient.cpp:23
Box-Cox transformation.
Definition: gridpp.h:2070
Gamma transformation.
Definition: gridpp.h:2085
void error(std::string string)
Writes an error message to standard out.
Definition: util.cpp:235
Quantile mapping.
Definition: gridpp.h:114
vec2 local_distribution_correction(const Grid &bgrid, const vec2 &background, const Points &obs_points, const vec &obs, const vec &background_at_points, const StructureFunction &structure, float min_quantile, float max_quantile, int min_points=0)
Correction of a gridded field ensuring the distribution of values nearby match that of observations...
Definition: local_distribution_correction.cpp:18
KDTree(CoordinateType type=Geodetic)
Definition: gridpp.h:1577
std::vector< ivec > ivec2
2D integer vector
Definition: gridpp.h:33
std::vector< vec2 > vec3
3D float vector
Definition: gridpp.h:29