13 #include "oops/util/sqr.h"
20 const std::vector<float> &latitudes,
21 const std::vector<float> &longitudes,
22 const std::vector<int> &stationIds)
23 : options_(options), latitudes_(latitudes), longitudes_(longitudes), stationIds_(stationIds)
31 double &deltaLatInRad,
32 double &deltaLonInRad,
33 double &distanceInKm)
const {
37 if (deltaLonInRad > M_PI)
38 deltaLonInRad -= 2 * M_PI;
39 else if (deltaLonInRad < -M_PI)
40 deltaLonInRad += 2 * M_PI;
43 std::sqrt(util::sqr(deltaLatInRad) +
44 4.0 * util::sqr(std::sin(0.5 * deltaLonInRad)) *
52 double distanceInKm)
const {
54 if (distanceInKm < 10.0) {
62 sinBeta = std::min(1.0, std::max(-1.0, sinBeta));
63 double beta = std::asin(sinBeta);
Options controlling the operation of the MetOfficeBuddyCheck filter.
oops::Parameter< float > searchRadius
Maximum distance between two observations that may be classified as buddies, in km.
const std::vector< float > & latitudes_
MetOfficeBuddyPair createBuddyPair(int obsIdB, double deltaLatInRad, double deltaLonInRad, double distanceInKm) const
double maxLatDifferenceBetweenBuddiesInDeg_
void calcDeltaLatLonAndDistanceTo(int obsIdB, double &deltaLatInRad, double &deltaLonInRad, double &distanceInKm) const
const std::vector< float > & longitudes_
MetOfficeBuddyCollector(const MetOfficeBuddyCheckParameters &options, const std::vector< float > &latitudes, const std::vector< float > &longitudes, const std::vector< int > &stationIds)
Constructor.
real(kind_real), parameter, public alpha
static constexpr double deg2rad
static constexpr double rad2deg
static constexpr double mean_earth_rad
Properties of a pair of observations checked against each other during buddy check.