// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include "../inst/include/meteoland.h"
#include <Rcpp.h>
#include <string>
#include <set>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// dailyEquilibriumPET
NumericVector dailyEquilibriumPET(NumericVector Temp, NumericVector Rn);
static SEXP _meteoland_dailyEquilibriumPET_try(SEXP TempSEXP, SEXP RnSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Temp(TempSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Rn(RnSEXP);
    rcpp_result_gen = Rcpp::wrap(dailyEquilibriumPET(Temp, Rn));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_dailyEquilibriumPET(SEXP TempSEXP, SEXP RnSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_dailyEquilibriumPET_try(TempSEXP, RnSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// PenmanPET
double PenmanPET(double latrad, double elevation, double slorad, double asprad, int J, double Tmin, double Tmax, double RHmin, double RHmax, double R_s, double u, double z, double z0, double alpha, String windfun);
static SEXP _meteoland_PenmanPET_try(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP R_sSEXP, SEXP uSEXP, SEXP zSEXP, SEXP z0SEXP, SEXP alphaSEXP, SEXP windfunSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< int >::type J(JSEXP);
    Rcpp::traits::input_parameter< double >::type Tmin(TminSEXP);
    Rcpp::traits::input_parameter< double >::type Tmax(TmaxSEXP);
    Rcpp::traits::input_parameter< double >::type RHmin(RHminSEXP);
    Rcpp::traits::input_parameter< double >::type RHmax(RHmaxSEXP);
    Rcpp::traits::input_parameter< double >::type R_s(R_sSEXP);
    Rcpp::traits::input_parameter< double >::type u(uSEXP);
    Rcpp::traits::input_parameter< double >::type z(zSEXP);
    Rcpp::traits::input_parameter< double >::type z0(z0SEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< String >::type windfun(windfunSEXP);
    rcpp_result_gen = Rcpp::wrap(PenmanPET(latrad, elevation, slorad, asprad, J, Tmin, Tmax, RHmin, RHmax, R_s, u, z, z0, alpha, windfun));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_PenmanPET(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP R_sSEXP, SEXP uSEXP, SEXP zSEXP, SEXP z0SEXP, SEXP alphaSEXP, SEXP windfunSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_PenmanPET_try(latradSEXP, elevationSEXP, sloradSEXP, aspradSEXP, JSEXP, TminSEXP, TmaxSEXP, RHminSEXP, RHmaxSEXP, R_sSEXP, uSEXP, zSEXP, z0SEXP, alphaSEXP, windfunSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// PenmanMonteithPET
double PenmanMonteithPET(double rc, double elevation, double Tmin, double Tmax, double RHmin, double RHmax, double Rn, double u);
static SEXP _meteoland_PenmanMonteithPET_try(SEXP rcSEXP, SEXP elevationSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP RnSEXP, SEXP uSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type rc(rcSEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type Tmin(TminSEXP);
    Rcpp::traits::input_parameter< double >::type Tmax(TmaxSEXP);
    Rcpp::traits::input_parameter< double >::type RHmin(RHminSEXP);
    Rcpp::traits::input_parameter< double >::type RHmax(RHmaxSEXP);
    Rcpp::traits::input_parameter< double >::type Rn(RnSEXP);
    Rcpp::traits::input_parameter< double >::type u(uSEXP);
    rcpp_result_gen = Rcpp::wrap(PenmanMonteithPET(rc, elevation, Tmin, Tmax, RHmin, RHmax, Rn, u));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_PenmanMonteithPET(SEXP rcSEXP, SEXP elevationSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP RnSEXP, SEXP uSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_PenmanMonteithPET_try(rcSEXP, elevationSEXP, TminSEXP, TmaxSEXP, RHminSEXP, RHmaxSEXP, RnSEXP, uSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// PenmanPETPointSeries
NumericVector PenmanPETPointSeries(double latrad, double elevation, double slorad, double asprad, IntegerVector J, NumericVector Tmin, NumericVector Tmax, NumericVector RHmin, NumericVector RHmax, NumericVector R_s, NumericVector u, double z, double z0, double alpha, String windfun);
static SEXP _meteoland_PenmanPETPointSeries_try(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP R_sSEXP, SEXP uSEXP, SEXP zSEXP, SEXP z0SEXP, SEXP alphaSEXP, SEXP windfunSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type J(JSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Tmin(TminSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Tmax(TmaxSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type RHmin(RHminSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type RHmax(RHmaxSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type R_s(R_sSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type u(uSEXP);
    Rcpp::traits::input_parameter< double >::type z(zSEXP);
    Rcpp::traits::input_parameter< double >::type z0(z0SEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< String >::type windfun(windfunSEXP);
    rcpp_result_gen = Rcpp::wrap(PenmanPETPointSeries(latrad, elevation, slorad, asprad, J, Tmin, Tmax, RHmin, RHmax, R_s, u, z, z0, alpha, windfun));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_PenmanPETPointSeries(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP R_sSEXP, SEXP uSEXP, SEXP zSEXP, SEXP z0SEXP, SEXP alphaSEXP, SEXP windfunSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_PenmanPETPointSeries_try(latradSEXP, elevationSEXP, sloradSEXP, aspradSEXP, JSEXP, TminSEXP, TmaxSEXP, RHminSEXP, RHmaxSEXP, R_sSEXP, uSEXP, zSEXP, z0SEXP, alphaSEXP, windfunSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// PenmanMonteithPETPointSeries
NumericVector PenmanMonteithPETPointSeries(double rc, double elevation, NumericVector Tmin, NumericVector Tmax, NumericVector RHmin, NumericVector RHmax, NumericVector Rn, NumericVector u);
static SEXP _meteoland_PenmanMonteithPETPointSeries_try(SEXP rcSEXP, SEXP elevationSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP RnSEXP, SEXP uSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type rc(rcSEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Tmin(TminSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Tmax(TmaxSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type RHmin(RHminSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type RHmax(RHmaxSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Rn(RnSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type u(uSEXP);
    rcpp_result_gen = Rcpp::wrap(PenmanMonteithPETPointSeries(rc, elevation, Tmin, Tmax, RHmin, RHmax, Rn, u));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_PenmanMonteithPETPointSeries(SEXP rcSEXP, SEXP elevationSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP RnSEXP, SEXP uSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_PenmanMonteithPETPointSeries_try(rcSEXP, elevationSEXP, TminSEXP, TmaxSEXP, RHminSEXP, RHmaxSEXP, RnSEXP, uSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// PenmanPETPointsDay
NumericVector PenmanPETPointsDay(NumericVector latrad, NumericVector elevation, NumericVector slorad, NumericVector asprad, int J, NumericVector Tmin, NumericVector Tmax, NumericVector RHmin, NumericVector RHmax, NumericVector R_s, NumericVector u, double z, double z0, double alpha, String windfun);
static SEXP _meteoland_PenmanPETPointsDay_try(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP R_sSEXP, SEXP uSEXP, SEXP zSEXP, SEXP z0SEXP, SEXP alphaSEXP, SEXP windfunSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< NumericVector >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< int >::type J(JSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Tmin(TminSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Tmax(TmaxSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type RHmin(RHminSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type RHmax(RHmaxSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type R_s(R_sSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type u(uSEXP);
    Rcpp::traits::input_parameter< double >::type z(zSEXP);
    Rcpp::traits::input_parameter< double >::type z0(z0SEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< String >::type windfun(windfunSEXP);
    rcpp_result_gen = Rcpp::wrap(PenmanPETPointsDay(latrad, elevation, slorad, asprad, J, Tmin, Tmax, RHmin, RHmax, R_s, u, z, z0, alpha, windfun));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_PenmanPETPointsDay(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP, SEXP R_sSEXP, SEXP uSEXP, SEXP zSEXP, SEXP z0SEXP, SEXP alphaSEXP, SEXP windfunSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_PenmanPETPointsDay_try(latradSEXP, elevationSEXP, sloradSEXP, aspradSEXP, JSEXP, TminSEXP, TmaxSEXP, RHminSEXP, RHmaxSEXP, R_sSEXP, uSEXP, zSEXP, z0SEXP, alphaSEXP, windfunSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// temporalSmoothing
NumericMatrix temporalSmoothing(NumericMatrix input, int numDays, bool prec);
RcppExport SEXP _meteoland_temporalSmoothing(SEXP inputSEXP, SEXP numDaysSEXP, SEXP precSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type input(inputSEXP);
    Rcpp::traits::input_parameter< int >::type numDays(numDaysSEXP);
    Rcpp::traits::input_parameter< bool >::type prec(precSEXP);
    rcpp_result_gen = Rcpp::wrap(temporalSmoothing(input, numDays, prec));
    return rcpp_result_gen;
END_RCPP
}
// slope
NumericVector slope(NumericVector data, int nrows, int ncols, double cellWidth, double cellHeight);
RcppExport SEXP _meteoland_slope(SEXP dataSEXP, SEXP nrowsSEXP, SEXP ncolsSEXP, SEXP cellWidthSEXP, SEXP cellHeightSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type nrows(nrowsSEXP);
    Rcpp::traits::input_parameter< int >::type ncols(ncolsSEXP);
    Rcpp::traits::input_parameter< double >::type cellWidth(cellWidthSEXP);
    Rcpp::traits::input_parameter< double >::type cellHeight(cellHeightSEXP);
    rcpp_result_gen = Rcpp::wrap(slope(data, nrows, ncols, cellWidth, cellHeight));
    return rcpp_result_gen;
END_RCPP
}
// aspect
NumericVector aspect(NumericVector data, int nrows, int ncols, double cellWidth, double cellHeight);
RcppExport SEXP _meteoland_aspect(SEXP dataSEXP, SEXP nrowsSEXP, SEXP ncolsSEXP, SEXP cellWidthSEXP, SEXP cellHeightSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type nrows(nrowsSEXP);
    Rcpp::traits::input_parameter< int >::type ncols(ncolsSEXP);
    Rcpp::traits::input_parameter< double >::type cellWidth(cellWidthSEXP);
    Rcpp::traits::input_parameter< double >::type cellHeight(cellHeightSEXP);
    rcpp_result_gen = Rcpp::wrap(aspect(data, nrows, ncols, cellWidth, cellHeight));
    return rcpp_result_gen;
END_RCPP
}
// interpolatePrecipitationPoints
NumericVector interpolatePrecipitationPoints(NumericVector Xp, NumericVector Yp, NumericVector Zp, NumericVector X, NumericVector Y, NumericVector Z, NumericVector P, NumericVector Psmooth, double iniRp, double alpha_event, double alpha_amount, int N_event, int N_amount, int iterations, double popcrit, double fmax, bool debug);
RcppExport SEXP _meteoland_interpolatePrecipitationPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP ZpSEXP, SEXP XSEXP, SEXP YSEXP, SEXP ZSEXP, SEXP PSEXP, SEXP PsmoothSEXP, SEXP iniRpSEXP, SEXP alpha_eventSEXP, SEXP alpha_amountSEXP, SEXP N_eventSEXP, SEXP N_amountSEXP, SEXP iterationsSEXP, SEXP popcritSEXP, SEXP fmaxSEXP, SEXP debugSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Zp(ZpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Z(ZSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type P(PSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Psmooth(PsmoothSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha_event(alpha_eventSEXP);
    Rcpp::traits::input_parameter< double >::type alpha_amount(alpha_amountSEXP);
    Rcpp::traits::input_parameter< int >::type N_event(N_eventSEXP);
    Rcpp::traits::input_parameter< int >::type N_amount(N_amountSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< double >::type popcrit(popcritSEXP);
    Rcpp::traits::input_parameter< double >::type fmax(fmaxSEXP);
    Rcpp::traits::input_parameter< bool >::type debug(debugSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolatePrecipitationPoints(Xp, Yp, Zp, X, Y, Z, P, Psmooth, iniRp, alpha_event, alpha_amount, N_event, N_amount, iterations, popcrit, fmax, debug));
    return rcpp_result_gen;
END_RCPP
}
// interpolatePrecipitationSeriesPoints
NumericMatrix interpolatePrecipitationSeriesPoints(NumericVector Xp, NumericVector Yp, NumericVector Zp, NumericVector X, NumericVector Y, NumericVector Z, NumericMatrix P, NumericMatrix Psmooth, double iniRp, double alpha_event, double alpha_amount, int N_event, int N_amount, int iterations, double popcrit, double fmax, bool debug);
RcppExport SEXP _meteoland_interpolatePrecipitationSeriesPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP ZpSEXP, SEXP XSEXP, SEXP YSEXP, SEXP ZSEXP, SEXP PSEXP, SEXP PsmoothSEXP, SEXP iniRpSEXP, SEXP alpha_eventSEXP, SEXP alpha_amountSEXP, SEXP N_eventSEXP, SEXP N_amountSEXP, SEXP iterationsSEXP, SEXP popcritSEXP, SEXP fmaxSEXP, SEXP debugSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Zp(ZpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Z(ZSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type P(PSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type Psmooth(PsmoothSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha_event(alpha_eventSEXP);
    Rcpp::traits::input_parameter< double >::type alpha_amount(alpha_amountSEXP);
    Rcpp::traits::input_parameter< int >::type N_event(N_eventSEXP);
    Rcpp::traits::input_parameter< int >::type N_amount(N_amountSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< double >::type popcrit(popcritSEXP);
    Rcpp::traits::input_parameter< double >::type fmax(fmaxSEXP);
    Rcpp::traits::input_parameter< bool >::type debug(debugSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolatePrecipitationSeriesPoints(Xp, Yp, Zp, X, Y, Z, P, Psmooth, iniRp, alpha_event, alpha_amount, N_event, N_amount, iterations, popcrit, fmax, debug));
    return rcpp_result_gen;
END_RCPP
}
// interpolatePrecipitationEventSeriesPoints
NumericMatrix interpolatePrecipitationEventSeriesPoints(NumericVector Xp, NumericVector Yp, NumericVector Zp, NumericVector X, NumericVector Y, NumericVector Z, NumericMatrix Pevent, double iniRp, double alpha, int N, int iterations, double popcrit);
RcppExport SEXP _meteoland_interpolatePrecipitationEventSeriesPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP ZpSEXP, SEXP XSEXP, SEXP YSEXP, SEXP ZSEXP, SEXP PeventSEXP, SEXP iniRpSEXP, SEXP alphaSEXP, SEXP NSEXP, SEXP iterationsSEXP, SEXP popcritSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Zp(ZpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Z(ZSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type Pevent(PeventSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< double >::type popcrit(popcritSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolatePrecipitationEventSeriesPoints(Xp, Yp, Zp, X, Y, Z, Pevent, iniRp, alpha, N, iterations, popcrit));
    return rcpp_result_gen;
END_RCPP
}
// pseudoRainfall
NumericVector pseudoRainfall(NumericVector RainM, NumericVector daysMonthAll, double shape, double scale, int firstMonth);
RcppExport SEXP _meteoland_pseudoRainfall(SEXP RainMSEXP, SEXP daysMonthAllSEXP, SEXP shapeSEXP, SEXP scaleSEXP, SEXP firstMonthSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type RainM(RainMSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type daysMonthAll(daysMonthAllSEXP);
    Rcpp::traits::input_parameter< double >::type shape(shapeSEXP);
    Rcpp::traits::input_parameter< double >::type scale(scaleSEXP);
    Rcpp::traits::input_parameter< int >::type firstMonth(firstMonthSEXP);
    rcpp_result_gen = Rcpp::wrap(pseudoRainfall(RainM, daysMonthAll, shape, scale, firstMonth));
    return rcpp_result_gen;
END_RCPP
}
// julianDay
int julianDay(int year, int month, int day);
static SEXP _meteoland_julianDay_try(SEXP yearSEXP, SEXP monthSEXP, SEXP daySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< int >::type year(yearSEXP);
    Rcpp::traits::input_parameter< int >::type month(monthSEXP);
    Rcpp::traits::input_parameter< int >::type day(daySEXP);
    rcpp_result_gen = Rcpp::wrap(julianDay(year, month, day));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_julianDay(SEXP yearSEXP, SEXP monthSEXP, SEXP daySEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_julianDay_try(yearSEXP, monthSEXP, daySEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// dateStringToJulianDays
IntegerVector dateStringToJulianDays(CharacterVector dateStrings);
static SEXP _meteoland_dateStringToJulianDays_try(SEXP dateStringsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type dateStrings(dateStringsSEXP);
    rcpp_result_gen = Rcpp::wrap(dateStringToJulianDays(dateStrings));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_dateStringToJulianDays(SEXP dateStringsSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_dateStringToJulianDays_try(dateStringsSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// solarDeclination
double solarDeclination(int J);
static SEXP _meteoland_solarDeclination_try(SEXP JSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< int >::type J(JSEXP);
    rcpp_result_gen = Rcpp::wrap(solarDeclination(J));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_solarDeclination(SEXP JSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_solarDeclination_try(JSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// solarConstant
double solarConstant(int J);
static SEXP _meteoland_solarConstant_try(SEXP JSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< int >::type J(JSEXP);
    rcpp_result_gen = Rcpp::wrap(solarConstant(J));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_solarConstant(SEXP JSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_solarConstant_try(JSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// sunRiseSet
NumericVector sunRiseSet(double latrad, double slorad, double asprad, double delta);
static SEXP _meteoland_sunRiseSet_try(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    rcpp_result_gen = Rcpp::wrap(sunRiseSet(latrad, slorad, asprad, delta));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_sunRiseSet(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_sunRiseSet_try(latradSEXP, sloradSEXP, aspradSEXP, deltaSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// solarElevation
double solarElevation(double latrad, double delta, double hrad);
static SEXP _meteoland_solarElevation_try(SEXP latradSEXP, SEXP deltaSEXP, SEXP hradSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    Rcpp::traits::input_parameter< double >::type hrad(hradSEXP);
    rcpp_result_gen = Rcpp::wrap(solarElevation(latrad, delta, hrad));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_solarElevation(SEXP latradSEXP, SEXP deltaSEXP, SEXP hradSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_solarElevation_try(latradSEXP, deltaSEXP, hradSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// daylength
double daylength(double latrad, double slorad, double asprad, double delta);
static SEXP _meteoland_daylength_try(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    rcpp_result_gen = Rcpp::wrap(daylength(latrad, slorad, asprad, delta));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_daylength(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_daylength_try(latradSEXP, sloradSEXP, aspradSEXP, deltaSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// daylengthseconds
double daylengthseconds(double latrad, double slorad, double asprad, double delta);
static SEXP _meteoland_daylengthseconds_try(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    rcpp_result_gen = Rcpp::wrap(daylengthseconds(latrad, slorad, asprad, delta));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_daylengthseconds(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_daylengthseconds_try(latradSEXP, sloradSEXP, aspradSEXP, deltaSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// RpotDay
double RpotDay(double solarConstant, double latrad, double slorad, double asprad, double delta);
static SEXP _meteoland_RpotDay_try(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type solarConstant(solarConstantSEXP);
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    rcpp_result_gen = Rcpp::wrap(RpotDay(solarConstant, latrad, slorad, asprad, delta));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_RpotDay(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_RpotDay_try(solarConstantSEXP, latradSEXP, sloradSEXP, aspradSEXP, deltaSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// RDay
double RDay(double solarConstant, double latrad, double elevation, double slorad, double asprad, double delta, double diffTemp, double diffTempMonth, double vpa, double precipitation);
static SEXP _meteoland_RDay_try(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP diffTempSEXP, SEXP diffTempMonthSEXP, SEXP vpaSEXP, SEXP precipitationSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type solarConstant(solarConstantSEXP);
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    Rcpp::traits::input_parameter< double >::type diffTemp(diffTempSEXP);
    Rcpp::traits::input_parameter< double >::type diffTempMonth(diffTempMonthSEXP);
    Rcpp::traits::input_parameter< double >::type vpa(vpaSEXP);
    Rcpp::traits::input_parameter< double >::type precipitation(precipitationSEXP);
    rcpp_result_gen = Rcpp::wrap(RDay(solarConstant, latrad, elevation, slorad, asprad, delta, diffTemp, diffTempMonth, vpa, precipitation));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_RDay(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP diffTempSEXP, SEXP diffTempMonthSEXP, SEXP vpaSEXP, SEXP precipitationSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_RDay_try(solarConstantSEXP, latradSEXP, elevationSEXP, sloradSEXP, aspradSEXP, deltaSEXP, diffTempSEXP, diffTempMonthSEXP, vpaSEXP, precipitationSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// directDiffuseInstant
NumericVector directDiffuseInstant(double solarConstant, double latrad, double slorad, double asprad, double delta, double hrad, double R_s, bool clearday);
static SEXP _meteoland_directDiffuseInstant_try(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP hradSEXP, SEXP R_sSEXP, SEXP cleardaySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type solarConstant(solarConstantSEXP);
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    Rcpp::traits::input_parameter< double >::type hrad(hradSEXP);
    Rcpp::traits::input_parameter< double >::type R_s(R_sSEXP);
    Rcpp::traits::input_parameter< bool >::type clearday(cleardaySEXP);
    rcpp_result_gen = Rcpp::wrap(directDiffuseInstant(solarConstant, latrad, slorad, asprad, delta, hrad, R_s, clearday));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_directDiffuseInstant(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP hradSEXP, SEXP R_sSEXP, SEXP cleardaySEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_directDiffuseInstant_try(solarConstantSEXP, latradSEXP, sloradSEXP, aspradSEXP, deltaSEXP, hradSEXP, R_sSEXP, cleardaySEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// directDiffuseDay
DataFrame directDiffuseDay(double solarConstant, double latrad, double slorad, double asprad, double delta, double R_s, bool clearday, int nsteps);
static SEXP _meteoland_directDiffuseDay_try(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP R_sSEXP, SEXP cleardaySEXP, SEXP nstepsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type solarConstant(solarConstantSEXP);
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    Rcpp::traits::input_parameter< double >::type R_s(R_sSEXP);
    Rcpp::traits::input_parameter< bool >::type clearday(cleardaySEXP);
    Rcpp::traits::input_parameter< int >::type nsteps(nstepsSEXP);
    rcpp_result_gen = Rcpp::wrap(directDiffuseDay(solarConstant, latrad, slorad, asprad, delta, R_s, clearday, nsteps));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_directDiffuseDay(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP R_sSEXP, SEXP cleardaySEXP, SEXP nstepsSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_directDiffuseDay_try(solarConstantSEXP, latradSEXP, sloradSEXP, aspradSEXP, deltaSEXP, R_sSEXP, cleardaySEXP, nstepsSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// skyLongwaveRadiation
double skyLongwaveRadiation(double Tair, double vpa, double c);
static SEXP _meteoland_skyLongwaveRadiation_try(SEXP TairSEXP, SEXP vpaSEXP, SEXP cSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type Tair(TairSEXP);
    Rcpp::traits::input_parameter< double >::type vpa(vpaSEXP);
    Rcpp::traits::input_parameter< double >::type c(cSEXP);
    rcpp_result_gen = Rcpp::wrap(skyLongwaveRadiation(Tair, vpa, c));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_skyLongwaveRadiation(SEXP TairSEXP, SEXP vpaSEXP, SEXP cSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_skyLongwaveRadiation_try(TairSEXP, vpaSEXP, cSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// outgoingLongwaveRadiation
double outgoingLongwaveRadiation(double solarConstant, double latrad, double elevation, double slorad, double asprad, double delta, double vpa, double tmin, double tmax, double R_s);
static SEXP _meteoland_outgoingLongwaveRadiation_try(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP vpaSEXP, SEXP tminSEXP, SEXP tmaxSEXP, SEXP R_sSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type solarConstant(solarConstantSEXP);
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    Rcpp::traits::input_parameter< double >::type vpa(vpaSEXP);
    Rcpp::traits::input_parameter< double >::type tmin(tminSEXP);
    Rcpp::traits::input_parameter< double >::type tmax(tmaxSEXP);
    Rcpp::traits::input_parameter< double >::type R_s(R_sSEXP);
    rcpp_result_gen = Rcpp::wrap(outgoingLongwaveRadiation(solarConstant, latrad, elevation, slorad, asprad, delta, vpa, tmin, tmax, R_s));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_outgoingLongwaveRadiation(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP vpaSEXP, SEXP tminSEXP, SEXP tmaxSEXP, SEXP R_sSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_outgoingLongwaveRadiation_try(solarConstantSEXP, latradSEXP, elevationSEXP, sloradSEXP, aspradSEXP, deltaSEXP, vpaSEXP, tminSEXP, tmaxSEXP, R_sSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// netRadiation
double netRadiation(double solarConstant, double latrad, double elevation, double slorad, double asprad, double delta, double vpa, double tmin, double tmax, double R_s, double alpha);
static SEXP _meteoland_netRadiation_try(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP vpaSEXP, SEXP tminSEXP, SEXP tmaxSEXP, SEXP R_sSEXP, SEXP alphaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type solarConstant(solarConstantSEXP);
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< double >::type delta(deltaSEXP);
    Rcpp::traits::input_parameter< double >::type vpa(vpaSEXP);
    Rcpp::traits::input_parameter< double >::type tmin(tminSEXP);
    Rcpp::traits::input_parameter< double >::type tmax(tmaxSEXP);
    Rcpp::traits::input_parameter< double >::type R_s(R_sSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    rcpp_result_gen = Rcpp::wrap(netRadiation(solarConstant, latrad, elevation, slorad, asprad, delta, vpa, tmin, tmax, R_s, alpha));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_netRadiation(SEXP solarConstantSEXP, SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP deltaSEXP, SEXP vpaSEXP, SEXP tminSEXP, SEXP tmaxSEXP, SEXP R_sSEXP, SEXP alphaSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_netRadiation_try(solarConstantSEXP, latradSEXP, elevationSEXP, sloradSEXP, aspradSEXP, deltaSEXP, vpaSEXP, tminSEXP, tmaxSEXP, R_sSEXP, alphaSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// potentialRadiationSeries
NumericVector potentialRadiationSeries(double latrad, double slorad, double asprad, NumericVector J);
static SEXP _meteoland_potentialRadiationSeries_try(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type J(JSEXP);
    rcpp_result_gen = Rcpp::wrap(potentialRadiationSeries(latrad, slorad, asprad, J));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_potentialRadiationSeries(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_potentialRadiationSeries_try(latradSEXP, sloradSEXP, aspradSEXP, JSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// potentialRadiationPoints
NumericVector potentialRadiationPoints(double latrad, NumericVector slorad, NumericVector asprad, int J);
static SEXP _meteoland_potentialRadiationPoints_try(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< int >::type J(JSEXP);
    rcpp_result_gen = Rcpp::wrap(potentialRadiationPoints(latrad, slorad, asprad, J));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_potentialRadiationPoints(SEXP latradSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_potentialRadiationPoints_try(latradSEXP, sloradSEXP, aspradSEXP, JSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// radiationSeries
NumericVector radiationSeries(double latrad, double elevation, double slorad, double asprad, NumericVector J, NumericVector diffTemp, NumericVector diffTempMonth, NumericVector VP, NumericVector P);
static SEXP _meteoland_radiationSeries_try(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP diffTempSEXP, SEXP diffTempMonthSEXP, SEXP VPSEXP, SEXP PSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< double >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type J(JSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type diffTemp(diffTempSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type diffTempMonth(diffTempMonthSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type VP(VPSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type P(PSEXP);
    rcpp_result_gen = Rcpp::wrap(radiationSeries(latrad, elevation, slorad, asprad, J, diffTemp, diffTempMonth, VP, P));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_radiationSeries(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP diffTempSEXP, SEXP diffTempMonthSEXP, SEXP VPSEXP, SEXP PSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_radiationSeries_try(latradSEXP, elevationSEXP, sloradSEXP, aspradSEXP, JSEXP, diffTempSEXP, diffTempMonthSEXP, VPSEXP, PSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// radiationPoints
NumericVector radiationPoints(NumericVector latrad, NumericVector elevation, NumericVector slorad, NumericVector asprad, int J, NumericVector diffTemp, NumericVector diffTempMonth, NumericVector VP, NumericVector P);
static SEXP _meteoland_radiationPoints_try(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP diffTempSEXP, SEXP diffTempMonthSEXP, SEXP VPSEXP, SEXP PSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< NumericVector >::type latrad(latradSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type slorad(sloradSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type asprad(aspradSEXP);
    Rcpp::traits::input_parameter< int >::type J(JSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type diffTemp(diffTempSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type diffTempMonth(diffTempMonthSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type VP(VPSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type P(PSEXP);
    rcpp_result_gen = Rcpp::wrap(radiationPoints(latrad, elevation, slorad, asprad, J, diffTemp, diffTempMonth, VP, P));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_radiationPoints(SEXP latradSEXP, SEXP elevationSEXP, SEXP sloradSEXP, SEXP aspradSEXP, SEXP JSEXP, SEXP diffTempSEXP, SEXP diffTempMonthSEXP, SEXP VPSEXP, SEXP PSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_radiationPoints_try(latradSEXP, elevationSEXP, sloradSEXP, aspradSEXP, JSEXP, diffTempSEXP, diffTempMonthSEXP, VPSEXP, PSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// meteo
DataFrame meteo(DataFrame MeteoMonth, NumericVector landscapeRainfall, double ERconv, double ERsyn, double shape, double scale, double albedo, int firstMonth, bool cyclic);
RcppExport SEXP _meteoland_meteo(SEXP MeteoMonthSEXP, SEXP landscapeRainfallSEXP, SEXP ERconvSEXP, SEXP ERsynSEXP, SEXP shapeSEXP, SEXP scaleSEXP, SEXP albedoSEXP, SEXP firstMonthSEXP, SEXP cyclicSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< DataFrame >::type MeteoMonth(MeteoMonthSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type landscapeRainfall(landscapeRainfallSEXP);
    Rcpp::traits::input_parameter< double >::type ERconv(ERconvSEXP);
    Rcpp::traits::input_parameter< double >::type ERsyn(ERsynSEXP);
    Rcpp::traits::input_parameter< double >::type shape(shapeSEXP);
    Rcpp::traits::input_parameter< double >::type scale(scaleSEXP);
    Rcpp::traits::input_parameter< double >::type albedo(albedoSEXP);
    Rcpp::traits::input_parameter< int >::type firstMonth(firstMonthSEXP);
    Rcpp::traits::input_parameter< bool >::type cyclic(cyclicSEXP);
    rcpp_result_gen = Rcpp::wrap(meteo(MeteoMonth, landscapeRainfall, ERconv, ERsyn, shape, scale, albedo, firstMonth, cyclic));
    return rcpp_result_gen;
END_RCPP
}
// vapourPressureFromRH
NumericMatrix vapourPressureFromRH(NumericMatrix T, NumericMatrix RH);
RcppExport SEXP _meteoland_vapourPressureFromRH(SEXP TSEXP, SEXP RHSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type T(TSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type RH(RHSEXP);
    rcpp_result_gen = Rcpp::wrap(vapourPressureFromRH(T, RH));
    return rcpp_result_gen;
END_RCPP
}
// dewpointTemperatureFromRH
NumericMatrix dewpointTemperatureFromRH(NumericMatrix T, NumericMatrix RH);
RcppExport SEXP _meteoland_dewpointTemperatureFromRH(SEXP TSEXP, SEXP RHSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type T(TSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type RH(RHSEXP);
    rcpp_result_gen = Rcpp::wrap(dewpointTemperatureFromRH(T, RH));
    return rcpp_result_gen;
END_RCPP
}
// temp2SVP
NumericVector temp2SVP(NumericVector TD);
RcppExport SEXP _meteoland_temp2SVP(SEXP TDSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type TD(TDSEXP);
    rcpp_result_gen = Rcpp::wrap(temp2SVP(TD));
    return rcpp_result_gen;
END_RCPP
}
// relativeHumidityFromMinMaxTemp
NumericVector relativeHumidityFromMinMaxTemp(NumericVector Tmin, NumericVector Tmax);
RcppExport SEXP _meteoland_relativeHumidityFromMinMaxTemp(SEXP TminSEXP, SEXP TmaxSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Tmin(TminSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Tmax(TmaxSEXP);
    rcpp_result_gen = Rcpp::wrap(relativeHumidityFromMinMaxTemp(Tmin, Tmax));
    return rcpp_result_gen;
END_RCPP
}
// relativeHumidityFromDewpointTemp
NumericVector relativeHumidityFromDewpointTemp(NumericVector T, NumericVector TD);
RcppExport SEXP _meteoland_relativeHumidityFromDewpointTemp(SEXP TSEXP, SEXP TDSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type T(TSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type TD(TDSEXP);
    rcpp_result_gen = Rcpp::wrap(relativeHumidityFromDewpointTemp(T, TD));
    return rcpp_result_gen;
END_RCPP
}
// interpolateTdewPoints
NumericVector interpolateTdewPoints(NumericVector Xp, NumericVector Yp, NumericVector Zp, NumericVector X, NumericVector Y, NumericVector Z, NumericVector T, double iniRp, double alpha, int N, int iterations, bool debug);
RcppExport SEXP _meteoland_interpolateTdewPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP ZpSEXP, SEXP XSEXP, SEXP YSEXP, SEXP ZSEXP, SEXP TSEXP, SEXP iniRpSEXP, SEXP alphaSEXP, SEXP NSEXP, SEXP iterationsSEXP, SEXP debugSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Zp(ZpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Z(ZSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type T(TSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< bool >::type debug(debugSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolateTdewPoints(Xp, Yp, Zp, X, Y, Z, T, iniRp, alpha, N, iterations, debug));
    return rcpp_result_gen;
END_RCPP
}
// interpolateTdewSeriesPoints
NumericMatrix interpolateTdewSeriesPoints(NumericVector Xp, NumericVector Yp, NumericVector Zp, NumericVector X, NumericVector Y, NumericVector Z, NumericMatrix T, double iniRp, double alpha, int N, int iterations, bool debug);
RcppExport SEXP _meteoland_interpolateTdewSeriesPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP ZpSEXP, SEXP XSEXP, SEXP YSEXP, SEXP ZSEXP, SEXP TSEXP, SEXP iniRpSEXP, SEXP alphaSEXP, SEXP NSEXP, SEXP iterationsSEXP, SEXP debugSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Zp(ZpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Z(ZSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type T(TSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< bool >::type debug(debugSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolateTdewSeriesPoints(Xp, Yp, Zp, X, Y, Z, T, iniRp, alpha, N, iterations, debug));
    return rcpp_result_gen;
END_RCPP
}
// interpolateTemperaturePoints
NumericVector interpolateTemperaturePoints(NumericVector Xp, NumericVector Yp, NumericVector Zp, NumericVector X, NumericVector Y, NumericVector Z, NumericVector T, double iniRp, double alpha, int N, int iterations, bool debug);
RcppExport SEXP _meteoland_interpolateTemperaturePoints(SEXP XpSEXP, SEXP YpSEXP, SEXP ZpSEXP, SEXP XSEXP, SEXP YSEXP, SEXP ZSEXP, SEXP TSEXP, SEXP iniRpSEXP, SEXP alphaSEXP, SEXP NSEXP, SEXP iterationsSEXP, SEXP debugSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Zp(ZpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Z(ZSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type T(TSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< bool >::type debug(debugSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolateTemperaturePoints(Xp, Yp, Zp, X, Y, Z, T, iniRp, alpha, N, iterations, debug));
    return rcpp_result_gen;
END_RCPP
}
// interpolateTemperatureSeriesPoints
NumericMatrix interpolateTemperatureSeriesPoints(NumericVector Xp, NumericVector Yp, NumericVector Zp, NumericVector X, NumericVector Y, NumericVector Z, NumericMatrix T, double iniRp, double alpha, int N, int iterations, bool debug);
RcppExport SEXP _meteoland_interpolateTemperatureSeriesPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP ZpSEXP, SEXP XSEXP, SEXP YSEXP, SEXP ZSEXP, SEXP TSEXP, SEXP iniRpSEXP, SEXP alphaSEXP, SEXP NSEXP, SEXP iterationsSEXP, SEXP debugSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Zp(ZpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Z(ZSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type T(TSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< bool >::type debug(debugSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolateTemperatureSeriesPoints(Xp, Yp, Zp, X, Y, Z, T, iniRp, alpha, N, iterations, debug));
    return rcpp_result_gen;
END_RCPP
}
// saturationVapourPressure
double saturationVapourPressure(double temperature);
static SEXP _meteoland_saturationVapourPressure_try(SEXP temperatureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type temperature(temperatureSEXP);
    rcpp_result_gen = Rcpp::wrap(saturationVapourPressure(temperature));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_saturationVapourPressure(SEXP temperatureSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_saturationVapourPressure_try(temperatureSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// averageDailyVapourPressure
double averageDailyVapourPressure(double Tmin, double Tmax, double RHmin, double RHmax);
static SEXP _meteoland_averageDailyVapourPressure_try(SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type Tmin(TminSEXP);
    Rcpp::traits::input_parameter< double >::type Tmax(TmaxSEXP);
    Rcpp::traits::input_parameter< double >::type RHmin(RHminSEXP);
    Rcpp::traits::input_parameter< double >::type RHmax(RHmaxSEXP);
    rcpp_result_gen = Rcpp::wrap(averageDailyVapourPressure(Tmin, Tmax, RHmin, RHmax));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_averageDailyVapourPressure(SEXP TminSEXP, SEXP TmaxSEXP, SEXP RHminSEXP, SEXP RHmaxSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_averageDailyVapourPressure_try(TminSEXP, TmaxSEXP, RHminSEXP, RHmaxSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// atmosphericPressure
double atmosphericPressure(double elevation);
static SEXP _meteoland_atmosphericPressure_try(SEXP elevationSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    rcpp_result_gen = Rcpp::wrap(atmosphericPressure(elevation));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_atmosphericPressure(SEXP elevationSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_atmosphericPressure_try(elevationSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// airDensity
double airDensity(double temperature, double Patm);
static SEXP _meteoland_airDensity_try(SEXP temperatureSEXP, SEXP PatmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type temperature(temperatureSEXP);
    Rcpp::traits::input_parameter< double >::type Patm(PatmSEXP);
    rcpp_result_gen = Rcpp::wrap(airDensity(temperature, Patm));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_airDensity(SEXP temperatureSEXP, SEXP PatmSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_airDensity_try(temperatureSEXP, PatmSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// averageDaylightTemperature
double averageDaylightTemperature(double Tmin, double Tmax);
static SEXP _meteoland_averageDaylightTemperature_try(SEXP TminSEXP, SEXP TmaxSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type Tmin(TminSEXP);
    Rcpp::traits::input_parameter< double >::type Tmax(TmaxSEXP);
    rcpp_result_gen = Rcpp::wrap(averageDaylightTemperature(Tmin, Tmax));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_averageDaylightTemperature(SEXP TminSEXP, SEXP TmaxSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_averageDaylightTemperature_try(TminSEXP, TmaxSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// latentHeatVaporisation
double latentHeatVaporisation(double temperature);
static SEXP _meteoland_latentHeatVaporisation_try(SEXP temperatureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type temperature(temperatureSEXP);
    rcpp_result_gen = Rcpp::wrap(latentHeatVaporisation(temperature));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_latentHeatVaporisation(SEXP temperatureSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_latentHeatVaporisation_try(temperatureSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// latentHeatVaporisationMol
double latentHeatVaporisationMol(double temperature);
static SEXP _meteoland_latentHeatVaporisationMol_try(SEXP temperatureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type temperature(temperatureSEXP);
    rcpp_result_gen = Rcpp::wrap(latentHeatVaporisationMol(temperature));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_latentHeatVaporisationMol(SEXP temperatureSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_latentHeatVaporisationMol_try(temperatureSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// psychrometricConstant
double psychrometricConstant(double temperature, double Patm);
static SEXP _meteoland_psychrometricConstant_try(SEXP temperatureSEXP, SEXP PatmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type temperature(temperatureSEXP);
    Rcpp::traits::input_parameter< double >::type Patm(PatmSEXP);
    rcpp_result_gen = Rcpp::wrap(psychrometricConstant(temperature, Patm));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_psychrometricConstant(SEXP temperatureSEXP, SEXP PatmSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_psychrometricConstant_try(temperatureSEXP, PatmSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// saturationVaporPressureCurveSlope
double saturationVaporPressureCurveSlope(double temperature);
static SEXP _meteoland_saturationVaporPressureCurveSlope_try(SEXP temperatureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< double >::type temperature(temperatureSEXP);
    rcpp_result_gen = Rcpp::wrap(saturationVaporPressureCurveSlope(temperature));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _meteoland_saturationVaporPressureCurveSlope(SEXP temperatureSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_meteoland_saturationVaporPressureCurveSlope_try(temperatureSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// getWindFieldIndexAndFactor
List getWindFieldIndexAndFactor(NumericMatrix windSpeed, NumericMatrix windDirection, NumericMatrix wfSpeed, NumericMatrix wfDirection);
RcppExport SEXP _meteoland_getWindFieldIndexAndFactor(SEXP windSpeedSEXP, SEXP windDirectionSEXP, SEXP wfSpeedSEXP, SEXP wfDirectionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type windSpeed(windSpeedSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type windDirection(windDirectionSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type wfSpeed(wfSpeedSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type wfDirection(wfDirectionSEXP);
    rcpp_result_gen = Rcpp::wrap(getWindFieldIndexAndFactor(windSpeed, windDirection, wfSpeed, wfDirection));
    return rcpp_result_gen;
END_RCPP
}
// interpolateWindStationPoints
NumericMatrix interpolateWindStationPoints(NumericVector Xp, NumericVector Yp, NumericVector WS, NumericVector WD, NumericVector X, NumericVector Y, double iniRp, double alpha, int N, int iterations, double directionsAvailable);
RcppExport SEXP _meteoland_interpolateWindStationPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP WSSEXP, SEXP WDSEXP, SEXP XSEXP, SEXP YSEXP, SEXP iniRpSEXP, SEXP alphaSEXP, SEXP NSEXP, SEXP iterationsSEXP, SEXP directionsAvailableSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type WS(WSSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type WD(WDSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< double >::type directionsAvailable(directionsAvailableSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolateWindStationPoints(Xp, Yp, WS, WD, X, Y, iniRp, alpha, N, iterations, directionsAvailable));
    return rcpp_result_gen;
END_RCPP
}
// interpolateWindFieldSeriesPoints
List interpolateWindFieldSeriesPoints(NumericVector Xp, NumericVector Yp, NumericMatrix WS, NumericMatrix WD, NumericVector X, NumericVector Y, IntegerMatrix I, NumericMatrix F, double iniRp, double alpha, int N, int iterations);
RcppExport SEXP _meteoland_interpolateWindFieldSeriesPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP WSSEXP, SEXP WDSEXP, SEXP XSEXP, SEXP YSEXP, SEXP ISEXP, SEXP FSEXP, SEXP iniRpSEXP, SEXP alphaSEXP, SEXP NSEXP, SEXP iterationsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type WS(WSSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type WD(WDSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< IntegerMatrix >::type I(ISEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type F(FSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolateWindFieldSeriesPoints(Xp, Yp, WS, WD, X, Y, I, F, iniRp, alpha, N, iterations));
    return rcpp_result_gen;
END_RCPP
}
// interpolateWindStationSeriesPoints
List interpolateWindStationSeriesPoints(NumericVector Xp, NumericVector Yp, NumericMatrix WS, NumericMatrix WD, NumericVector X, NumericVector Y, double iniRp, double alpha, int N, int iterations);
RcppExport SEXP _meteoland_interpolateWindStationSeriesPoints(SEXP XpSEXP, SEXP YpSEXP, SEXP WSSEXP, SEXP WDSEXP, SEXP XSEXP, SEXP YSEXP, SEXP iniRpSEXP, SEXP alphaSEXP, SEXP NSEXP, SEXP iterationsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type Xp(XpSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Yp(YpSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type WS(WSSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type WD(WDSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Y(YSEXP);
    Rcpp::traits::input_parameter< double >::type iniRp(iniRpSEXP);
    Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    Rcpp::traits::input_parameter< int >::type iterations(iterationsSEXP);
    rcpp_result_gen = Rcpp::wrap(interpolateWindStationSeriesPoints(Xp, Yp, WS, WD, X, Y, iniRp, alpha, N, iterations));
    return rcpp_result_gen;
END_RCPP
}

// validate (ensure exported C++ functions exist before calling them)
static int _meteoland_RcppExport_validate(const char* sig) { 
    static std::set<std::string> signatures;
    if (signatures.empty()) {
        signatures.insert("NumericVector(*.dailyEquilibriumPET)(NumericVector,NumericVector)");
        signatures.insert("double(*penman)(double,double,double,double,int,double,double,double,double,double,double,double,double,double,String)");
        signatures.insert("double(*penmanmonteith)(double,double,double,double,double,double,double,double)");
        signatures.insert("NumericVector(*.penmanpoint)(double,double,double,double,IntegerVector,NumericVector,NumericVector,NumericVector,NumericVector,NumericVector,NumericVector,double,double,double,String)");
        signatures.insert("NumericVector(*.penmanmonteithpoint)(double,double,NumericVector,NumericVector,NumericVector,NumericVector,NumericVector,NumericVector)");
        signatures.insert("NumericVector(*.PenmanPETPointsDay)(NumericVector,NumericVector,NumericVector,NumericVector,int,NumericVector,NumericVector,NumericVector,NumericVector,NumericVector,NumericVector,double,double,double,String)");
        signatures.insert("int(*radiation_julianDay)(int,int,int)");
        signatures.insert("IntegerVector(*radiation_dateStringToJulianDays)(CharacterVector)");
        signatures.insert("double(*radiation_solarDeclination)(int)");
        signatures.insert("double(*radiation_solarConstant)(int)");
        signatures.insert("NumericVector(*radiation_sunRiseSet)(double,double,double,double)");
        signatures.insert("double(*radiation_solarElevation)(double,double,double)");
        signatures.insert("double(*radiation_daylength)(double,double,double,double)");
        signatures.insert("double(*radiation_daylengthseconds)(double,double,double,double)");
        signatures.insert("double(*radiation_potentialRadiation)(double,double,double,double,double)");
        signatures.insert("double(*radiation_solarRadiation)(double,double,double,double,double,double,double,double,double,double)");
        signatures.insert("NumericVector(*radiation_directDiffuseInstant)(double,double,double,double,double,double,double,bool)");
        signatures.insert("DataFrame(*radiation_directDiffuseDay)(double,double,double,double,double,double,bool,int)");
        signatures.insert("double(*radiation_skyLongwaveRadiation)(double,double,double)");
        signatures.insert("double(*radiation_outgoingLongwaveRadiation)(double,double,double,double,double,double,double,double,double,double)");
        signatures.insert("double(*radiation_netRadiation)(double,double,double,double,double,double,double,double,double,double,double)");
        signatures.insert("NumericVector(*.potentialRadiationSeries)(double,double,double,NumericVector)");
        signatures.insert("NumericVector(*.potentialRadiationPoints)(double,NumericVector,NumericVector,int)");
        signatures.insert("NumericVector(*.radiationSeries)(double,double,double,double,NumericVector,NumericVector,NumericVector,NumericVector,NumericVector)");
        signatures.insert("NumericVector(*.radiationPoints)(NumericVector,NumericVector,NumericVector,NumericVector,int,NumericVector,NumericVector,NumericVector,NumericVector)");
        signatures.insert("double(*utils_saturationVP)(double)");
        signatures.insert("double(*utils_averageDailyVP)(double,double,double,double)");
        signatures.insert("double(*utils_atmosphericPressure)(double)");
        signatures.insert("double(*utils_airDensity)(double,double)");
        signatures.insert("double(*utils_averageDaylightTemperature)(double,double)");
        signatures.insert("double(*utils_latentHeatVaporisation)(double)");
        signatures.insert("double(*utils_latentHeatVaporisationMol)(double)");
        signatures.insert("double(*utils_psychrometricConstant)(double,double)");
        signatures.insert("double(*utils_saturationVaporPressureCurveSlope)(double)");
    }
    return signatures.find(sig) != signatures.end();
}

// registerCCallable (register entry points for exported C++ functions)
RcppExport SEXP _meteoland_RcppExport_registerCCallable() { 
    R_RegisterCCallable("meteoland", "_meteoland_.dailyEquilibriumPET", (DL_FUNC)_meteoland_dailyEquilibriumPET_try);
    R_RegisterCCallable("meteoland", "_meteoland_penman", (DL_FUNC)_meteoland_PenmanPET_try);
    R_RegisterCCallable("meteoland", "_meteoland_penmanmonteith", (DL_FUNC)_meteoland_PenmanMonteithPET_try);
    R_RegisterCCallable("meteoland", "_meteoland_.penmanpoint", (DL_FUNC)_meteoland_PenmanPETPointSeries_try);
    R_RegisterCCallable("meteoland", "_meteoland_.penmanmonteithpoint", (DL_FUNC)_meteoland_PenmanMonteithPETPointSeries_try);
    R_RegisterCCallable("meteoland", "_meteoland_.PenmanPETPointsDay", (DL_FUNC)_meteoland_PenmanPETPointsDay_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_julianDay", (DL_FUNC)_meteoland_julianDay_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_dateStringToJulianDays", (DL_FUNC)_meteoland_dateStringToJulianDays_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_solarDeclination", (DL_FUNC)_meteoland_solarDeclination_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_solarConstant", (DL_FUNC)_meteoland_solarConstant_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_sunRiseSet", (DL_FUNC)_meteoland_sunRiseSet_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_solarElevation", (DL_FUNC)_meteoland_solarElevation_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_daylength", (DL_FUNC)_meteoland_daylength_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_daylengthseconds", (DL_FUNC)_meteoland_daylengthseconds_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_potentialRadiation", (DL_FUNC)_meteoland_RpotDay_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_solarRadiation", (DL_FUNC)_meteoland_RDay_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_directDiffuseInstant", (DL_FUNC)_meteoland_directDiffuseInstant_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_directDiffuseDay", (DL_FUNC)_meteoland_directDiffuseDay_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_skyLongwaveRadiation", (DL_FUNC)_meteoland_skyLongwaveRadiation_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_outgoingLongwaveRadiation", (DL_FUNC)_meteoland_outgoingLongwaveRadiation_try);
    R_RegisterCCallable("meteoland", "_meteoland_radiation_netRadiation", (DL_FUNC)_meteoland_netRadiation_try);
    R_RegisterCCallable("meteoland", "_meteoland_.potentialRadiationSeries", (DL_FUNC)_meteoland_potentialRadiationSeries_try);
    R_RegisterCCallable("meteoland", "_meteoland_.potentialRadiationPoints", (DL_FUNC)_meteoland_potentialRadiationPoints_try);
    R_RegisterCCallable("meteoland", "_meteoland_.radiationSeries", (DL_FUNC)_meteoland_radiationSeries_try);
    R_RegisterCCallable("meteoland", "_meteoland_.radiationPoints", (DL_FUNC)_meteoland_radiationPoints_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_saturationVP", (DL_FUNC)_meteoland_saturationVapourPressure_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_averageDailyVP", (DL_FUNC)_meteoland_averageDailyVapourPressure_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_atmosphericPressure", (DL_FUNC)_meteoland_atmosphericPressure_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_airDensity", (DL_FUNC)_meteoland_airDensity_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_averageDaylightTemperature", (DL_FUNC)_meteoland_averageDaylightTemperature_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_latentHeatVaporisation", (DL_FUNC)_meteoland_latentHeatVaporisation_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_latentHeatVaporisationMol", (DL_FUNC)_meteoland_latentHeatVaporisationMol_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_psychrometricConstant", (DL_FUNC)_meteoland_psychrometricConstant_try);
    R_RegisterCCallable("meteoland", "_meteoland_utils_saturationVaporPressureCurveSlope", (DL_FUNC)_meteoland_saturationVaporPressureCurveSlope_try);
    R_RegisterCCallable("meteoland", "_meteoland_RcppExport_validate", (DL_FUNC)_meteoland_RcppExport_validate);
    return R_NilValue;
}

static const R_CallMethodDef CallEntries[] = {
    {"_meteoland_dailyEquilibriumPET", (DL_FUNC) &_meteoland_dailyEquilibriumPET, 2},
    {"_meteoland_PenmanPET", (DL_FUNC) &_meteoland_PenmanPET, 15},
    {"_meteoland_PenmanMonteithPET", (DL_FUNC) &_meteoland_PenmanMonteithPET, 8},
    {"_meteoland_PenmanPETPointSeries", (DL_FUNC) &_meteoland_PenmanPETPointSeries, 15},
    {"_meteoland_PenmanMonteithPETPointSeries", (DL_FUNC) &_meteoland_PenmanMonteithPETPointSeries, 8},
    {"_meteoland_PenmanPETPointsDay", (DL_FUNC) &_meteoland_PenmanPETPointsDay, 15},
    {"_meteoland_temporalSmoothing", (DL_FUNC) &_meteoland_temporalSmoothing, 3},
    {"_meteoland_slope", (DL_FUNC) &_meteoland_slope, 5},
    {"_meteoland_aspect", (DL_FUNC) &_meteoland_aspect, 5},
    {"_meteoland_interpolatePrecipitationPoints", (DL_FUNC) &_meteoland_interpolatePrecipitationPoints, 17},
    {"_meteoland_interpolatePrecipitationSeriesPoints", (DL_FUNC) &_meteoland_interpolatePrecipitationSeriesPoints, 17},
    {"_meteoland_interpolatePrecipitationEventSeriesPoints", (DL_FUNC) &_meteoland_interpolatePrecipitationEventSeriesPoints, 12},
    {"_meteoland_pseudoRainfall", (DL_FUNC) &_meteoland_pseudoRainfall, 5},
    {"_meteoland_julianDay", (DL_FUNC) &_meteoland_julianDay, 3},
    {"_meteoland_dateStringToJulianDays", (DL_FUNC) &_meteoland_dateStringToJulianDays, 1},
    {"_meteoland_solarDeclination", (DL_FUNC) &_meteoland_solarDeclination, 1},
    {"_meteoland_solarConstant", (DL_FUNC) &_meteoland_solarConstant, 1},
    {"_meteoland_sunRiseSet", (DL_FUNC) &_meteoland_sunRiseSet, 4},
    {"_meteoland_solarElevation", (DL_FUNC) &_meteoland_solarElevation, 3},
    {"_meteoland_daylength", (DL_FUNC) &_meteoland_daylength, 4},
    {"_meteoland_daylengthseconds", (DL_FUNC) &_meteoland_daylengthseconds, 4},
    {"_meteoland_RpotDay", (DL_FUNC) &_meteoland_RpotDay, 5},
    {"_meteoland_RDay", (DL_FUNC) &_meteoland_RDay, 10},
    {"_meteoland_directDiffuseInstant", (DL_FUNC) &_meteoland_directDiffuseInstant, 8},
    {"_meteoland_directDiffuseDay", (DL_FUNC) &_meteoland_directDiffuseDay, 8},
    {"_meteoland_skyLongwaveRadiation", (DL_FUNC) &_meteoland_skyLongwaveRadiation, 3},
    {"_meteoland_outgoingLongwaveRadiation", (DL_FUNC) &_meteoland_outgoingLongwaveRadiation, 10},
    {"_meteoland_netRadiation", (DL_FUNC) &_meteoland_netRadiation, 11},
    {"_meteoland_potentialRadiationSeries", (DL_FUNC) &_meteoland_potentialRadiationSeries, 4},
    {"_meteoland_potentialRadiationPoints", (DL_FUNC) &_meteoland_potentialRadiationPoints, 4},
    {"_meteoland_radiationSeries", (DL_FUNC) &_meteoland_radiationSeries, 9},
    {"_meteoland_radiationPoints", (DL_FUNC) &_meteoland_radiationPoints, 9},
    {"_meteoland_meteo", (DL_FUNC) &_meteoland_meteo, 9},
    {"_meteoland_vapourPressureFromRH", (DL_FUNC) &_meteoland_vapourPressureFromRH, 2},
    {"_meteoland_dewpointTemperatureFromRH", (DL_FUNC) &_meteoland_dewpointTemperatureFromRH, 2},
    {"_meteoland_temp2SVP", (DL_FUNC) &_meteoland_temp2SVP, 1},
    {"_meteoland_relativeHumidityFromMinMaxTemp", (DL_FUNC) &_meteoland_relativeHumidityFromMinMaxTemp, 2},
    {"_meteoland_relativeHumidityFromDewpointTemp", (DL_FUNC) &_meteoland_relativeHumidityFromDewpointTemp, 2},
    {"_meteoland_interpolateTdewPoints", (DL_FUNC) &_meteoland_interpolateTdewPoints, 12},
    {"_meteoland_interpolateTdewSeriesPoints", (DL_FUNC) &_meteoland_interpolateTdewSeriesPoints, 12},
    {"_meteoland_interpolateTemperaturePoints", (DL_FUNC) &_meteoland_interpolateTemperaturePoints, 12},
    {"_meteoland_interpolateTemperatureSeriesPoints", (DL_FUNC) &_meteoland_interpolateTemperatureSeriesPoints, 12},
    {"_meteoland_saturationVapourPressure", (DL_FUNC) &_meteoland_saturationVapourPressure, 1},
    {"_meteoland_averageDailyVapourPressure", (DL_FUNC) &_meteoland_averageDailyVapourPressure, 4},
    {"_meteoland_atmosphericPressure", (DL_FUNC) &_meteoland_atmosphericPressure, 1},
    {"_meteoland_airDensity", (DL_FUNC) &_meteoland_airDensity, 2},
    {"_meteoland_averageDaylightTemperature", (DL_FUNC) &_meteoland_averageDaylightTemperature, 2},
    {"_meteoland_latentHeatVaporisation", (DL_FUNC) &_meteoland_latentHeatVaporisation, 1},
    {"_meteoland_latentHeatVaporisationMol", (DL_FUNC) &_meteoland_latentHeatVaporisationMol, 1},
    {"_meteoland_psychrometricConstant", (DL_FUNC) &_meteoland_psychrometricConstant, 2},
    {"_meteoland_saturationVaporPressureCurveSlope", (DL_FUNC) &_meteoland_saturationVaporPressureCurveSlope, 1},
    {"_meteoland_getWindFieldIndexAndFactor", (DL_FUNC) &_meteoland_getWindFieldIndexAndFactor, 4},
    {"_meteoland_interpolateWindStationPoints", (DL_FUNC) &_meteoland_interpolateWindStationPoints, 11},
    {"_meteoland_interpolateWindFieldSeriesPoints", (DL_FUNC) &_meteoland_interpolateWindFieldSeriesPoints, 12},
    {"_meteoland_interpolateWindStationSeriesPoints", (DL_FUNC) &_meteoland_interpolateWindStationSeriesPoints, 10},
    {"_meteoland_RcppExport_registerCCallable", (DL_FUNC) &_meteoland_RcppExport_registerCCallable, 0},
    {NULL, NULL, 0}
};

RcppExport void R_init_meteoland(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
