Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
genstar.C File Reference
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <map>
#include <list>
#include <cassert>
#include <cstdlib>
#include "GEM.H"
#include "FluRegion.H"
#include "mpi.h"
#include "roccom.h"
Include dependency graph for genstar.C:

Go to the source code of this file.

Functions

 COM_EXTERN_MODULE (Rocout)
 
int main (int argc, char *argv[])
 

Function Documentation

COM_EXTERN_MODULE ( Rocout  )
int main ( int  argc,
char *  argv[] 
)

Definition at line 49 of file genstar.C.

References FluRegion::_borders, FluRegion::_patches, COM_finalize(), COM_init(), FluRegion::CreateRegionMapFile(), GEM_Partition::debug(), GEM_Partition::DestroyWindows(), GEM_Partition::InitRoccomWindows(), MPI_COMM_WORLD, n, rank, FluRegion::ReadRegionASCII(), FluRegion::RegisterFluSurfaceMesh(), FluRegion::RegisterSurfaceSoln(), FluRegion::RegisterVolumeSoln(), FluRegion::WriteFluGridASCII(), FluRegion::WriteFluNative(), FluRegion::WriteFluSolnASCII(), GEM_Partition::WriteRocstar(), and y.

50 {
51  if(argc < 4){
52  cerr << "genstar <source_prefix> <target_prefix> <npartitions>" << endl;
53  return(1);
54  }
55  int nproc = 1;
56  int rank = 0;
57  //#ifdef _TRAIL_MPI_
58  MPI_Init(&argc,&argv);
59  MPI_Comm_size(MPI_COMM_WORLD,&nproc);
60  MPI_Comm_rank(MPI_COMM_WORLD,&rank);
61  //#ifdef _ROCSTAR_X_
62  COM_init(&argc,&argv);
63  //#endif
64  //#endif
65  bool verbose = true;
66  string source_prefix(argv[1]);
67  string targ_prefix(argv[2]);
68  unsigned int npart;
69  string snpart(argv[3]);
70  istringstream Istr(snpart);
71  Istr >> npart;
72  unsigned int N;
73  int R;
74  unsigned int first;
75 
76  if(npart < (unsigned int)nproc){
77  N = 1;
78  first = rank;
79  }
80  else{
81  N = npart/nproc;
82  R = npart - (nproc*N);
83  if(rank < R){
84  first = rank * N + rank;
85  N++;
86  }
87  else
88  first = rank * N + R;
89  }
90  if(!rank)
91  cout << rank << ": Processing " << npart << " partitions." << endl;
92  if(verbose)
93  cout << rank << ": Local partitions: (" << N << "," << first
94  << ")" << endl;
95  int part_index = first;
96  unsigned int n = 0;
97  while(n < N){
98  if(!rank && verbose)
99  cout << "Processing " << part_index++ << "." << endl;
100  FluRegion fluregion;
101  fluregion.debug();
102  bool unsteady = true;
103  double t = 0.0;
104  unsigned int niter = 0;
105  fluregion.ReadRegionASCII(source_prefix,part_index,niter,t,unsteady);
106  fluregion.WriteFluNative(targ_prefix);
107  fluregion.WriteFluGridASCII(targ_prefix,t,unsteady);
108  fluregion.WriteFluSolnASCII(targ_prefix,niter,t,unsteady);
109  fluregion.CreateRegionMapFile(targ_prefix,npart,npart);
110  //#ifdef _ROCSTAR_X_
111  fluregion.InitRoccomWindows("flu",fluregion._borders,fluregion._patches);
112  fluregion.RegisterFluSurfaceMesh();
113  fluregion.RegisterVolumeSoln(true);
114  fluregion.RegisterSurfaceSoln(false);
115  fluregion.InitDone();
116  string::size_type y = targ_prefix.find_last_of("/");
117  string targ_dir = targ_prefix.substr(0,y);
118  fluregion.WriteRocstar(targ_dir);
119  fluregion.DestroyWindows();
120  //#endif
121 
122  n++;
123  }
124  //#ifdef _TRAIL_MPI_
125  MPI_Finalize();
126  //#endif
127 
128  //#ifdef _ROCSTAR_X_
129  COM_finalize();
130  //#endif
131  return(0);
132 }
here we put it at the!beginning of the common block The point to point and collective!routines know about but MPI_TYPE_STRUCT as yet does not!MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE are similar objects!Until the underlying MPI library implements the C version of these are declared as arrays of MPI_STATUS_SIZE!The types and are OPTIONAL!Their values are zero if they are not available Note that!using these reduces the portability of MPI_IO INTEGER MPI_BOTTOM INTEGER MPI_DOUBLE_PRECISION INTEGER MPI_LOGICAL INTEGER MPI_2REAL INTEGER MPI_2DOUBLE_COMPLEX INTEGER MPI_LB INTEGER MPI_WTIME_IS_GLOBAL INTEGER MPI_COMM_WORLD
bool InitRoccomWindows(const std::string &wname)
Definition: GEM.C:685
bool WriteFluSolnASCII(const std::string &p="", unsigned int=0, double=0.0, bool=true)
Definition: FluRegion.C:1298
bool CreateRegionMapFile(const string &p="", unsigned int=0, unsigned int=0)
Definition: FluRegion.C:328
void int int REAL REAL * y
Definition: read.cpp:74
bool ReadRegionASCII(const string &p="", unsigned int=0, unsigned int=0, double=0.0, bool=true)
Definition: FluRegion.C:1577
vector< FluBorder > _borders
Definition: FluRegion.H:133
bool WriteRocstar(const std::string &, double t=0.0)
Definition: GEM.C:601
void COM_finalize()
Definition: roccom_c++.h:59
bool DestroyWindows()
Definition: GEM.C:584
bool RegisterVolumeSoln(bool)
Definition: FluRegion.C:1689
const NT & n
bool WriteFluNative(const string &p="")
Definition: FluRegion.C:114
vector< FluPatch > _patches
Definition: FluRegion.H:132
bool debug(bool s=true)
Definition: GEM.C:1266
bool RegisterSurfaceSoln(bool)
Definition: FluRegion.C:1742
void COM_init(int *argc, char ***argv)
Definition: roccom_c++.h:57
static int rank
Definition: advectest.C:66
bool WriteFluGridASCII(const string &pre="", double=0.0, bool=true)
Definition: FluRegion.C:1085
bool RegisterFluSurfaceMesh()
Definition: FluRegion.C:1783

Here is the call graph for this function: