Field3D
main.cpp File Reference
#include <iostream>
#include <string>
#include <Field3D/DenseField.h>
#include <Field3D/MACField.h>
#include <Field3D/SparseField.h>
#include <Field3D/InitIO.h>
#include <Field3D/Field3DFile.h>

Go to the source code of this file.

Functions

int main (int argc, char **argv)
template<typename Data_T >
void readLayersAndPrintInfo (Field3DInputFile &in, const std::string &name)

Function Documentation

template<typename Data_T >
void readLayersAndPrintInfo ( Field3DInputFile in,
const std::string &  name 
)

Definition at line 65 of file main.cpp.

References field_dynamic_cast(), Field3DInputFile::readScalarLayers(), and Field3DInputFile::readVectorLayers().

{
  typedef FIELD3D_VEC3_T<Data_T> VecData_T;
  typedef typename Field<Data_T>::Vec SFieldList;
  typedef typename Field<FIELD3D_VEC3_T<Data_T> >::Vec VFieldList;

  // Note that both scalar and vector calls take the scalar type as argument
  SFieldList sFields = in.readScalarLayers<Data_T>(name);
  VFieldList vFields = in.readVectorLayers<Data_T>(name);

  // Print info about the found fields ---

  if (sFields.size() > 0) {

    for (typename SFieldList::const_iterator i = sFields.begin(); 
         i != sFields.end(); ++i) {

      if (field_dynamic_cast<DenseField<Data_T> >(*i)) {
        cout << "  DenseField" << endl;
      }
      else if (field_dynamic_cast<SparseField<Data_T> >(*i)) {
        cout << "  SparseField" << endl;
      }

      cout << "    Name:      " << (**i).name << endl;
      cout << "    Attribute: " << (**i).attribute << endl;

    }

  } else {
    cout << "  Found no scalar fields" << endl;
  }

  if (vFields.size() > 0) {

    for (typename VFieldList::const_iterator i = vFields.begin(); 
         i != vFields.end(); ++i) {

      if (field_dynamic_cast<DenseField<VecData_T> >(*i)) {
        cout << "  DenseField" << endl;
      }
      else if (field_dynamic_cast<SparseField<VecData_T> >(*i)) {
        cout << "  SparseField" << endl;
      }
      else if (field_dynamic_cast<MACField<VecData_T> >(*i)) {
        cout << "  MACField" << endl;
      }

      cout << "    Name:      " << (**i).name << endl;
      cout << "    Attribute: " << (**i).attribute << endl;

    }

  } else {
    cout << "  Found no vector fields" << endl;
  }

}
int main ( int  argc,
char **  argv 
)

Definition at line 126 of file main.cpp.

References half, initIO(), and Field3DInputFile::open().

{
  typedef Field3D::half half;

  // Call initIO() to initialize standard I/O methods and load plugins ---

  Field3D::initIO();

  // Process command line ---

  if (argc < 2) {
    cout << "Usage: read <file> [name]" << endl;
    return 1;
  }

  string filename = string(argv[1]);
  string name;

  if (argc == 3) {
    name = string(argv[2]);
  }

  // Load file ---

  Field3DInputFile in;
  if (!in.open(filename)) {
    cout << "Aborting because of errors" << endl;
    return 1;
  }

  cout << "Reading <half> layers" << endl;
  readLayersAndPrintInfo<half>(in, name);

  cout << "Reading <float> layers" << endl;
  readLayersAndPrintInfo<float>(in, name);

  cout << "Reading <double> layers" << endl;
  readLayersAndPrintInfo<double>(in, name);

}