Tôi đang cố gắng tạo ra một hệ thống mô hình lũ lụt. Hệ thống này bao gồm hai phần chủ yếu là mô phỏng lũ sông và mô phỏng lượng mưa. Để làm điều này, tôi đang chạy phiên bản GRASS 6.4 mới nhất . Ngoài ra, tôi đang sử dụng SRTM thu được từ CGIAR làm DEM của tôi.
Tôi muốn hỏi các lệnh thích hợp nhất để chạy mô phỏng là gì. Ví dụ. Dòng chảy
Ngoài ra, vì chúng ta đang lập mô hình lũ lụt dựa trên một dòng sông, có nên sử dụng HEC-RAS không? Nó được tạo ra bởi cùng những người đã tạo ra GRASS. :)
Tôi là một lập trình viên hơn là một kỹ sư. Đây là liên doanh đầu tiên của tôi vào các hệ thống mô phỏng như là một phần của bằng cấp của tôi.
Cho đến bây giờ Đây là kế hoạch của chúng tôi về lượng mưa (mã giả):
int i = 0, j = 0;
int passes, numberOfmesh;
double rainAmount;
double store1[][];
double store2[][];
numberOfmesh = getTotalMeshCells();
passes = computePasses(numberOfmesh());
rainAmount = getRainAmount();
/* rainAmount corresponds to the input of the user in the textfield.
store1 contains the elevation and the number of times an amount of water
has been passed to it (per pixel)
store2 contains the elevation and the total accumulated water (per pixel)
Both store1 and store2 have 'n' number of rows and 2 columns;
ASSUME THAT THE ARRAY HAS ALREADY BEEN POPULATED */
while(i != passes)
{
while(j != numberOfmesh)
{
direct = getDirection(store[j][0]);
/* direct corresponds to the direction of a mesh cell;
I don't know what id the datatype for direct; */
store2[j][6] += rainAmount;
gotoDirection(direct);
}
}
computeAccumulated();
//Here is what gotoDirect is supposed to do:
gotoDirect(direct)
{
/* How can we determine the elevation of the mesh cell to where the
'direct' points to?
In the following code, j refers to the elevation of the mesh cell where
the 'direct' point to.
*/
store1[j][7] += 1;
/* increases the number of times that an amount of water
was passed to it */
}
//Here is what computeAccumulated is supposed to do:
computeAccumulated()
{
while(j != numberOfmesh)
{
store2[j][8] += store1[j][9] * rainAmount;
}
}