1 #ifndef ERF_METGRID_LAND_UTILS_H_
2 #define ERF_METGRID_LAND_UTILS_H_
10 #include <AMReX_REAL.H>
11 #include <AMReX_Vector.H>
33 const amrex::Vector<amrex::Real>& v_src,
36 const int n = z_src.size();
37 if (
z <= z_src[0]) {
return v_src[0]; }
38 if (
z >= z_src[n-1]) {
return v_src[n-1]; }
40 while (
z > z_src[m+1]) { ++m; }
41 const amrex::Real w = (
z - z_src[m]) / (z_src[m+1] - z_src[m]);
58 const int year = std::stoi(date.substr(0,4));
59 const int month = std::stoi(date.substr(5,2));
60 const int day = std::stoi(date.substr(8,2));
61 const int hour = std::stoi(date.substr(11,2));
63 const bool leap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
64 const int days_in_month[12] = {31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
69 for (
int m = 0; m < 12; ++m) {
71 start += days_in_month[m];
73 const int days_in_year = start;
75 for (
int m = 0; m < month-1; ++m) { doy += days_in_month[m]; }
78 if (
t < mid[0] ||
t >= mid[11]) {
85 w1 = (tt -
t0) / (t1 -
t0);
88 while (
t >= mid[m0+1]) { ++m0; }
90 w1 = (
t - mid[m0]) / (mid[m1] - mid[m0]);
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:23
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ t
Definition: ERF_WSM6.H:293
Definition: ERF_MetgridLandUtils.H:15
constexpr int nsoil_noah
Definition: ERF_MetgridLandUtils.H:19
void monthly_interp_weights(const std::string &date, int &m0, int &m1, amrex::Real &w1)
Definition: ERF_MetgridLandUtils.H:56
amrex::Real interp_in_depth(const amrex::Vector< amrex::Real > &z_src, const amrex::Vector< amrex::Real > &v_src, amrex::Real z)
Definition: ERF_MetgridLandUtils.H:32
constexpr amrex::Real dzs_noah[nsoil_noah]
Definition: ERF_MetgridLandUtils.H:20
real(c_double), parameter t0
Definition: ERF_module_model_constants.F90:39