コード例 #1
0
ファイル: zerocopy.c プロジェクト: burlen/visit_vtk_7_src
void
SetupCallbacks(simulation_data *sim)
{
    VisItSetCommandCallback(SimControlCommandCallback, (void*)sim);
    VisItSetSlaveProcessCallback2(SimSlaveProcessCallback, (void*)sim);
    VisItSetGetMetaData(SimGetMetaData, (void*)sim);
    VisItSetGetMesh(SimGetMesh, (void*)sim);
    VisItSetGetVariable(SimGetVariable, (void*)sim);
    VisItSetGetDomainList(SimGetDomainList, (void*)sim);
}
コード例 #2
0
ファイル: sim6.c プロジェクト: burlen/visit_vtk_7_src
void mainloop(simulation_data *sim)
{
    int blocking, visitstate, err = 0;

    do
    {
        blocking = (sim->runMode == VISIT_SIMMODE_RUNNING) ? 0 : 1;
        /* Get input from VisIt or timeout so the simulation can run. */
        visitstate = VisItDetectInput(blocking, -1);

        /* Do different things depending on the output from VisItDetectInput. */
        if(visitstate >= -5 && visitstate <= -1)
        {
            fprintf(stderr, "Can't recover from error!\n");
            err = 1;
        }
        else if(visitstate == 0)
        {
            /* There was no input from VisIt, return control to sim. */
            simulate_one_timestep(sim);
        }
        else if(visitstate == 1)
        {
            /* VisIt is trying to connect to sim. */
            if(VisItAttemptToCompleteConnection())
            {
                fprintf(stderr, "VisIt connected\n");

                /* Register data access callbacks */
                VisItSetGetMetaData(SimGetMetaData, (void*)sim);
            }
            else
                fprintf(stderr, "VisIt did not connect\n");
        }
        else if(visitstate == 2)
        {
            /* VisIt wants to tell the engine something. */
            sim->runMode = VISIT_SIMMODE_STOPPED;
            if(!VisItProcessEngineCommand())
            {
                /* Disconnect on an error or closed connection. */
                VisItDisconnect();
                /* Start running again if VisIt closes. */
                sim->runMode = VISIT_SIMMODE_RUNNING;
            }
        }
    } while(!sim->done && err == 0);
}
コード例 #3
0
ファイル: ucdcurve.c プロジェクト: ahota/visit_intel
void mainloop(simulation_data *sim)
{
    int blocking, visitstate, err = 0;

    /* If we're not running by default then simulate once there's something
     * once VisIt connects.
     */
    if(sim->runMode == SIM_STOPPED)
        simulate_one_timestep(sim);

    if (sim->par_rank == 0)
    {
        fprintf(stderr, "command> ");
        fflush(stderr);
    }

    do
    {
        blocking = (sim->runMode == SIM_RUNNING) ? 0 : 1;
        /* Get input from VisIt or timeout so the simulation can run. */
        if(sim->par_rank == 0)
        {
            visitstate = VisItDetectInput(blocking, fileno(stdin));
        }
#ifdef PARALLEL
        /* Broadcast the return value of VisItDetectInput to all procs. */
        MPI_Bcast(&visitstate, 1, MPI_INT, 0, sim->par_comm);
#endif
        /* Do different things depending on the output from VisItDetectInput. */
        switch(visitstate)
        {
        case 0:
            /* There was no input from VisIt, return control to sim. */
            simulate_one_timestep(sim);
            break;
        case 1:
            /* VisIt is trying to connect to sim. */
            if(VisItAttemptToCompleteConnection() == VISIT_OKAY)
            {
                fprintf(stderr, "VisIt connected\n");
                VisItSetCommandCallback(ControlCommandCallback, (void*)sim);
                VisItSetSlaveProcessCallback2(SlaveProcessCallback, (void*)sim);

                VisItSetGetMetaData(SimGetMetaData, (void*)sim);
                VisItSetGetMesh(SimGetMesh, (void*)sim);
                VisItSetGetVariable(SimGetVariable, (void*)sim);
                VisItSetGetDomainList(SimGetDomainList, (void*)sim);
            }
            else 
            {
                /* Print the error message */
                char *err = VisItGetLastError();
                fprintf(stderr, "VisIt did not connect: %s\n", err);
                free(err);
            }
            break;
        case 2:
            /* VisIt wants to tell the engine something. */
            if(!ProcessVisItCommand(sim))
            {
                /* Disconnect on an error or closed connection. */
                VisItDisconnect();
                /* Start running again if VisIt closes. */
                /*sim->runMode = SIM_RUNNING;*/
            }
            break;
        case 3:
            /* VisItDetectInput detected console input - do something with it.
             * NOTE: you can't get here unless you pass a file descriptor to
             * VisItDetectInput instead of -1.
             */
            ProcessConsoleCommand(sim);
            if (sim->par_rank == 0)
            {
                fprintf(stderr, "command> ");
                fflush(stderr);
            }
            break;
        default:
            fprintf(stderr, "Can't recover from error %d!\n", visitstate);
            err = 1;
            break;
        }
    } while(!sim->done && err == 0);
}
コード例 #4
0
ファイル: curve.c プロジェクト: burlen/visit_vtk_7_src
void mainloop(simulation_data *sim)
{
    int blocking, visitstate, err = 0;

    /* Do one iteration */
    simulate_one_timestep(sim);

    /* main loop */
    fprintf(stderr, "command> ");
    fflush(stderr);
    do
    {
        blocking = (sim->runMode == SIM_RUNNING) ? 0 : 1;
        /* Get input from VisIt or timeout so the simulation can run. */
        visitstate = VisItDetectInput(blocking, fileno(stdin));

        /* Do different things depending on the output from VisItDetectInput. */
        if(visitstate >= -5 && visitstate <= -1)
        {
            fprintf(stderr, "Can't recover from error!\n");
            err = 1;
        }
        else if(visitstate == 0)
        {
            /* There was no input from VisIt, return control to sim. */
            simulate_one_timestep(sim);
        }
        else if(visitstate == 1)
        {
            /* VisIt is trying to connect to sim. */
            if(VisItAttemptToCompleteConnection() == VISIT_OKAY)
            {
                sim->runMode = SIM_STOPPED;
                fprintf(stderr, "VisIt connected\n");
                VisItSetCommandCallback(ControlCommandCallback, (void*)sim);

                VisItSetGetMetaData(SimGetMetaData, (void*)sim);
                VisItSetGetCurve(SimGetCurve, (void*)sim);
            }
            else
                fprintf(stderr, "VisIt did not connect\n");
        }
        else if(visitstate == 2)
        {
            /* VisIt wants to tell the engine something. */
            if(VisItProcessEngineCommand() == VISIT_ERROR)
            {
                /* Disconnect on an error or closed connection. */
                VisItDisconnect();
                /* Start running again if VisIt closes. */
                sim->runMode = SIM_RUNNING;
            }
        }
        else if(visitstate == 3)
        {
            /* VisItDetectInput detected console input - do something with it.
             * NOTE: you can't get here unless you pass a file descriptor to
             * VisItDetectInput instead of -1.
             */
            ProcessConsoleCommand(sim);
            fprintf(stderr, "command> ");
            fflush(stderr);
        }
    } while(!sim->done && err == 0);
}
コード例 #5
0
ファイル: stubs.c プロジェクト: ybouret/iics
void mainloop(simulation_data *sim)
{
    int blocking, visitstate, err = 0;
    //char buffer[100];
    //  double startTime,endTime;
    
    /* If we're not running by default then simulate once there's something
     * once VisIt connects.
     
     if(sim->runMode == SIM_STOPPED)
     simulate_one_timestep(sim);
     */
    VisItUI_valueChanged("MU",     ui_Mu_changed, sim);
    VisItUI_valueChanged("MUTEXT", do_nothing, NULL);
    paramMu=1;
	//sprintf(buffer,"%g",paramMu);
    //VisItUI_setValueS("MUTEXT",buffer,0);
    
    
    
    VisItUI_valueChanged("A", ui_A_changed, sim);
    VisItUI_valueChanged("ATEXT", ui_A_changed, sim);
    
    VisItUI_clicked("RUN",  ui_run_clicked, sim);
    VisItUI_clicked("HALT", ui_halt_clicked, sim);
    VisItUI_clicked("RAZ" , ui_raz_clicked, sim);
    
    if (sim->par_rank == 0)
    {
        fprintf(stderr, "command> ");
        fflush(stderr);
    }
    
    do
    {
        blocking = (sim->runMode == SIM_RUNNING) ? 0 : 1;
        /* Get input from VisIt or timeout so the simulation can run. */
        if(sim->par_rank == 0)
        {
            visitstate = VisItDetectInput(blocking, fileno(stdin));
        }
        
        
        MPI_Bcast(&visitstate, 1, MPI_INT, 0, MPI_COMM_WORLD);
        
        switch(visitstate)
        {
            case 0:
                /* There was no input from VisIt, return control to sim. */
                simulate_one_timestep(sim);
                break;
            case 1:
                /* VisIt is trying to connect to sim. */
                if(VisItAttemptToCompleteConnection() == VISIT_OKAY)
                {
                    fprintf(stderr, "VisIt connected\n");
                    VisItSetCommandCallback(ControlCommandCallback, (void*)sim);
                    VisItSetSlaveProcessCallback(SlaveProcessCallback);
                    
                    VisItSetGetMetaData(SimGetMetaData, (void*)sim);
                    VisItSetGetMesh(SimGetMesh, (void*)sim);
                    //VisItSetGetCurve(SimGetCurve, (void*)sim);
                    VisItSetGetVariable(SimGetVariable, (void*)sim);
                    VisItSetGetDomainList(SimGetDomainList, (void*)sim);
                    sim->visitIsConnected=1;
                    
                }
                else
                {
                    /* Print the error message */
                    char *errString = VisItGetLastError();
                    fprintf(stderr, "VisIt did not connect: %s\n", errString);
                    free(errString);
                }
                break;
            case 2:
                /* VisIt wants to tell the engine something. */
                if(!ProcessVisItCommand(sim))
                {
                    /* Disconnect on an error or closed connection. */
                    VisItDisconnect();
                    sim->visitIsConnected=0;
                    
                    /* Start running again if VisIt closes. */
                    /*sim->runMode = SIM_RUNNING;*/
                }
                break;
            case 3:
                /* VisItDetectInput detected console input - do something with it.
                 * NOTE: you can't get here unless you pass a file descriptor to
                 * VisItDetectInput instead of -1.
                 */
                ProcessConsoleCommand(sim);
                if (sim->par_rank == 0)
                {
                    fprintf(stderr, "command> ");
                    fflush(stderr);
                }
                break;
            default:
                fprintf(stderr, "Can't recover from error %d!\n", visitstate);
                err = 1;
                break;
        }
    } while(!sim->done && err == 0);
}
コード例 #6
0
ファイル: benchmark.c プロジェクト: eth-cscs/cscs_io
void mainloop(simulation_data *sim)
{
  int blocking, visitstate, err = 0;
  char Filename[256];

#ifdef VISIT_INSITU
  if(sim->runMode == SIM_STOPPED)
    simulate_one_timestep(sim);
  do
    {
    blocking = (sim->runMode == SIM_RUNNING) ? 0 : 1;

// Get input from VisIt or timeout so the simulation can run.
    if(sim->par_rank == 0)
      visitstate = VisItDetectInput(blocking, -1);
    MPI_Bcast(&visitstate, 1, MPI_INT, 0, sim->comm_cart);

// Do different things depending on the output from VisItDetectInput
    switch(visitstate)
      {
      case 0:
// There was no input from VisIt, return control to sim
        simulate_one_timestep(sim);
      break;
      case 1:
// VisIt is trying to connect to sim.
        if(VisItAttemptToCompleteConnection() == VISIT_OKAY)
          {
          //fprintf(stderr, "VisIt connected\n");
          VisItSetCommandCallback(ControlCommandCallback, (void*)sim);
          VisItSetSlaveProcessCallback2(SlaveProcessCallback, (void*)sim);

          VisItSetGetMetaData(SimGetMetaData, (void*)sim);
          VisItSetGetMesh(SimGetMesh, (void*)sim);
          VisItSetGetVariable(SimGetVariable, (void*)sim);
          VisItSetGetDomainList(SimGetDomainList, (void*)sim);
          }
        else
          {
          char *err = VisItGetLastError();
          fprintf(stderr, "VisIt did not connect: %s\n", err);
          free(err);
          }
      break;
      case 2:
// VisIt wants to tell the engine something
        if(!ProcessVisItCommand(sim))
          {
// Disconnect on an error or closed connection.
           VisItDisconnect();
// Start running again if VisIt closes.
           sim->runMode = SIM_RUNNING;
          }
      break;
      default:
        fprintf(stderr, "Can't recover from error %d!\n", visitstate);
        err = 1;
      break;
      }
    } while(!sim->done && err == 0);
#else
  do
    {
    simulate_one_timestep(sim);
    char postfix[4];
#ifdef ADIOS
    strcpy(postfix, "bp");
    DumpData(sim, sim->filename, sim->saveCounter++, postfix);
#elif NETCDF4
#ifdef PARIO
    strcpy(postfix, "p.nc");
    DumpData(sim, sim->filename, sim->saveCounter++, postfix);
#else
    strcpy(postfix, "s.nc");
    DumpData(sim, sim->filename, sim->saveCounter++, postfix);
#endif
#elif HDF5
    strcpy(postfix, "h5");
    DumpData(sim, sim->filename, sim->saveCounter++, postfix);
#elif BOV
    strcpy(postfix, "bof");
    char name[512];
    char cmd[512];
    int l0 =  strlen(strrchr(sim->filename, '/'));
    int l =  1+strlen(sim->filename) - l0;
    strncpy(name, sim->filename, l);
    sprintf(&name[l], "%05d/", sim->saveCounter);
    sprintf(cmd, "mkdir %s", &name[0]);
    if(!sim->par_rank){
      system(cmd);
    }
    MPI_Barrier(sim->comm_cart);
    strncpy(&name[l+6], &sim->filename[l], l0);
    //fprintf(stderr, "creating a subdirectory %s %d\n",name, l0);
    //fprintf(stderr, "creating a subdirectory %s %d\n",sim->filename, sim->saveCounter);
    DumpData(sim, name, sim->saveCounter++, postfix);
#else
    strcpy(postfix, "bin");
    DumpData(sim, sim->filename, sim->saveCounter++, postfix);
#endif

    //if(sim->par_rank == 0) printf("Saved file %s\n", Filename);

    if(sim->cycle == NUMBER_OF_ITERATIONS)
      {
      sim->done = 1;
      }
    } while(!sim->done && err == 0);
#endif
}