Something went wrong on our end
TabulatedAngle.cu 1.79 KiB
// tabulatedAngle.cu
// Authors: Justin Dufresne and Terrance Howard, 2013
#include "TabulatedAngle.h"
TabulatedAnglePotential::TabulatedAnglePotential()
{
pot = NULL;
size = 0;
fileName = "";
}
TabulatedAnglePotential::TabulatedAnglePotential(String fileName) : fileName(fileName)
{
FILE* inp = fopen(fileName.val(), "r");
if (inp == NULL) {
printf("TabulatedAnglePotential: could not open file '%s'\n", fileName.val());
exit(-1);
}
char line[256];
int capacity = 256;
float* angle = new float[capacity];
pot = new float[capacity];
size = 0;
while(fgets(line, 256, inp)) {
String s(line);
int numTokens = s.tokenCount();
String* tokenList = new String[numTokens];
s.tokenize(tokenList);
// Legitimate TABULATED ANGLE inputs have 2 tokens
// ANGLE | VALUE
// Any angle input line without exactly 2 tokens should be discarded
if (numTokens != 2) {
printf("Invalid angle input line: %s\n", line);
continue;
}
// Discard any empty line
if (tokenList == NULL) {
printf("Empty angle input line: %s\n", line);
continue;
}
if (size >= capacity) {
float* temp = angle;
float* temp2 = pot;
capacity *= 2;
angle = new float[capacity];
pot = new float[capacity];
for (int i = 0; i < size; i++) {
angle[i] = temp[i];
pot[i] = temp2[i];
}
delete[] temp;
delete[] temp2;
}
angle[size] = atof(tokenList[0].val());
pot[size++] = atof(tokenList[1].val());
}
angle_step = angle[1]-angle[0];
delete[] angle;
fclose(inp);
}
TabulatedAnglePotential::TabulatedAnglePotential(const TabulatedAnglePotential &tab)
{
size = tab.size;
fileName = tab.fileName;
pot = new float[size];
for (int i = 0; i < size; i++)
pot[i] = tab.pot[i];
angle_step = tab.angle_step;
}
TabulatedAnglePotential::~TabulatedAnglePotential() {
delete[] pot;
}