#include "qt/input/data.hpp" QtInputData::QtInputData(){ depth=1; nZ_max=100; initPhysics(); initSplines(); initGeometry(); initInitialState(); } void QtInputData::initPhysics(){ Physics::g=9.81; Physics::rho=1000; Physics::phi=0.3; Physics::k0=3e-5; Physics::nivrivsat=0.02; Physics::Psec=-10000; Physics::model_data[0]=-2000; Physics::model_data[1]=0; Physics::model_data[2]=3; Physics::model_data[3]=11; Physics::model_data[4]=0; Physics::model_data[5]=0; Physics::setModel(Physics::BrooksCorey); } void QtInputData::initSplines() { // Control points of splines for(size_t i=0;ihsat=new double[nmax_Qt]; initial_state->hov=new double[nmax_Qt]; initial_state->Pinit=new double*[nmax_Qt]; for(size_t i=0;iPinit[i]=new double[nmax_Qt]; } updateInitialState(); } void QtInputData::updateGeometry(){ double prev_factor=factor; double hs_max=-inf,hb_min=inf; double v; geometry.dX=geometry.lX/(geometry.nX-1); for(size_t k=0;ktanks.begin();it!=initial_state->tanks.end();++it){ Tank* tank=*it; tank->top*=r; tank->bottom*=r; tank->delta_top*=r; tank->delta_bottom*=r; } for(auto it=source.pumps.begin();it!=source.pumps.end();++it){ Pump* pump=*it; pump->top_init*=r; pump->bottom_init*=r; pump->delta_top_init*=r; pump->delta_bottom_init*=r; pump->top_final*=r; pump->bottom_final*=r; pump->delta_top_final*=r; pump->delta_bottom_final*=r; } } void QtInputData::updateInitialState(){ for(size_t i=0;ihsat[i]=spline_sat(x)*factor; } initial_state->updatePressure(); updateOverland(); } void QtInputData::save(fstream& file){ InputData::save(file); file.write((char*)&depth,sizeof(double)); file.write((char*)&nZ_max,sizeof(size_t)); size_t temp=np; file.write((char*)&temp,sizeof(size_t)); for(size_t i=0;i<3*np+np_ov;++i){ file.write((char*)&point[i].x,sizeof(double)); file.write((char*)&point[i].y,sizeof(double)); } } void QtInputData::load(fstream& file){ InputData::load(file); file.read((char*)&depth,sizeof(double)); file.read((char*)&nZ_max,sizeof(size_t)); size_t temp; file.read((char*)&temp,sizeof(size_t)); if(temp!=np){ cerr<<"Incorrect number of points"<hsat; for(size_t i=0;iPinit[i]; } delete[] initial_state->Pinit; initial_state->hsat=nullptr; //Bypassfirst initial_state destructor } void QtInputData::updateOverland(){ for(size_t x=0;xhov[x]=geometry.hsoil[x]; } for(size_t i=0;ihov[x]=max(initial_state->hov[x],y); } } } } size_t QtInputData::findSoilOver(double y,int x_ov,int x_step){ int x=x_ov; while(x>=0 and x