コード例 #1
0
void     PrintVectorAll(
   char    *filename,
   Vector  *v)
{
   amps_File  file;

   int   g;
   Grid *grid;


   if ((file = amps_Fopen(filename, "w")) == NULL)
   {
      amps_Printf("Error: can't open output file %s\n", filename);
      exit(1);
   }

   amps_Fprintf(file, "===================================================\n");

   grid = VectorGrid(v);

   for(g = 0; g < GridNumSubgrids(grid); g++)
   {
      amps_Fprintf(file, "Subvector Number: %d\n", g);

      PrintSubvectorAll(file, VectorSubvector(v, g));
   }

   amps_Fprintf(file, "===================================================\n");

   fflush(file);
   amps_Fclose(file);
}
コード例 #2
0
void PrintBCPressureData(
   BCPressureData *bc_pressure_data)
{
   amps_Printf("Pressure BC Information\n");
   if ( BCPressureDataNumPatches(bc_pressure_data) == -1 )
   {
      amps_Printf("Pressure BCs have not been setup.\n");
   }
   else if ( BCPressureDataNumPatches(bc_pressure_data) == 0 )
   {
      amps_Printf("No Pressure BCs.\n");
   }
   else
   {
      amps_Printf("Pressure BCs exist.\n");
   }
}
コード例 #3
0
void PrintTimeCycleData(
   TimeCycleData *time_cycle_data)
{
   int  cycle_number, interval_number;

   amps_Printf("Time Cycle Information");

   amps_Printf(" Number Of Cycles = %d\n", TimeCycleDataNumberOfCycles(time_cycle_data));

   amps_Printf(" Interval Divisions :\n");
   for(cycle_number = 0; cycle_number < TimeCycleDataNumberOfCycles(time_cycle_data); cycle_number++)
   {
      amps_Printf("  id[%02d] = %d\n", cycle_number, TimeCycleDataIntervalDivision(time_cycle_data, cycle_number));
   }

   amps_Printf(" Interval Data\n");
   for(cycle_number = 0; cycle_number < TimeCycleDataNumberOfCycles(time_cycle_data); cycle_number++)
   {
      for(interval_number = 0; interval_number < TimeCycleDataIntervalDivision(time_cycle_data, cycle_number); interval_number++)
      {
         amps_Printf("  d[%02d][%03d] = %d\n", cycle_number, interval_number, TimeCycleDataInterval(time_cycle_data, cycle_number, interval_number));
      }
   }

   amps_Printf(" Repeat Counts :\n");
   for(cycle_number = 0; cycle_number < TimeCycleDataNumberOfCycles(time_cycle_data); cycle_number++)
   {
      amps_Printf("  r[%02d] = %d\n", cycle_number, TimeCycleDataRepeatCount(time_cycle_data, cycle_number));
   }

   amps_Printf(" Cycle Lengths :\n");
   for(cycle_number = 0; cycle_number < TimeCycleDataNumberOfCycles(time_cycle_data); cycle_number++)
   {
      amps_Printf("  l[%02d] = %d\n", cycle_number, TimeCycleDataCycleLength(time_cycle_data, cycle_number));
   }
}
コード例 #4
0
ファイル: wrf_parflow.c プロジェクト: cvoter/Parflow
void wrfparflowinit_(char *input_file)
{
  Grid         *grid;
  char *seperators = " \n";
  /* Fortran char array is not NULL terminated */
  char *filename = strtok(input_file, seperators);

  /*-----------------------------------------------------------------------
   * Initialize AMPS from existing MPI state
   *-----------------------------------------------------------------------*/
  if (amps_EmbeddedInit())
  {
    amps_Printf("Error: amps_EmbeddedInit initalization failed\n");
    exit(1);
  }

  /*-----------------------------------------------------------------------
   * Set up globals structure
   *-----------------------------------------------------------------------*/
  NewGlobals(filename);

  /*-----------------------------------------------------------------------
   * Read the Users Input Deck
   *-----------------------------------------------------------------------*/
  amps_ThreadLocal(input_database) = IDB_NewDB(GlobalsInFileName);

  /*-----------------------------------------------------------------------
   * Setup log printing
   *-----------------------------------------------------------------------*/
  NewLogging();

  /*-----------------------------------------------------------------------
   * Setup timing table
   *-----------------------------------------------------------------------*/
  NewTiming();

  /* End of main includes */

  /* Begin of Solver includes */

  GlobalsNumProcsX = GetIntDefault("Process.Topology.P", 1);
  GlobalsNumProcsY = GetIntDefault("Process.Topology.Q", 1);
  GlobalsNumProcsZ = GetIntDefault("Process.Topology.R", 1);

  GlobalsNumProcs = amps_Size(amps_CommWorld);

  GlobalsBackground = ReadBackground();

  GlobalsUserGrid = ReadUserGrid();

  SetBackgroundBounds(GlobalsBackground, GlobalsUserGrid);

  GlobalsMaxRefLevel = 0;

  amps_ThreadLocal(Solver_module) = PFModuleNewModuleType(SolverImpesNewPublicXtraInvoke, SolverRichards, ("Solver"));

  amps_ThreadLocal(solver) = PFModuleNewInstance(amps_ThreadLocal(Solver_module), ());

  /* End of solver includes */

  SetupRichards(amps_ThreadLocal(solver));

  /* Create the flow grid */
  grid = CreateGrid(GlobalsUserGrid);

  /* Create the PF vector holding flux */
  amps_ThreadLocal(evap_trans) = NewVectorType(grid, 1, 1, vector_cell_centered);
  InitVectorAll(amps_ThreadLocal(evap_trans), 0.0);
}