Example #1
0
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;
}
Example #2
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;
}