Skip to content

Commit 34f188b

Browse files
committed
modified to import plant_uptake and export wn,sw,psi_m,aet
1 parent 54f2bf5 commit 34f188b

File tree

6 files changed

+30
-8
lines changed

6 files changed

+30
-8
lines changed

src/EVAP.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ void EVAP::calculate_daily_fluxes(double sw, int n, int y, double sw_in,
9494
rn_d = d_sr.rn_d;
9595
rnn_d = d_sr.rnn_d;
9696
double ts = d_sr.ts;
97+
98+
printf("Rnl in EVAP function: %0.6f W/m^2\n", rnl);
99+
97100
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
98101
// 1.1. Assume water temperature 0.0 if air temperature < 0.0
99102
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/SOLAR.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include <cmath>
22
#include <stdio.h>
33
#include <vector>
4+
#include <iostream>
45

56
#include "global.h"
67
#include "SOLAR.h"
@@ -84,6 +85,8 @@ void SOLAR::calculate_daily_fluxes(int n, int y, double sw_in, double tc, double
8485
Output:
8586
Features: Calculates the daily solar radiation fluxes
8687
*********************************************************************** */
88+
cout << "SOLAR calc inputs: " << n << " " << y << " " << sw_in << " " << tc << " " << slop << " " << asp << " " << snow << " " << nd << " " << sw << '\n';
89+
8790
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8891
// 0. Save day of year
8992
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -263,6 +266,7 @@ void SOLAR::calculate_daily_fluxes(int n, int y, double sw_in, double tc, double
263266
//max air temeperature
264267
//ts = tc/dcos(hs/2);
265268

269+
cout << "End of SOLAR calc: rnl = " << rnl << endl;
266270

267271
}
268272

@@ -388,6 +392,7 @@ srad SOLAR::get_vals(){
388392
dsr.rn_d = rn_d; // daytime net radiation, J/m^2
389393
dsr.rnn_d = rnn_d; // nighttime net radiation, J/m^2
390394
dsr.ts = ts; // surface temperature, C
395+
dsr.ppfd_d = ppfd_d; // daily mean ppfd
391396

392397
return dsr;
393398
}

src/SPLASH.cpp

+17-6
Original file line numberDiff line numberDiff line change
@@ -925,9 +925,9 @@ void SPLASH::quick_run(int n, int y, double wn, double sw_in, double tc,
925925

926926
}
927927

928-
void SPLASH::run_one_day(int n, int y, double wn, double sw_in, double tc,
928+
etr SPLASH::run_one_day(int n, int y, double wn, double sw_in, double tc,
929929
double pn,smr &dsoil, double slop, double asp,double snow, double snowfall, vector <double> &soil_info,
930-
double qin, double td, double nd) {
930+
double qin, double td, double nd, double plant_uptake) {
931931
/* ***********************************************************************
932932
Name: SPLASH.run_one_day
933933
Input: - int, day of year (n)
@@ -1277,7 +1277,7 @@ void SPLASH::run_one_day(int n, int y, double wn, double sw_in, double tc,
12771277
// 5.1.5. calculate Hortonian (infiltration excess) runoff
12781278
double ro_h = max(inflow-infi,0.0);
12791279
// 5.1.6. calculate recharge
1280-
double R = infi - dvap.aet;
1280+
double R = infi - dvap.aet - plant_uptake;
12811281
// 5.1.7. define the hydraulic gradient assuming steady state: z: I=Ks(dh/dz +1), x: tan(slop), if theta<fc no vertical flow outside the column
12821282

12831283
double Kunsat = Ksat_visc * pow((theta_m/theta_s),(3.0+(2.0/lambda)));
@@ -1589,10 +1589,21 @@ void SPLASH::run_one_day(int n, int y, double wn, double sw_in, double tc,
15891589
dsoil.sqout = qin_nday;
15901590
dsoil.bflow = T;
15911591
dsoil.nd = nd;
1592-
1593-
15941592

1595-
1593+
dsoil.stress_factor = (sm-RES)/(Wmax-RES);
1594+
cout << "sw_end(calc at start) / stress_end (calc at end) = " << sw << " / " << dsoil.stress_factor << '\n';
1595+
1596+
theta_i = (sm)/(depth*1000.0);
1597+
// correct theta_i for NA error reaching boundary conditions
1598+
if (theta_i>=theta_s){
1599+
theta_i = theta_s - 0.001;
1600+
} else if (theta_i<=theta_r){
1601+
theta_i = theta_r + 0.001;
1602+
}
1603+
dsoil.psi_m = bub_press/pow((((theta_i-theta_r)/(theta_s-theta_r))),(1/lambda));
1604+
dsoil.psi_m *= 0.00000980665; // convert from mmH2o --> MPa
1605+
1606+
return dvap;
15961607
}
15971608

15981609
vector<vector<double>> SPLASH::spin_up_cpp(int n, int y, vector<double> &sw_in, vector <double> &tair, vector <double> &pn,

src/SPLASH.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ class SPLASH {
8989
void quick_run(int n, int y, double wn, double sw_in, double tc,
9090
double pn, smr &dsm, double slop, double asp, double snow, double snowfall, vector <double> &soil_info,
9191
double qin, double td, double nd);
92-
void run_one_day(int n, int y, double wn, double sw_in, double tc,
93-
double pn, smr &dsoil, double slop, double asp,double snow, double snowfall, vector <double> &soil_info,double qin, double td, double nd);
92+
etr run_one_day(int n, int y, double wn, double sw_in, double tc,
93+
double pn, smr &dsoil, double slop, double asp,double snow, double snowfall, vector <double> &soil_info,double qin, double td, double nd, double plant_uptake = 0);
9494

9595
vector<vector<double>> spin_up_cpp(int n, int y, vector<double> &sw_in, vector <double> &tair, vector <double> &pn, double slop, double asp, vector <double> &snowfall, vector <double> &soil_info);
9696

src/smr.h

+2
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,7 @@ struct smr {
5757
double tdr; // day left to drain totally water from upslope
5858
double nd; // snow age (days)
5959
double pet; // potential evapotrasnpiration mm
60+
double stress_factor; // soil moisture stress factor (wn-RES)/(Wmax-RES), unitless
61+
double psi_m; // soil matrix potential, MPa
6062
};
6163
#endif

src/srad.h

+1
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,6 @@ struct srad {
5050
double rn_d; // daytime net radiation, J/m^2
5151
double rnn_d; // nighttime net radiation, J/m^2
5252
double ts; // surface temperature
53+
double ppfd_d; // photosynthetic photon flux density, mol/m^2/day
5354
};
5455
#endif

0 commit comments

Comments
 (0)