Field3D
main.cpp File Reference
#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <boost/program_options.hpp>
#include <boost/foreach.hpp>
#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

template<typename Data_T >
void createConcreteScalarField (const Options &options)
template<typename Data_T >
void createConcreteVectorField (const Options &options)
void createField (const Options &options)
int main (int argc, char **argv)
Options parseOptions (int argc, char **argv)
void setCommon (const FieldRes::Ptr field, const Options &options)
void writeGlobalMetadata (Field3DOutputFile &out)

Function Documentation

Options parseOptions ( int  argc,
char **  argv 
)
void createField ( const Options &  options)

Definition at line 198 of file main.cpp.

Referenced by main().

{
  if (options.isVectorField) {
    switch (options.bits) {
    case 64:
      createConcreteVectorField<double>(options);
      break;
    case 32:
      createConcreteVectorField<float>(options);
      break;
    case 16:
    default:
      createConcreteVectorField<Field3D::half>(options);
      break;
    }
  } else {
    switch (options.bits) {
    case 64:
      createConcreteScalarField<double>(options);
      break;
    case 32:
      createConcreteScalarField<float>(options);
      break;
    case 16:
    default:
      createConcreteScalarField<Field3D::half>(options);
      break;
    }
  }
}
template<typename Data_T >
void createConcreteScalarField ( const Options &  options)

Definition at line 244 of file main.cpp.

References Field3DOutputFile::create(), setCommon(), writeGlobalMetadata(), and Field3DOutputFile::writeScalarLayer().

{
  typedef typename ResizableField<Data_T>::Ptr Ptr;
  Ptr field;

  if (options.fieldType == "SparseField") {
    field = Ptr(new SparseField<Data_T>);
  } else {
    field = Ptr(new DenseField<Data_T>);
  }

  field->setSize(options.resolution);
  setCommon(field, options);

  Field3DOutputFile out;
  out.create(options.filename);
  out.writeScalarLayer<Data_T>(field);
  writeGlobalMetadata(out);
}
template<typename Data_T >
void createConcreteVectorField ( const Options &  options)

Definition at line 267 of file main.cpp.

References Field3DOutputFile::create(), setCommon(), writeGlobalMetadata(), and Field3DOutputFile::writeVectorLayer().

{
  typedef typename ResizableField<FIELD3D_VEC3_T<Data_T> >::Ptr Ptr;
  Ptr field;

  if (options.fieldType == "SparseField") {
    field = Ptr(new SparseField<FIELD3D_VEC3_T<Data_T> >);
  } else if (options.fieldType == "MACField") {
    field = Ptr(new MACField<FIELD3D_VEC3_T<Data_T> >);
  } else {
    field = Ptr(new DenseField<FIELD3D_VEC3_T<Data_T> >); 
  }

  field->setSize(options.resolution);  
  setCommon(field, options);

  Field3DOutputFile out;
  out.create(options.filename);
  out.writeVectorLayer<Data_T>(field);
  writeGlobalMetadata(out);
}
void setCommon ( const FieldRes::Ptr  field,
const Options &  options 
)

Definition at line 291 of file main.cpp.

Referenced by createConcreteScalarField(), and createConcreteVectorField().

{
  field->name = options.name;
  field->attribute = options.attribute; 
  field->metadata().setFloatMetadata("float_metadata", 1.0f);
  field->metadata().setVecFloatMetadata("vec_float_metadata", V3f(1.0f));
  field->metadata().setIntMetadata("int_metadata", 1);
  field->metadata().setVecIntMetadata("vec_int_metadata", V3i(1));
  field->metadata().setStrMetadata("str_metadata", "string");

  M44d localToWorld;
  localToWorld.setScale(options.resolution);
  localToWorld *= M44d().setTranslation(V3d(1.0, 2.0, 3.0));

  MatrixFieldMapping::Ptr mapping(new MatrixFieldMapping);
  mapping->setLocalToWorld(localToWorld);
  field->setMapping(mapping);
}
int main ( int  argc,
char **  argv 
)

Definition at line 99 of file main.cpp.

References createField(), initIO(), and parseOptions().

{
  Field3D::initIO();

  Options options = parseOptions(argc, argv);

  createField(options);
}