diff --git a/bin/CRITERIA3D/criteria3DProject.cpp b/bin/CRITERIA3D/criteria3DProject.cpp index 0d72cf023..ba4ab0432 100644 --- a/bin/CRITERIA3D/criteria3DProject.cpp +++ b/bin/CRITERIA3D/criteria3DProject.cpp @@ -1465,6 +1465,8 @@ bool Crit3DProject::loadModelState(QString statePath) } processes.computeWater = true; + processes.computeEvaporation = true; + processes.computeSlopeStability = true; } return true; diff --git a/bin/CRITERIA3D/dialogWaterFluxesSettings.cpp b/bin/CRITERIA3D/dialogWaterFluxesSettings.cpp index f98b0e23e..91d843cde 100644 --- a/bin/CRITERIA3D/dialogWaterFluxesSettings.cpp +++ b/bin/CRITERIA3D/dialogWaterFluxesSettings.cpp @@ -6,6 +6,27 @@ DialogWaterFluxesSettings::DialogWaterFluxesSettings() { setWindowTitle("3D water fluxes settings"); + QGroupBox* processesGroupBox = new QGroupBox("Required processes"); + QLabel *snowLabel = new QLabel(tr("Snow ")); + snowProcess = new QCheckBox(); + QLabel *evaporationLabel = new QLabel(tr("Evaporation")); + evaporationProcess = new QCheckBox(); + QLabel *cropLabel = new QLabel(tr("Crop ")); + cropProcess = new QCheckBox(); + QLabel *waterLabel = new QLabel(tr("Water flow")); + waterFluxesProcess = new QCheckBox(); + + QHBoxLayout *layoutProcesses = new QHBoxLayout(); + layoutProcesses->addWidget(snowProcess); + layoutProcesses->addWidget(snowLabel); + layoutProcesses->addWidget(evaporationProcess); + layoutProcesses->addWidget(evaporationLabel); + layoutProcesses->addWidget(cropProcess); + layoutProcesses->addWidget(cropLabel); + layoutProcesses->addWidget(waterFluxesProcess); + layoutProcesses->addWidget(waterLabel); + processesGroupBox->setLayout(layoutProcesses); + // initial water potential [m] QGroupBox* initialGroupBox = new QGroupBox("Initial conditions"); QLabel *initialWaterPotentialLabel = new QLabel(tr("Initial water potential [m]")); @@ -53,6 +74,7 @@ DialogWaterFluxesSettings::DialogWaterFluxesSettings() connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); QVBoxLayout *mainLayout = new QVBoxLayout(); + mainLayout->addWidget(processesGroupBox); mainLayout->addWidget(initialGroupBox); mainLayout->addWidget(depthGroupBox); mainLayout->addWidget(soilGroupBox); diff --git a/bin/CRITERIA3D/dialogWaterFluxesSettings.h b/bin/CRITERIA3D/dialogWaterFluxesSettings.h index fb8d3384c..57ce4ff0e 100644 --- a/bin/CRITERIA3D/dialogWaterFluxesSettings.h +++ b/bin/CRITERIA3D/dialogWaterFluxesSettings.h @@ -4,6 +4,7 @@ #include #include #include + #include class DialogWaterFluxesSettings : public QDialog { @@ -12,6 +13,11 @@ QLineEdit *imposedComputationDepthEdit; public: + QCheckBox *snowProcess; + QCheckBox *evaporationProcess; + QCheckBox *cropProcess; + QCheckBox *waterFluxesProcess; + QRadioButton *onlySurface; QRadioButton *allSoilDepth; QRadioButton *imposedDepth; diff --git a/bin/CRITERIA3D/mainwindow.cpp b/bin/CRITERIA3D/mainwindow.cpp index 63caa51cc..20a8f26f7 100644 --- a/bin/CRITERIA3D/mainwindow.cpp +++ b/bin/CRITERIA3D/mainwindow.cpp @@ -2179,6 +2179,11 @@ void MainWindow::on_actionWaterFluxes_settings_triggered() dialogWaterFluxes.setInitialWaterPotential(myProject.waterFluxesParameters.initialWaterPotential); dialogWaterFluxes.setImposedComputationDepth(myProject.waterFluxesParameters.imposedComputationDepth); + dialogWaterFluxes.snowProcess->setChecked(myProject.processes.computeSnow); + dialogWaterFluxes.evaporationProcess->setChecked(myProject.processes.computeEvaporation); + dialogWaterFluxes.cropProcess->setChecked(myProject.processes.computeCrop); + dialogWaterFluxes.waterFluxesProcess->setChecked(myProject.processes.computeWater); + if (myProject.waterFluxesParameters.computeOnlySurface) dialogWaterFluxes.onlySurface->setChecked(true); else if (myProject.waterFluxesParameters.computeAllSoilDepth) @@ -2201,6 +2206,31 @@ void MainWindow::on_actionWaterFluxes_settings_triggered() myProject.waterFluxesParameters.computeAllSoilDepth = dialogWaterFluxes.allSoilDepth->isChecked(); myProject.fittingOptions.useWaterRetentionData = dialogWaterFluxes.useWaterRetentionFitting->isChecked(); + myProject.processes.computeSnow = dialogWaterFluxes.snowProcess->isChecked(); + if (myProject.processes.computeSnow) + { + myProject.processes.computeMeteo = true; + myProject.processes.computeRadiation = true; + } + myProject.processes.computeEvaporation = dialogWaterFluxes.evaporationProcess->isChecked(); + if (myProject.processes.computeEvaporation) + { + myProject.processes.computeMeteo = true; + myProject.processes.computeRadiation = true; + } + myProject.processes.computeCrop = dialogWaterFluxes.cropProcess->isChecked(); + if (myProject.processes.computeCrop) + { + myProject.processes.computeMeteo = true; + myProject.processes.computeRadiation = true; + } + myProject.processes.computeWater = dialogWaterFluxes.waterFluxesProcess->isChecked(); + if (myProject.processes.computeWater) + { + myProject.processes.computeMeteo = true; + myProject.processes.computeSlopeStability = true; + } + /*if (! myProject.writeCriteria3DParameters()) { myProject.logError("Error writing soil fluxes parameters"); @@ -2208,10 +2238,8 @@ void MainWindow::on_actionWaterFluxes_settings_triggered() } // layer thickness - // processes (snow crop) // boundary (lateral free drainage, bottom free drainage) // lateral conductivity ratio - // model accuracy }