Commit 977d02d3 authored by Ronan Trépos's avatar Ronan Trépos
Browse files

allow to nitialize RUmmC1 adn RUmmC2 directly

rather than relying on function:
(Hcc_C1 - Hpf_C1 ) / 100.0 * da_C1 * ( 1.0 - TC );
parent ef823ff8
......@@ -34,18 +34,6 @@ public :
ParametresVariete pv;
ParametresSol ps;
/// Parametre interne \n
///# Réserve Utile (mm d'eau ) par mm de sol dans l'horizon de surface (C1)
//codeMMpourMemo variable: RUmmC1 Unconditional Global
//codeMMpourMemo RUmmC1 = (Hcc_C1-Hpf_C1)/100 * da_C1 * (1-TC)
double RUmmC1;
/// Parametre interne \n
///# Réserve Utile (mm d'eau ) par mm de sol dans l'horizon de surface (C2)
//codeMMpourMemo variable: RUmmC2 Unconditional Global
//codeMMpourMemo RUmmC2 = (Hcc_C2-Hpf_C2)/100 * da_C2 * (1-TC)
double RUmmC2;
/// Parametre interne \n
///# Profondeur sur laquelle on effectue le bilan hydrique (mm)
//codeMMpourMemo variable: zBilan Unconditional Universal
......@@ -92,6 +80,13 @@ public :
Var D2;
/// # Drainage en dessous du profil (mm)
Var D3;
// Réserve Utile (mm d'eau ) par mm de sol dans l'horizon de surface (C1)
// equals the parameter in ParametersSol
Var RUmmC1;
// Réserve Utile (mm d'eau ) par mm de sol dans l'horizon de surface (C2)
// equals the parameter in ParametersSol
Var RUmmC2;
/// # Teneur en eau relative dans l'horizon de surface. Utilisé pour la fonction de minéralisation.
Var RWCC1;
/// # Vitesse d'extraction d'eau par les racines dans C1 (mm/j)
......@@ -145,9 +140,6 @@ public :
pv.initialiser( events );
ps.initialiser( events );
RUmmC1 = ( ps.Hcc_C1 - ps.Hpf_C1 ) / 100.0 * ps.da_C1 * ( 1.0 - ps.TC );
RUmmC2 = ( ps.Hcc_C2 - ps.Hpf_C2 ) / 100.0 * ps.da_C2 * ( 1.0 - ps.TC );
if ( pp.zRac_max <= ps.profondeur ){
zBilan = pp.zRac_max;
} else {
......@@ -179,6 +171,8 @@ public :
D1.init(this, "D1" , events);
D2.init(this, "D2" , events);
D3.init(this, "D3" , events);
RUmmC1.init(this, "RUmmC1" , events);
RUmmC2.init(this, "RUmmC2" , events);
RWCC1.init(this, "RWCC1" , events);
vTRC1.init(this, "vTRC1" , events);
vTRC2.init(this, "vTRC2" , events);
......@@ -202,6 +196,9 @@ public :
vTRp.init(this, "vTRp" , events);
fRacC1.init(this, "fRacC1" , events);
RUmmC1.init_value(ps.RUmmC1);
RUmmC2.init_value(ps.RUmmC2);
}
virtual ~ContrainteEau() { }
......@@ -216,6 +213,7 @@ public :
C3 = (ps.Hini_C2 * (ps.Hcc_C2 - ps.Hpf_C2)) / 100.0 * ps.da_C2 * (zBilan - ps.zC1 ) * ( 1.0 - ps.TC );
zRac = 0.0; //codeMMpourMemo Initial Value = 0
vRac = 0.0;
zC2 = 1.0;
{
double zC3_tmp = 0.0;
......@@ -228,8 +226,8 @@ public :
{
double D1_tmp = 0.0;
if ( C1() >= ( ps.zC1 * RUmmC1 ) ){
D1_tmp = C1() - ( ps.zC1 * RUmmC1 );
if ( C1() >= ( ps.zC1 * RUmmC1() ) ){
D1_tmp = C1() - ( ps.zC1 * RUmmC1() );
} else {
D1_tmp = 0.0;
}
......@@ -238,8 +236,8 @@ public :
{
double D2_tmp = 0.0;
if ( C2() >= ( zC2() * RUmmC2 ) ){
D2_tmp = C2() - ( zC2() * RUmmC2 );
if ( C2() >= ( zC2() * RUmmC2() ) ){
D2_tmp = C2() - ( zC2() * RUmmC2() );
} else {
D2_tmp = 0.0;
}
......@@ -247,8 +245,8 @@ public :
}
{
double D3_tmp = 0.0;
if ( C3() > ( zC3() * RUmmC2 ) ){
D3_tmp = C3() - ( zC3() * RUmmC2 );
if ( C3() > ( zC3() * RUmmC2() ) ){
D3_tmp = C3() - ( zC3() * RUmmC2() );
} else {
D3_tmp = 0.0;
}
......@@ -460,8 +458,8 @@ public :
{
double D1_tmp = 0.0;
if ( C1() >= ( ps.zC1 * RUmmC1 ) ){
D1_tmp = C1() - ( ps.zC1 * RUmmC1 );
if ( C1() >= ( ps.zC1 * RUmmC1() ) ){
D1_tmp = C1() - ( ps.zC1 * RUmmC1() );
} else {
D1_tmp = 0.0;
}
......@@ -471,8 +469,8 @@ public :
{
double D2_tmp = 0.0;
if ( C2() >= ( zC2() * RUmmC2 ) ){
D2_tmp = C2() - ( zC2() * RUmmC2 );
if ( C2() >= ( zC2() * RUmmC2() ) ){
D2_tmp = C2() - ( zC2() * RUmmC2() );
} else {
D2_tmp = 0.0;
}
......@@ -481,8 +479,8 @@ public :
{
double D3_tmp = 0.0;
if ( C3() > ( zC3() * RUmmC2 ) ){
D3_tmp = C3() - ( zC3() * RUmmC2 );
if ( C3() > ( zC3() * RUmmC2() ) ){
D3_tmp = C3() - ( zC3() * RUmmC2() );
} else {
D3_tmp = 0.0;
}
......@@ -608,7 +606,7 @@ public :
ATSW = ATSW_tmp;
}
TTSW = ( RUmmC1 * ps.zC1 ) + ( RUmmC2 * zC2() );
TTSW = ( RUmmC1() * ps.zC1 ) + ( RUmmC2() * zC2() );
// FTSW, EQ17 de la publi
{
......
......@@ -75,6 +75,14 @@ struct ParametresSol
//codeMMpourMemo zC1 = 300
double zC1;
// Réserve Utile (mm d'eau ) par mm de sol dans l'horizon de surface (C1)
// RUmmC1 = (Hcc_C1-Hpf_C1)/100 * da_C1 * (1-TC)
double RUmmC1;
// Réserve Utile (mm d'eau ) par mm de sol dans l'horizon de surface (C2)
// RUmmC2 = (Hcc_C2-Hpf_C2)/100 * da_C2 * (1-TC)
double RUmmC2;
void initialiser( const vle::devs::InitEventList& events ){
......@@ -146,6 +154,16 @@ struct ParametresSol
} else {
throw vle::utils::ModellingError("[ParametersSol] missing 'zC1'");
}
if (events.exist("RUmmC1") and (events.getDouble("RUmmC1") != -1)) {
RUmmC1 = events.getDouble("RUmmC1");
} else {
RUmmC1 = (Hcc_C1 - Hpf_C1 ) / 100.0 * da_C1 * ( 1.0 - TC );
}
if (events.exist("RUmmC2") and (events.getDouble("RUmmC2") != -1)) {
RUmmC2 = events.getDouble("RUmmC2");
} else {
RUmmC2 = (Hcc_C2 - Hpf_C2 ) / 100.0 * da_C2 * ( 1.0 - TC );
}
}
};
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment