int main(int argc, char **argv) { simulation_data sim; simulation_data_ctor(&sim); /* Initialize environment variables. */ SimulationArguments(argc, argv); VisItSetupEnvironment(); /* Write out .sim2 file that VisIt uses to connect. */ VisItInitializeSocketAndDumpSimFile("material", "Demonstrates material data access function", "/path/to/where/sim/was/started", NULL, NULL, SimulationFilename()); /* Read input problem setup, geometry, data. */ read_input_deck(); /* Call the main loop. */ mainloop(&sim); /* Cleanup */ simulation_data_dtor(&sim); return 0; }
int main(int argc, char **argv) { int i; simulation_data sim; simulation_data_ctor(&sim); /* Initialize environment variables. */ SimulationArguments(argc, argv); VisItSetupEnvironment(); for(i = 1; i < argc; ++i) { if(strcmp(argv[i], "-echo") == 0) sim.echo = 1; } /* Write out .sim file that VisIt uses to connect. */ VisItInitializeSocketAndDumpSimFile("curve", "Demonstrates curve data access function", "/path/to/where/sim/was/started", NULL, NULL, SimulationFilename()); /* Read input problem setup, geometry, data.*/ read_input_deck(); /* Call the main loop. */ mainloop(&sim); simulation_data_dtor(&sim); return 0; }
int main(int argc, char **argv) { simulation_data sim; simulation_data_ctor(&sim); read_input_deck(&sim); do { simulate_one_timestep(&sim); write_vis_dump(&sim); } while(!sim.done); simulation_data_dtor(&sim); return 0; }
int main(int argc, char **argv) { simulation_data sim; simulation_data_ctor(&sim); SimulationArguments(argc, argv); /* Initialize environment variables. */ VisItSetupEnvironment(); #ifdef PARALLEL /* Initialize MPI */ MPI_Init(&argc, &argv); MPI_Comm_rank (MPI_COMM_WORLD, &sim.par_rank); MPI_Comm_size (MPI_COMM_WORLD, &sim.par_size); /* Install callback functions for global communication. */ VisItSetBroadcastIntFunction(visit_broadcast_int_callback); VisItSetBroadcastStringFunction(visit_broadcast_string_callback); /* Tell VSIL whether the simulation is parallel. */ VisItSetParallel(sim.par_size > 1); VisItSetParallelRank(sim.par_rank); #endif /* Write out .sim2 file that VisIt uses to connect. Only do it * on processor 0. */ if(sim.par_rank == 0) { VisItInitializeSocketAndDumpSimFile("sim4p", "Parallel C prototype simulation connects to VisIt", "/path/to/where/sim/was/started", NULL, NULL, NULL); } /* Read input problem setup, geometry, data. */ read_input_deck(&sim); /* Call the main loop. */ mainloop(&sim); simulation_data_dtor(&sim); #ifdef PARALLEL MPI_Finalize(); #endif return 0; }
int main(int argc, char **argv) { simulation_data sim; simulation_data_ctor(&sim); SimulationArguments(argc, argv); /* Initialize envuronment variables. */ VisItSetupEnvironment(); /* Write out .sim2 file that VisIt uses to connect. */ VisItInitializeSocketAndDumpSimFile("sim6", "Demonstrates setting simulation state in metadata", "/path/to/where/sim/was/started", NULL, NULL, NULL); /* Read input problem setup, geometry, data. */ read_input_deck(&sim); /* Call the main loop. */ mainloop(&sim); simulation_data_dtor(&sim); return 0; }
int main(int argc, char **argv) { char *env = NULL; int i = 0; simulation_data sim; simulation_data_ctor(&sim); #ifdef PARALLEL /* Initialize MPI */ MPI_Init(&argc, &argv); /* Create a new communicator. */ if (MPI_Comm_dup(MPI_COMM_WORLD, &sim.par_comm) != MPI_SUCCESS) sim.par_comm = MPI_COMM_WORLD; MPI_Comm_rank (sim.par_comm, &sim.par_rank); MPI_Comm_size (sim.par_comm, &sim.par_size); #endif /* Initialize environment variables. */ SimulationArguments(argc, argv); #ifdef PARALLEL /* Install callback functions for global communication. */ VisItSetBroadcastIntFunction2(visit_broadcast_int_callback, (void*)&sim); VisItSetBroadcastStringFunction2(visit_broadcast_string_callback, (void*)&sim); /* Tell libsim whether the simulation is parallel. */ VisItSetParallel(sim.par_size > 1); VisItSetParallelRank(sim.par_rank); /* Tell libsim which communicator to use. You must pass the address of * an MPI_Comm object. */ VisItSetMPICommunicator((void *)&sim.par_comm); #endif /* Only read the environment on rank 0. This could happen before MPI_Init if * we are using an MPI that does not like to let us spawn processes but we * would not know our processor rank. */ if(sim.par_rank == 0) env = VisItGetEnvironment(); /* Pass the environment to all other processors collectively. */ VisItSetupEnvironment2(env); if(env != NULL) free(env); for(i = 1; i < argc; ++i) { if(strcmp(argv[i], "-echo") == 0) sim.echo = 1; } /* Write out .sim file that VisIt uses to connect. Only do it * on processor 0. */ /* CHANGE 3 */ if(sim.par_rank == 0) { /* Write out .sim file that VisIt uses to connect. */ VisItInitializeSocketAndDumpSimFile( #ifdef PARALLEL "ucdcurve_par", #else "ucdcurve", #endif "Demonstrates 1D unstructured mesh", "/path/to/where/sim/was/started", NULL, NULL, SimulationFilename()); } /* Read input problem setup, geometry, data.*/ read_input_deck(); /* Call the main loop. */ mainloop(&sim); simulation_data_dtor(&sim); #ifdef PARALLEL MPI_Finalize(); #endif return 0; }
void mainloop(void) { int blocking, visitstate, err = 0; /* Set up some simulation data. */ simulation_data sim; simulation_data_ctor(&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); VisItSetGetMesh(SimGetMesh, (void*)&sim); VisItSetGetDomainNesting(SimGetDomainNesting, (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); /* Clean up */ simulation_data_dtor(&sim); }
int main(int argc, char **argv) { int i,nx = 50, ny = 50,nz = 50, batch = 0, echo = 0; char *env = NULL; simulation_data sim; #ifdef PARALLEL /* Initialize MPI */ MPI_Init(&argc, &argv); #endif /* Check for command line arguments. */ for(i = 1; i < argc; ++i) { if((i+1) < argc) { if(strcmp(argv[i], "-nx") == 0) { sscanf(argv[i+1], "%d", &nx); i++; } else if(strcmp(argv[i], "-ny") == 0) { sscanf(argv[i+1], "%d", &ny); i++; } else if(strcmp(argv[i], "-nz") == 0) { sscanf(argv[i+1], "%d", &nz); i++; } else if(strcmp(argv[i], "-dir") == 0) { /* Specify the path to VisIt installation. */ VisItSetDirectory(argv[i+1]); i++; } } else if(strcmp(argv[i], "-batch") == 0) { batch = 1; } else if(strcmp(argv[i], "-echo") == 0) { echo = 1; } } /* Initialize environment variables. */ SimulationArguments(argc, argv); simulation_data_ctor(&sim, nx, ny, nz); sim.echo = echo; #ifdef PARALLEL /* Create a new communicator. */ if (MPI_Comm_dup(MPI_COMM_WORLD, &sim.par_comm) != MPI_SUCCESS) sim.par_comm = MPI_COMM_WORLD; MPI_Comm_rank (sim.par_comm, &sim.par_rank); MPI_Comm_size (sim.par_comm, &sim.par_size); /* Install callback functions for global communication. */ VisItSetBroadcastIntFunction2(SimBroadcastInt, (void*)&sim); VisItSetBroadcastStringFunction2(SimBroadcastString, (void*)&sim); /* Tell libsim whether the simulation is parallel. */ VisItSetParallel(sim.par_size > 1); VisItSetParallelRank(sim.par_rank); /* Tell libsim which communicator to use. You must pass the address of * an MPI_Comm object. */ VisItSetMPICommunicator((void *)&sim.par_comm); #endif /* Only read the environment on rank 0. This could happen before MPI_Init if * we are using an MPI that does not like to let us spawn processes but we * would not know our processor rank. */ if(sim.par_rank == 0) env = VisItGetEnvironment(); /* Pass the environment to all other processors collectively. */ VisItSetupEnvironment2(env); if(env != NULL) free(env); /* Call the main loop. */ if(batch) mainloop_batch(&sim); else { if(sim.par_rank == 0) { /* Write out .sim file that VisIt uses to connect. */ VisItInitializeSocketAndDumpSimFile( #ifdef PARALLEL "zerocopy_par", #else "zerocopy", #endif "Demonstrates VariableData setArrayData functions for zero copy", "/path/to/where/sim/was/started", NULL, NULL, SimulationFilename()); } mainloop_interactive(&sim); } if(VisItIsConnected()) VisItDisconnect(); simulation_data_dtor(&sim); #ifdef PARALLEL MPI_Finalize(); #endif return 0; }