|
@@ -9,15 +9,17 @@ namespace Kernel{
|
|
|
Pl=nullptr;
|
|
|
}
|
|
|
|
|
|
- void Piccard::init(const Geometry* geometry_){
|
|
|
+ void Piccard::init(const Geometry* geometry_,double** pumps_){
|
|
|
geometry=geometry_;
|
|
|
+ pumps=pumps_;
|
|
|
horizontal_problem.init(geometry);
|
|
|
overland.init(geometry);
|
|
|
- all_vertical_richards.init(geometry);
|
|
|
+ all_vertical_richards.init(geometry,pumps);
|
|
|
if(l!=nullptr) delete[] l;
|
|
|
if(Pl!=nullptr) delete[] Pl;
|
|
|
l=new double[geometry->nX];
|
|
|
Pl=new double[geometry->nX];
|
|
|
+ error_x=new double[geometry->nX];
|
|
|
}
|
|
|
|
|
|
void
|
|
@@ -32,15 +34,18 @@ namespace Kernel{
|
|
|
|
|
|
compute_Pl(previous_solution->P);
|
|
|
|
|
|
+ n1_previous_hydr=norm1(previous_solution->hydr,geometry->nX);
|
|
|
+
|
|
|
|
|
|
//Compute hydr from s_in.hydr, s_in.hsat and Pl
|
|
|
horizontal_problem.previous_hydr=previous_solution->hydr;
|
|
|
horizontal_problem.l=previous_solution->hsat;
|
|
|
horizontal_problem.Pl=Pl;
|
|
|
horizontal_problem.hydr=new_solution->hydr;
|
|
|
+ horizontal_problem.error_x=error_x;
|
|
|
horizontal_problem.run();
|
|
|
new_solution->hydr=horizontal_problem.hydr;
|
|
|
- error+=horizontal_problem.error;
|
|
|
+ error+=horizontal_problem.total_error/n1_previous_hydr;
|
|
|
|
|
|
//Compute Overland
|
|
|
overland.in_hov=previous_solution->hov;
|
|
@@ -58,7 +63,7 @@ namespace Kernel{
|
|
|
// - P
|
|
|
// - hsat
|
|
|
//---------------------------------------------
|
|
|
- all_vertical_richards.init_indice_x_Richards();
|
|
|
+ all_vertical_richards.n1_previous_hydr=n1_previous_hydr;
|
|
|
all_vertical_richards.dt=dt;
|
|
|
all_vertical_richards.init_P=previous_solution->P;
|
|
|
all_vertical_richards.previous_P=previous_solution->P;
|
|
@@ -69,6 +74,8 @@ namespace Kernel{
|
|
|
//Specify output (may can change during the run of all_vertical_richards)
|
|
|
all_vertical_richards.hsat=new_solution->hsat;
|
|
|
all_vertical_richards.P=new_solution->P;
|
|
|
+ all_vertical_richards.error_x=error_x;
|
|
|
+ all_vertical_richards.init_indice_x_Richards();
|
|
|
all_vertical_richards.run();
|
|
|
new_solution->hsat=all_vertical_richards.hsat;
|
|
|
new_solution->P=all_vertical_richards.P;
|
|
@@ -102,7 +109,7 @@ namespace Kernel{
|
|
|
horizontal_problem.run();
|
|
|
new_solution->hydr=horizontal_problem.hydr;
|
|
|
|
|
|
- error+=horizontal_problem.error;
|
|
|
+ error+=horizontal_problem.total_error/n1_previous_hydr;
|
|
|
|
|
|
#ifdef MYDEBUG
|
|
|
if(Debug::level>1) cout<<" [Piccard::run] error (l+hydr) = \033[31m"<<error<<"\033[0m"<<endl;
|
|
@@ -129,6 +136,8 @@ namespace Kernel{
|
|
|
//Specify output (may can change during the run of all_vertical_richards)
|
|
|
all_vertical_richards.hsat=new_solution->hsat;
|
|
|
all_vertical_richards.P=new_solution->P;
|
|
|
+ all_vertical_richards.update_indice_x_Richards();
|
|
|
+
|
|
|
all_vertical_richards.run();
|
|
|
new_solution->hsat=all_vertical_richards.hsat;
|
|
|
new_solution->P=all_vertical_richards.P;
|