Skip to content

Commit

Permalink
fix 3d
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomei committed Dec 19, 2024
1 parent fa8e351 commit 96e0fcb
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
13 changes: 10 additions & 3 deletions bin/CRITERIA3D/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
#include "dialogModelProcesses.h"
#include "utilities.h"
#include "formText.h"
#include "soilFluxes3D.h"

#include <QTime>

Expand Down Expand Up @@ -2401,7 +2402,7 @@ void MainWindow::on_actionCriteria3D_run_models_triggered()

void MainWindow::on_actionCriteria3D_Water_content_summary_triggered()
{
double surfaceWaterContent = 0;
double surfaceWaterContent = 0; // [m3]
long nrSurfaceVoxels = 0;
if (! myProject.computeSurfaceWaterContent(surfaceWaterContent, nrSurfaceVoxels))
{
Expand All @@ -2412,13 +2413,19 @@ void MainWindow::on_actionCriteria3D_Water_content_summary_triggered()
double voxelArea = myProject.DEM.header->cellSize * myProject.DEM.header->cellSize; // [m2]
double surfaceArea = voxelArea * nrSurfaceVoxels; // [m2]
double surfaceAvgLevel = surfaceWaterContent / surfaceArea * 1000; // [mm]
double totalWaterContent = soilFluxes3D::getTotalWaterContent(); // [m3]

QString summaryStr = "WATER CONTENT SUMMARY\n\n";

summaryStr += "Total water content: " + QString::number(totalWaterContent, 'f', 1) + " [m3]\n";
summaryStr += "-------------------------------------------\n";
summaryStr += "Surface area: " + QString::number(surfaceArea / 10000, 'f', 1) + " [hectares]\n";
summaryStr += "Surface total water content: " + QString::number(surfaceWaterContent, 'f', 1) + " [m3]\n";
summaryStr += "Surface water content: " + QString::number(surfaceWaterContent, 'f', 1) + " [m3]\n";
summaryStr += "Surface average water level: " + QString::number(surfaceAvgLevel, 'f', 1) + " [mm]\n";
summaryStr += "-------------------------------------------";
summaryStr += "-------------------------------------------\n";
summaryStr += "Soil area: [hectares]\n";
summaryStr += "Soil water content: [m3]\n";
summaryStr += "Soil average water content: [mm]\n";

myProject.logInfoGUI(summaryStr);
}
Expand Down
18 changes: 9 additions & 9 deletions bin/CRITERIA3D/shared/project3D.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1922,7 +1922,7 @@ double Project3D::assignEvaporation(int row, int col, double lai, int soilIndex)
}
}

double area = DEM.header->cellSize * DEM.header->cellSize; // [m2]
double area = DEM.header->cellSize * DEM.header->cellSize; // [m2]

double et0 = double(hourlyMeteoMaps->mapHourlyET0->value[row][col]); // [mm]
double maxEvaporation = getPotentialEvaporation(et0, lai); // [mm]
Expand All @@ -1935,8 +1935,8 @@ double Project3D::assignEvaporation(int row, int col, double lai, int soilIndex)
double surfaceEvaporation = std::min(maxEvaporation, surfaceWater);

// TODO surface evaporation out of numerical solution
double surfaceFlow = area * (surfaceEvaporation / 1000); // [m3 h-1]
waterSinkSource.at(unsigned(surfaceNodeIndex)) -= (surfaceFlow / 3600); // [m3 s-1]
double surfaceFlow = area * (surfaceEvaporation / 1000.); // [m3 h-1]
waterSinkSource.at(unsigned(surfaceNodeIndex)) -= (surfaceFlow / 3600.); // [m3 s-1]

actualEvaporationSum += surfaceEvaporation;
double residualEvaporation = maxEvaporation - surfaceEvaporation;
Expand Down Expand Up @@ -1986,15 +1986,15 @@ double Project3D::assignEvaporation(int row, int col, double lai, int soilIndex)
double vwcAboveThreshold = std::max(getCriteria3DVar(volumetricWaterContent, nodeIndex) - evapThreshold, 0.0); // [m3 m-3]

// [mm]
double evapAvailableWater = vwcAboveThreshold * layerThickness[layer] * 1000;
double evapAvailableWater = vwcAboveThreshold * layerThickness[layer] * 1000.;

double layerEvap = std::min(evapAvailableWater, residualEvaporation * layerCoeff[layer]); // [mm]
if (layerEvap > 0)
{
actualEvaporationSum += layerEvap;
iterEvaporation += layerEvap;
double flow = area * (layerEvap / 1000); // [m3 h-1]
waterSinkSource.at(unsigned(nodeIndex)) -= (flow / 3600); // [m3 s-1]
double flow = area * (layerEvap / 1000.); // [m3 h-1]
waterSinkSource.at(unsigned(nodeIndex)) -= (flow / 3600.); // [m3 s-1]
}
}
}
Expand All @@ -2016,7 +2016,7 @@ double Project3D::assignEvaporation(int row, int col, double lai, int soilIndex)
*/
double Project3D::assignTranspiration(int row, int col, double currentLai, double currentDegreeDays)
{
double actualTranspiration = 0; // [mm]
double actualTranspiration = 0; // [mm]

// check lai and degree days
if (currentLai < EPSILON || isEqual(currentDegreeDays, NODATA))
Expand Down Expand Up @@ -2175,11 +2175,11 @@ double Project3D::assignTranspiration(int row, int col, double currentLai, doubl
actualTranspiration = 0;
for (int layer = firstRootLayer; layer <= lastRootLayer; layer++)
{
double flow = area * (layerTranspiration[layer] / 1000); // [m3 h-1]
double flow = area * (layerTranspiration[layer] / 1000.); // [m3 h-1]
long nodeIndex = long(indexMap.at(layer).value[row][col]);
if (! isEqual(nodeIndex, indexMap.at(layer).header->flag))
{
waterSinkSource.at(nodeIndex) -= (flow / 3600); // [m3 s-1]
waterSinkSource.at(nodeIndex) -= (flow / 3600.); // [m3 s-1]
actualTranspiration += layerTranspiration[layer]; // [mm]
}
}
Expand Down

0 comments on commit 96e0fcb

Please sign in to comment.