xref: /phasta/phastaIO/phastaIO.h (revision 3872e96374f1f7d8d0bdb19c1def6dbca0d2710d)
159599516SKenneth E. Jansen /*  Primary interface for the Phasta Binary read and write routines these*/
259599516SKenneth E. Jansen /*  functions are 'C' callable.( All arguments have been kept as pointers to*/
359599516SKenneth E. Jansen /*  facilitate calling from Fortran )*/
459599516SKenneth E. Jansen /*  Anil Kumar Karanam  Spring 2003*/
559599516SKenneth E. Jansen #ifndef _PHASTAIO_H_
659599516SKenneth E. Jansen #define _PHASTAIO_H_
759599516SKenneth E. Jansen 
859599516SKenneth E. Jansen #include <FCMangle.h>
959599516SKenneth E. Jansen #include <mpi.h>
1059599516SKenneth E. Jansen 
1159599516SKenneth E. Jansen #ifdef intel
1259599516SKenneth E. Jansen #define ios_base ios
1359599516SKenneth E. Jansen #endif
1459599516SKenneth E. Jansen 
1559599516SKenneth E. Jansen #define queryphmpiio FortranCInterface_GLOBAL_(queryphmpiio,QUERYPHMPIIO)
1659599516SKenneth E. Jansen #define initphmpiio FortranCInterface_GLOBAL_(initphmpiio,INITPHMPIIO)
1759599516SKenneth E. Jansen #define initphmpiiosub FortranCInterface_GLOBAL_(initphmpiiosub,INITPHMPIIOSUB)
1859599516SKenneth E. Jansen #define finalizephmpiio FortranCInterface_GLOBAL_(finalizephmpiio,FINALIZEPHMPIIO)
1959599516SKenneth E. Jansen 
2059599516SKenneth E. Jansen #define openfile FortranCInterface_GLOBAL_(openfile, OPENFILE)
2159599516SKenneth E. Jansen #define closefile FortranCInterface_GLOBAL_(closefile, CLOSEFILE)
2259599516SKenneth E. Jansen #define readheader FortranCInterface_GLOBAL_(readheader, READHEADER)
2359599516SKenneth E. Jansen #define readdatablock FortranCInterface_GLOBAL_(readdatablock, READDATABLOCK)
2459599516SKenneth E. Jansen #define writeheader FortranCInterface_GLOBAL_(writeheader, WRITEHEADER)
2559599516SKenneth E. Jansen #define writedatablock FortranCInterface_GLOBAL_(writedatablock, WRITEDATABLOCK)
2659599516SKenneth E. Jansen #define writestring FortranCInterface_GLOBAL_(writestring, WRITESTRING)
2759599516SKenneth E. Jansen #define togglestrictmode FortranCInterface_GLOBAL_(togglestrictmode, TOGGLESTRICTMODE)
2859599516SKenneth E. Jansen #define SwapArrayByteOrder FortranCInterface_GLOBAL_(swaparraybyteorder, SWAPARRAYBYTEORDER)
2959599516SKenneth E. Jansen #define isLittleEndian FortranCInterface_GLOBAL_(islittleendian, ISLITTLEENDIAN)
3059599516SKenneth E. Jansen 
3159599516SKenneth E. Jansen 
3259599516SKenneth E. Jansen #if defined (__cplusplus)
3359599516SKenneth E. Jansen extern "C" {
3459599516SKenneth E. Jansen #endif
3559599516SKenneth E. Jansen 
3659599516SKenneth E. Jansen   void mem_alloc( void* p, char* type, int size );
3759599516SKenneth E. Jansen 
3859599516SKenneth E. Jansen   void
3959599516SKenneth E. Jansen   queryphmpiio( const char filename[],
4059599516SKenneth E. Jansen 		 int *nfields,
4159599516SKenneth E. Jansen 		 int *nppf );
4259599516SKenneth E. Jansen 
4359599516SKenneth E. Jansen   int
4459599516SKenneth E. Jansen   initphmpiio( int *nfields,
4559599516SKenneth E. Jansen 		int *nppf,
4659599516SKenneth E. Jansen 		int *nfiles,
4759599516SKenneth E. Jansen 		int *filehandle,
4859599516SKenneth E. Jansen 		const char mode[] );
4959599516SKenneth E. Jansen   int
5059599516SKenneth E. Jansen   initphmpiiosub( int *nfields,
5159599516SKenneth E. Jansen 		  int *nppf,
5259599516SKenneth E. Jansen 		  int *nfiles,
5359599516SKenneth E. Jansen 		  int *filehandle,
5459599516SKenneth E. Jansen 		  const char mode[],
5559599516SKenneth E. Jansen                   MPI_Comm my_local_comm );
5659599516SKenneth E. Jansen 
5759599516SKenneth E. Jansen   void
5859599516SKenneth E. Jansen   finalizephmpiio( int *fileDescriptor );
5959599516SKenneth E. Jansen 
6059599516SKenneth E. Jansen     void
6159599516SKenneth E. Jansen     SwapArrayByteOrder( void* array,
6259599516SKenneth E. Jansen                          int   nbytes,
6359599516SKenneth E. Jansen                          int   nItems ) ;
6459599516SKenneth E. Jansen     void
6559599516SKenneth E. Jansen 
6659599516SKenneth E. Jansen     openfile( const char filename[],
6759599516SKenneth E. Jansen                const char mode[],
6859599516SKenneth E. Jansen                int* fileDescriptor );
6959599516SKenneth E. Jansen 
7059599516SKenneth E. Jansen     void
7159599516SKenneth E. Jansen     closefile( int* fileDescriptor,
7259599516SKenneth E. Jansen                 const char mode[] );
7359599516SKenneth E. Jansen 
74*3872e963SCameron Smith 
75*3872e963SCameron Smith     int
76*3872e963SCameron Smith     readHeader( FILE*       fileObject,
77*3872e963SCameron Smith                 const char  phrase[],
78*3872e963SCameron Smith                 int*        params,
79*3872e963SCameron Smith                 int         numParams,
80*3872e963SCameron Smith                 const char   iotype[] );
81*3872e963SCameron Smith 
8259599516SKenneth E. Jansen     void
8359599516SKenneth E. Jansen     readheader( int*   fileDescriptor,
8459599516SKenneth E. Jansen                  const char  keyphrase[],
8559599516SKenneth E. Jansen                  void*  valueArray,
8659599516SKenneth E. Jansen                  int*   nItems,
8759599516SKenneth E. Jansen                  const char   datatype[],
8859599516SKenneth E. Jansen                  const char   iotype[] );
8959599516SKenneth E. Jansen 
9059599516SKenneth E. Jansen     void
9159599516SKenneth E. Jansen     writeheader( const int*  fileDescriptor,
9259599516SKenneth E. Jansen                   const char keyphrase[],
9359599516SKenneth E. Jansen                   const void* valueArray,
9459599516SKenneth E. Jansen                   const int*  nItems,
9559599516SKenneth E. Jansen                   const int*  ndataItems,
9659599516SKenneth E. Jansen                   const char  datatype[],
9759599516SKenneth E. Jansen                   const char  iotype[] );
9859599516SKenneth E. Jansen 
9959599516SKenneth E. Jansen     void
10059599516SKenneth E. Jansen     readdatablock( int*  fileDescriptor,
10159599516SKenneth E. Jansen                     const char keyphrase[],
10259599516SKenneth E. Jansen                     void* valueArray,
10359599516SKenneth E. Jansen                     int*  nItems,
10459599516SKenneth E. Jansen                     const char  datatype[],
10559599516SKenneth E. Jansen                     const char  iotype[] );
10659599516SKenneth E. Jansen 
10759599516SKenneth E. Jansen 
10859599516SKenneth E. Jansen     void
10959599516SKenneth E. Jansen     writedatablock( const int*   fileDescriptor,
11059599516SKenneth E. Jansen                      const char  keyphrase[],
11159599516SKenneth E. Jansen                      const void*  valueArray,
11259599516SKenneth E. Jansen                      const int*   nItems,
11359599516SKenneth E. Jansen                      const char   datatype[],
11459599516SKenneth E. Jansen                      const char   iotype[]  );
11559599516SKenneth E. Jansen 
11659599516SKenneth E. Jansen     void
11759599516SKenneth E. Jansen     writestring( int* fileDescriptor,
11859599516SKenneth E. Jansen                   const char inString[] );
11959599516SKenneth E. Jansen 
12059599516SKenneth E. Jansen     void
12159599516SKenneth E. Jansen     togglestrictmode( );
12259599516SKenneth E. Jansen 
12359599516SKenneth E. Jansen   int
12459599516SKenneth E. Jansen   isLittleEndian( ) ;
12559599516SKenneth E. Jansen 
12659599516SKenneth E. Jansen   int computeColor( int myrank, int numprocs, int nfiles);
12759599516SKenneth E. Jansen 
12859599516SKenneth E. Jansen #ifdef __cplusplus
12908d2ac07SCameron Smith } /* end of extern "C".*/
13059599516SKenneth E. Jansen 
13159599516SKenneth E. Jansen #include <string>
13259599516SKenneth E. Jansen 
13359599516SKenneth E. Jansen namespace PHASTA {
13459599516SKenneth E. Jansen template<class T>
13559599516SKenneth E. Jansen struct PhastaIO_traits;
13659599516SKenneth E. Jansen 
13759599516SKenneth E. Jansen template<>
13859599516SKenneth E. Jansen struct PhastaIO_traits<int> {
13959599516SKenneth E. Jansen   static const char* const type_string;
14059599516SKenneth E. Jansen };
14159599516SKenneth E. Jansen 
14259599516SKenneth E. Jansen 
14359599516SKenneth E. Jansen template<>
14459599516SKenneth E. Jansen struct PhastaIO_traits<double> {
14559599516SKenneth E. Jansen   static const char* const type_string;
14659599516SKenneth E. Jansen };
14759599516SKenneth E. Jansen 
14859599516SKenneth E. Jansen 
14959599516SKenneth E. Jansen template<class T>
15059599516SKenneth E. Jansen void
15159599516SKenneth E. Jansen write_data_block( const int   fileDescriptor,
15259599516SKenneth E. Jansen 		  const std::string keyphrase,
15359599516SKenneth E. Jansen 		  const T* const  valueArray,
15459599516SKenneth E. Jansen 		  const int   nItems,
15559599516SKenneth E. Jansen 		  const bool inBinary = false) {
15659599516SKenneth E. Jansen   writedatablock(&fileDescriptor,
15759599516SKenneth E. Jansen 		  keyphrase.c_str(),
15859599516SKenneth E. Jansen 		  reinterpret_cast<const void*>(valueArray),
15959599516SKenneth E. Jansen 		  &nItems,
16059599516SKenneth E. Jansen 		  PhastaIO_traits<T>::type_string,
16159599516SKenneth E. Jansen 		  inBinary ? "binary" : "text");
16259599516SKenneth E. Jansen 
16359599516SKenneth E. Jansen }
16459599516SKenneth E. Jansen template<class T>
16559599516SKenneth E. Jansen void
16659599516SKenneth E. Jansen write_header( const int  fileDescriptor,
16759599516SKenneth E. Jansen 		 const std::string& keyphrase,
16859599516SKenneth E. Jansen 		 const T* valueArray,
16959599516SKenneth E. Jansen 		 const int  nItems,
17059599516SKenneth E. Jansen 		 const int  nDataItems,
17159599516SKenneth E. Jansen 		 const bool inBinary = false) {
17259599516SKenneth E. Jansen       writeheader(&fileDescriptor,
17359599516SKenneth E. Jansen 		   keyphrase.c_str(),
17459599516SKenneth E. Jansen 		   reinterpret_cast<const void*>(valueArray),
17559599516SKenneth E. Jansen 		   &nItems,
17659599516SKenneth E. Jansen 		   &nDataItems,
17759599516SKenneth E. Jansen 		   PhastaIO_traits<T>::type_string,
17859599516SKenneth E. Jansen 		   inBinary ? "binary" : "text");
17959599516SKenneth E. Jansen }
18059599516SKenneth E. Jansen 
18159599516SKenneth E. Jansen 
18208d2ac07SCameron Smith } /* namespace PHASTA */
18359599516SKenneth E. Jansen 
18408d2ac07SCameron Smith #endif /* __cplusplus */
18559599516SKenneth E. Jansen 
18608d2ac07SCameron Smith #endif /* _PHASTAIO_H_ */
187