Skip to content
Snippets Groups Projects
gridSampleDef.c 1.23 KiB
///////////////////////////////////////////////////////////////////////  
// Author: Jeff Comer <jcomer2@illinois.edu>

#include <cstdio>
#include <cstdlib>

#include "useful.h"
#include "BaseGrid.h"
#include "OverlordGrid.h"

using namespace std;

int main(int argc, char* argv[]) {
  if ( argc != 4 ) {
    printf("Usage: %s systemDefinitionFile spacing outputFile\n", argv[0]);
    printf("You entered %i arguments.\n", argc-1);
    return 0;
  }
  const char* systemDefFile = argv[1];
  const float spacing = strtod(argv[2], NULL);

  String rootGrid = OverlordGrid::readDefFirst(systemDefFile);
  OverlordGrid* over = new OverlordGrid(rootGrid.val());
  int count = over->readDef(systemDefFile);
  printf("Found %d unique grids.\n", over->getUniqueGridNum());
  printf("Linked %d subgrids.\n", count);

  over->writeSubgrids("subgrid.txt");

  Matrix3 box(over->getBox());
  Vector3 org(over->getOrigin());
  BaseGrid sample(box, org, spacing);
  const int n = sample.length();

  printf("Sampling...\n");
  for (int i = 0; i < n; i++) {
    Vector3 r = sample.getPosition(i);
    float v = over->interpolatePotential(r);
    //Vector3 f = over->interpolateForce(r);
    sample.setValue(i, v);
  }
  sample.write(argv[argc-1]);

  delete over;
  return 0;
}