int main(int argc, char *argv[]) { int i, r; float x, y, z; char rptfile[] = "tmp.rpt"; char outfile[] = "tmp.out"; // Check if a SWMM input file name is provided if (argc < 2) { printf("\nNo file name was provided.\n"); return 0; } // Run the SWMM analysis r = RunSwmmDll(argv[1], rptfile, outfile); if (r > 0) { printf("\nSWMM run was unsuccessful; error code = %d\n", r); } else { // Open outfile as a SWMM output file r = OpenSwmmOutFile(outfile); if (r == 1) { printf("\nInvalid results in SWMM output file.\n"); } else if (r == 2) { printf("\nFile is not a SWMM output file.\n"); } else { printf("\nTime Total Total Total"); printf("\nPeriod Rainfall Runoff Outflow"); printf("\n===================================="); for (i=1; i<=SWMM_Nperiods; i++) { GetSwmmResult(3, 0, 1, i, &x); GetSwmmResult(3, 0, 4, i, &y); GetSwmmResult(3, 0, 11, i, &z); printf("\n%6d %8.2f %8.2f %8.2f", i, x, y, z); } CloseSwmmOutFile(); } } remove(rptfile); remove(outfile); return 0; }
/* ******************************* * MAIN * *********************************/ int main(int argc, char *argv[]) { int i, j; /* Iteradores para for. */ int r; /* Retorno das funcoes (representa codigo de erro ou sucesso). */ float totalRainfall; /* Recebe do arquivo out do SWMM a precipitacao total. */ float depth; /* Recebe do arquivo out do SWMM o nivel da agua na juncao. */ float flow; /* Recebe do arquivo out do SWMM a vazao no conduit. */ char inpFile[] = "data/2010.inp"; /* Arquivo de entrada do SWMM. */ char rptFile[] = "data/2010.rpt"; /* Arquivo de relatorio de execucao do SWMM. */ char outFile[] = "data/2010.out"; /* Arquivo de saida do SWMM. */ FILE *DBConn; /* Arquivo .dat de entrada com dados da estacao. */ int iteracao = 1; /* = "linha" do original. Iteracao = 1 -> realiza os calculos em cima de uma linha de dados. Iteracao = 2 -> realiza calculos 2a vez... */ double pobs; /* Precipitacao observada. */ stationData stat; /* Struct stationData com os dados da estacao. */ //return UpdateInitFlow(inpFile, "L-50", 15); /* ESTABELECE CONEXAO COM O "DB" (arquivo). */ DBConn = DBConnect(); if (DBConn == NULL) /* Erro. */ { printf("\nErro no retorno da conexao com <banco>\n"); return 1; } /* CARREGA DADOS DO BANCO (arquivo) NAS VARIAVEIS E CHAMA PREVISAO DE PRECIPITACAO. */ while((LoadDBData(DBConn, &stat, &pobs)) == 0) { PrecForecast(&stat, &pobs, &iteracao); } /* CHECAGEM E UTILIZACAO DE DADOS VGI. */ // VGICheck(); /* Execucao do SWMM. */ r = RunSwmmDll(inpFile, rptFile, outFile); if (r > 0) { printf("\nA execucao do SWMM nao obteve sucesso; codigo do erro = %d\n", r); } else { /* Abre outfile como um arquivo de saida do SWMM. */ r = OpenSwmmOutFile(outFile); if (r == 1) { printf("\nResultados invalidos no arquivo de saida do SWMM.\n"); } else if (r == 2) { printf("\nO arquivo nao eh um arquivo de saida do SWMM.\n"); } else { printf("\nPeriodo No ou Precipitacao Altura Vazao"); printf("\nde Tempo Link Total Total Total"); printf("\n==================================================="); for(i = 1; i <= SWMM_Nperiods; i++) { for(j = 0; j < 182; j++) { GetSwmmResult(3, 0, 1, i, &totalRainfall); GetSwmmResult(2, j, 1, i, &depth); GetSwmmResult(2, j, 0, i, &flow); printf("\n%6d %6d %8.2f %8.2f %8.2f", i, j + 1, totalRainfall, depth, flow); } } CloseSwmmOutFile(); } } remove(rptFile); remove(outFile); remove("data/precOutSample.dat"); return 0; }