NAMD
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
GridforceLiteGrid Class Reference

#include <GridForceGrid.h>

Inheritance diagram for GridforceLiteGrid:
GridforceGrid

Public Member Functions

 GridforceLiteGrid (int gridnum)
 
virtual ~GridforceLiteGrid ()
 
void initialize (char *potfilename, SimParameters *simParams, MGridforceParams *mgridParams)
 
void reinitialize (SimParameters *simParams, MGridforceParams *mgridParams)
 
Position get_center (void) const
 
Position get_origin (void) const
 
Tensor get_e (void) const
 
Tensor get_inv (void) const
 
Vector get_scale (void) const
 
Bool get_checksize (void) const
 
int get_k0 (void) const
 
int get_k1 (void) const
 
int get_k2 (void) const
 
int get_total_grids (void) const
 
void set_scale (Vector s)
 
float get_grid (int i0, int i1, int i2, int i3) const
 
double get_grid_d (int i0, int i1, int i2, int i3) const
 
void set_grid (int i0, int i1, int i2, int i3, float V)
 
long int get_all_gridvals (float **all_gridvals) const
 
void set_all_gridvals (float *all_gridvals, long int sz)
 
int compute_VdV (Position pos, float &V, Vector &dV) const
 
- Public Member Functions inherited from GridforceGrid
virtual ~GridforceGrid ()
 
Position wrap_position (const Position &pos, const Lattice &lattice)
 
bool fits_lattice (const Lattice &lattice)
 
int compute_VdV (Position pos, float &V, Vector &dV) const
 
GridforceGridType get_grid_type (void)
 

Protected Member Functions

void compute_derivative_grids (void)
 
void compute_wts (float *wts, const Vector &dg) const
 
int get_inds (Position pos, int *inds, Vector &dg) const
 
float linear_interpolate (int i0, int i1, int i2, int i3, const float *wts) const
 
void pack (MOStream *msg) const
 
void unpack (MIStream *msg)
 
long int grid_index (int i0, int i1, int i2, int i3) const
 
- Protected Member Functions inherited from GridforceGrid
Position get_corner (int idx)
 
 GridforceGrid ()
 

Protected Attributes

float * grid
 
int k [4]
 
long int size
 
long int dk [4]
 
Position origin
 
Position center
 
Tensor e
 
Tensor inv
 
Vector scale
 
Bool checksize
 
char filename [NAMD_FILENAME_BUFFER_SIZE]
 
- Protected Attributes inherited from GridforceGrid
GridforceGridType type
 
int mygridnum
 

Additional Inherited Members

- Public Types inherited from GridforceGrid
enum  GridforceGridType { GridforceGridTypeUndefined = 0, GridforceGridTypeFull, GridforceGridTypeLite }
 
- Static Public Member Functions inherited from GridforceGrid
static GridforceGridnew_grid (int gridnum, char *potfilename, SimParameters *simParams, MGridforceParams *mgridParams)
 
static void pack_grid (GridforceGrid *grid, MOStream *msg)
 
static GridforceGridunpack_grid (int gridnum, MIStream *msg)
 

Detailed Description

Definition at line 286 of file GridForceGrid.h.

Constructor & Destructor Documentation

◆ GridforceLiteGrid()

GridforceLiteGrid::GridforceLiteGrid ( int  gridnum)
explicit

Definition at line 1305 of file GridForceGrid.C.

References grid, GridforceGrid::GridforceGridTypeLite, GridforceGrid::mygridnum, and GridforceGrid::type.

1306 {
1307  mygridnum = gridnum;
1308  grid = NULL;
1310 }
GridforceGridType type
Definition: GridForceGrid.h:73

◆ ~GridforceLiteGrid()

GridforceLiteGrid::~GridforceLiteGrid ( )
virtual

Definition at line 1313 of file GridForceGrid.C.

References grid.

1314 {
1315  delete[] grid;
1316 }

Member Function Documentation

◆ compute_derivative_grids()

void GridforceLiteGrid::compute_derivative_grids ( void  )
protected

Definition at line 1369 of file GridForceGrid.C.

References DebugM, endi(), get_grid(), get_grid_d(), k, and set_grid().

Referenced by initialize().

1370 {
1371  // calculate derivative grids
1372  // separate loop so all V values have been set already
1373  for (int i0 = 0; i0 < k[0]; i0++) {
1374  for (int i1 = 0; i1 < k[1]; i1++) {
1375  for (int i2 = 0; i2 < k[2]; i2++) {
1376  float dx, dy, dz;
1377  if (i0 == 0 || i0 == k[0]-1 || i1 == 0 || i1 == k[1]-1 || i2 == 0 || i2 == k[2]-1) {
1378  // on edge, set ALL derivatives to zero (make up for lack of padding)
1379  dx = 0;
1380  dy = 0;
1381  dz = 0;
1382  } else {
1383  dx = 0.5 * (get_grid_d(i0+1,i1,i2,0) - get_grid_d(i0-1,i1,i2,0));
1384  dy = 0.5 * (get_grid_d(i0,i1+1,i2,0) - get_grid_d(i0,i1-1,i2,0));
1385  dz = 0.5 * (get_grid_d(i0,i1,i2+1,0) - get_grid_d(i0,i1,i2-1,0));
1386  }
1387  set_grid(i0, i1, i2, 1, dx);
1388  set_grid(i0, i1, i2, 2, dy);
1389  set_grid(i0, i1, i2, 3, dz);
1390  DebugM(1, "dx[" << i0 << "," << i1 << "," << i2 << "] = " << get_grid(i0, i1, i2, 1) << "(" << dx << ")\n" << endi);
1391  DebugM(1, "dy[" << i0 << "," << i1 << "," << i2 << "] = " << get_grid(i0, i1, i2, 2) << "(" << dy << ")\n" << endi);
1392  DebugM(1, "dz[" << i0 << "," << i1 << "," << i2 << "] = " << get_grid(i0, i1, i2, 3) << "(" << dz << ")\n" << endi);
1393  }
1394  }
1395  }
1396 }
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
double get_grid_d(int i0, int i1, int i2, int i3) const
void set_grid(int i0, int i1, int i2, int i3, float V)
float get_grid(int i0, int i1, int i2, int i3) const

◆ compute_VdV()

int GridforceLiteGrid::compute_VdV ( Position  pos,
float &  V,
Vector dV 
) const
inline

Definition at line 66 of file GridForceGrid.inl.

References for(), get_inds(), inv, linear_interpolate(), Vector::x, Vector::y, and Vector::z.

67 {
68  int inds[3];
69  Vector g, dg;
70 
71  int err = get_inds(pos, inds, dg);
72  if (err) {
73  return -1;
74  }
75 
76  float wts[4][8];
77  float results[4];
78 
79  // compute_wts(wts, dg);
80  // wts[0][0] = (1-dg.x) * (1-dg.y) * (1-dg.z);
81  // wts[0][1] = (1-dg.x) * (1-dg.y) * dg.z;
82  // wts[0][2] = (1-dg.x) * dg.y * (1-dg.z);
83  // wts[0][3] = (1-dg.x) * dg.y * dg.z;
84  // wts[0][4] = dg.x * (1-dg.y) * (1-dg.z);
85  // wts[0][5] = dg.x * (1-dg.y) * dg.z;
86  // wts[0][6] = dg.x * dg.y * (1-dg.z);
87  // wts[0][7] = dg.x * dg.y * dg.z;
88 
89  int i = 1;
90  wts[i][0] = -(1-dg.y) * (1-dg.z);
91  wts[i][1] = -(1-dg.y) * dg.z;
92  wts[i][2] = - dg.y * (1-dg.z);
93  wts[i][3] = - dg.y * dg.z;
94  for (int j=0; j<4; j++) wts[i][j+4] = -wts[i][j];
95 
96  i = 2;
97  wts[i][0] = -(1-dg.x) * (1-dg.z);
98  wts[i][1] = -(1-dg.x) * dg.z;
99  wts[i][2] = -wts[i][0];
100  wts[i][3] = -wts[i][1];
101  wts[i][4] = - dg.x * (1-dg.z);
102  wts[i][5] = - dg.x * dg.z;
103  wts[i][6] = -wts[i][4];
104  wts[i][7] = -wts[i][5];
105 
106  i = 3;
107  wts[i][0] = - (1-dg.x) * (1-dg.y);
108  wts[i][1] = -wts[i][0];
109  wts[i][2] = - (1-dg.x) * dg.y ;
110  wts[i][3] = -wts[i][2];
111  wts[i][4] = - dg.x * (1-dg.y);
112  wts[i][5] = -wts[i][4];
113  wts[i][6] = - dg.x * dg.y ;
114  wts[i][7] = -wts[i][6];
115 
116  i = 0;
117  for (int j=0; j<4; j++) wts[i][j] = (1-dg.x) * wts[i+1][j+4];
118  for (int j=0; j<4; j++) wts[i][j+4] = dg.x * wts[i+1][j+4];
119 
120  for (i = 0; i < 4; i++) {
121  results[i] = linear_interpolate(inds[0], inds[1], inds[2], 0, wts[i]);
122  }
123 
124  V = results[0];
125  dV = Vector(results[1], results[2], results[3]) * inv;
126 
127  return 0;
128 }
int get_inds(Position pos, int *inds, Vector &dg) const
Definition: Vector.h:72
BigReal z
Definition: Vector.h:74
BigReal x
Definition: Vector.h:74
float linear_interpolate(int i0, int i1, int i2, int i3, const float *wts) const
BigReal y
Definition: Vector.h:74
for(int i=0;i< n1;++i)

◆ compute_wts()

void GridforceLiteGrid::compute_wts ( float *  wts,
const Vector dg 
) const
inlineprotected

Definition at line 400 of file GridForceGrid.inl.

References DebugM, endi(), Vector::x, Vector::y, and Vector::z.

401 {
402  wts[0] = (1-dg.x) * (1-dg.y) * (1-dg.z);
403  wts[1] = (1-dg.x) * (1-dg.y) * dg.z;
404  wts[2] = (1-dg.x) * dg.y * (1-dg.z);
405  wts[3] = (1-dg.x) * dg.y * dg.z;
406  wts[4] = dg.x * (1-dg.y) * (1-dg.z);
407  wts[5] = dg.x * (1-dg.y) * dg.z;
408  wts[6] = dg.x * dg.y * (1-dg.z);
409  wts[7] = dg.x * dg.y * dg.z;
410  DebugM(2, "dg = " << dg << "\n" << endi);
411 }
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
BigReal z
Definition: Vector.h:74
BigReal x
Definition: Vector.h:74
BigReal y
Definition: Vector.h:74

◆ get_all_gridvals()

long int GridforceLiteGrid::get_all_gridvals ( float **  all_gridvals) const
virtual

Implements GridforceGrid.

Definition at line 1449 of file GridForceGrid.C.

References DebugM, endi(), grid, and size.

1450 {
1451  // Creates a flat array of all grid values and puts it in the
1452  // value pointed to by the 'all_gridvals' argument. Returns the
1453  // resulting array size. Caller is responsible for destroying the
1454  // array via 'delete[]'
1455 
1456  DebugM(4, "GridforceLiteGrid::get_all_gridvals called\n" << endi);
1457 
1458  long int sz = size;
1459  DebugM(4, "size = " << sz << "\n" << endi);
1460 
1461  float *grid_vals = new float[sz];
1462  long int idx = 0;
1463  for (long int i = 0; i < size; i++) {
1464  grid_vals[idx++] = grid[i];
1465  }
1466  CmiAssert(idx == sz);
1467 
1468  *all_gridvals = grid_vals;
1469 
1470  DebugM(4, "GridforceLiteGrid::get_all_gridvals finished\n" << endi);
1471 
1472  return sz;
1473 }
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54

◆ get_center()

Position GridforceLiteGrid::get_center ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 294 of file GridForceGrid.h.

References center.

294 { return center; }

◆ get_checksize()

Bool GridforceLiteGrid::get_checksize ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 299 of file GridForceGrid.h.

References checksize.

299 { return checksize; }

◆ get_e()

Tensor GridforceLiteGrid::get_e ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 296 of file GridForceGrid.h.

References e.

296 { return e; }

◆ get_grid()

float GridforceLiteGrid::get_grid ( int  i0,
int  i1,
int  i2,
int  i3 
) const
inline

Definition at line 306 of file GridForceGrid.h.

References grid, and grid_index().

Referenced by compute_derivative_grids(), initialize(), and linear_interpolate().

306  {
307  return grid[grid_index(i0, i1, i2, i3)];
308  }
long int grid_index(int i0, int i1, int i2, int i3) const

◆ get_grid_d()

double GridforceLiteGrid::get_grid_d ( int  i0,
int  i1,
int  i2,
int  i3 
) const
inline

Definition at line 309 of file GridForceGrid.h.

References grid, and grid_index().

Referenced by compute_derivative_grids().

309  {
310  return double(grid[grid_index(i0, i1, i2, i3)]);
311  }
long int grid_index(int i0, int i1, int i2, int i3) const

◆ get_inds()

int GridforceLiteGrid::get_inds ( Position  pos,
int *  inds,
Vector dg 
) const
inlineprotected

Definition at line 378 of file GridForceGrid.inl.

References inv, k, and origin.

Referenced by compute_VdV().

379 {
380  Vector p = pos - origin;
381  Vector g;
382 
383  g = inv * p;
384 
385  for (int i = 0; i < 3; i++) {
386  inds[i] = (int)floor(g[i]);
387  dg[i] = g[i] - inds[i];
388  }
389 
390  for (int i = 0; i < 3; i++) {
391  if (inds[i] < 0 || inds[i] >= k[i]-1) {
392  return -1; // Outside potential and grid is not continuous
393  }
394  }
395 
396  return 0;
397 }
Definition: Vector.h:72

◆ get_inv()

Tensor GridforceLiteGrid::get_inv ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 297 of file GridForceGrid.h.

References inv.

297 { return inv; }

◆ get_k0()

int GridforceLiteGrid::get_k0 ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 300 of file GridForceGrid.h.

References k.

300 { return k[0]; }

◆ get_k1()

int GridforceLiteGrid::get_k1 ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 301 of file GridForceGrid.h.

References k.

301 { return k[1]; }

◆ get_k2()

int GridforceLiteGrid::get_k2 ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 302 of file GridForceGrid.h.

References k.

302 { return k[2]; }

◆ get_origin()

Position GridforceLiteGrid::get_origin ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 295 of file GridForceGrid.h.

References origin.

295 { return origin; }

◆ get_scale()

Vector GridforceLiteGrid::get_scale ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 298 of file GridForceGrid.h.

References scale.

298 { return scale; }

◆ get_total_grids()

int GridforceLiteGrid::get_total_grids ( void  ) const
inlinevirtual

Implements GridforceGrid.

Definition at line 303 of file GridForceGrid.h.

303 { return 1; }

◆ grid_index()

long int GridforceLiteGrid::grid_index ( int  i0,
int  i1,
int  i2,
int  i3 
) const
inlineprotected

Definition at line 330 of file GridForceGrid.h.

References dk.

Referenced by get_grid(), get_grid_d(), and set_grid().

330  {
331  // 'i3' is an index for the grid itself (0=V, 1=dV/dx, 2=dV/dy, 3=dV/dz)
332  register int inds[4] = {i0, i1, i2, i3};
333  return inds[0]*dk[0] + inds[1]*dk[1] + inds[2]*dk[2] + inds[3]*dk[3];
334  }

◆ initialize()

void GridforceLiteGrid::initialize ( char *  potfilename,
SimParameters simParams,
MGridforceParams mgridParams 
)
virtual

Implements GridforceGrid.

Definition at line 1319 of file GridForceGrid.C.

References center, compute_derivative_grids(), DebugM, dk, e, endi(), filename, GridforceFullMainGrid::get_center(), GridforceFullMainGrid::get_e(), GridforceFullBaseGrid::get_grid(), get_grid(), GridforceFullMainGrid::get_inv(), GridforceFullMainGrid::get_k0(), GridforceFullMainGrid::get_k1(), GridforceFullMainGrid::get_k2(), GridforceFullMainGrid::get_origin(), GridforceFullMainGrid::get_scale(), GridforceFullMainGrid::get_total_grids(), grid, GridforceFullMainGrid::initialize(), inv, k, GridforceGrid::mygridnum, NAMD_die(), origin, scale, set_grid(), simParams, and size.

Referenced by reinitialize().

1320 {
1321  // cheat and use GridforceFullMainGrid to read the file
1323  tmp_grid->initialize(potfilename, simParams, mgridParams, 1);
1324 
1325  if (tmp_grid->get_total_grids() != 1) {
1326  NAMD_die("Cannot use gridforcelite option with multi-resolution grid!");
1327  }
1328 
1329  // save file name so that grid can be re-read via Tcl
1330  strcpy(filename, potfilename);
1331 
1332  // copy parameters
1333  k[0] = tmp_grid->get_k0();
1334  k[1] = tmp_grid->get_k1();
1335  k[2] = tmp_grid->get_k2();
1336  k[3] = 4; // for V, dV/dx, dV/dy, dV/dz grids
1337  origin = tmp_grid->get_origin();
1338  center = tmp_grid->get_center();
1339  e = tmp_grid->get_e();
1340  inv = tmp_grid->get_inv();
1341  scale = tmp_grid->get_scale();
1342 
1343  // calculate rest of parameters
1344  size = k[0] * k[1] * k[2] * k[3];
1345  dk[0] = k[1] * k[2] * k[3];
1346  dk[1] = k[2] * k[3];
1347  dk[2] = k[3];
1348  dk[3] = 1;
1349 
1350  // copy the potential grid
1351  delete[] grid;
1352  grid = new float[size];
1353  for (int i0 = 0; i0 < k[0]; i0++) {
1354  for (int i1 = 0; i1 < k[1]; i1++) {
1355  for (int i2 = 0; i2 < k[2]; i2++) {
1356  float V = tmp_grid->get_grid(i0, i1, i2);
1357  set_grid(i0, i1, i2, 0, V);
1358  DebugM(1, "V[" << i0 << "," << i1 << "," << i2 << "] = " << get_grid(i0, i1, i2, 0) << "(" << V << ")\n" << endi);
1359  }
1360  }
1361  }
1362 
1363  delete tmp_grid;
1364 
1366 }
int get_total_grids(void) const
int get_k2(void) const
void initialize(char *potfilename, SimParameters *simParams, MGridforceParams *mgridParams, int border)
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
int get_k0(void) const
void compute_derivative_grids(void)
void set_grid(int i0, int i1, int i2, int i3, float V)
Tensor get_e(void) const
Position get_center(void) const
float get_grid(int i0, int i1, int i2) const
void NAMD_die(const char *err_msg)
Definition: common.C:147
Vector get_scale(void) const
char filename[NAMD_FILENAME_BUFFER_SIZE]
Tensor get_inv(void) const
#define simParams
Definition: Output.C:129
float get_grid(int i0, int i1, int i2, int i3) const
Position get_origin(void) const
int get_k1(void) const

◆ linear_interpolate()

float GridforceLiteGrid::linear_interpolate ( int  i0,
int  i1,
int  i2,
int  i3,
const float *  wts 
) const
inlineprotected

Definition at line 414 of file GridForceGrid.inl.

References DebugM, endi(), and get_grid().

Referenced by compute_VdV().

415 {
416 #ifdef DEBUGM
417  float vals[8];
418  vals[0] = get_grid(i0, i1, i2, i3);
419  vals[1] = get_grid(i0, i1, i2+1, i3);
420  vals[2] = get_grid(i0, i1+1, i2, i3);
421  vals[3] = get_grid(i0, i1+1, i2+1, i3);
422  vals[4] = get_grid(i0+1, i1, i2, i3);
423  vals[5] = get_grid(i0+1, i1, i2+1, i3);
424  vals[6] = get_grid(i0+1, i1+1, i2, i3);
425  vals[7] = get_grid(i0+1, i1+1, i2+1, i3);
426 
427  switch (i3) {
428  case 0:
429  DebugM(2, "V\n" << endi);
430  break;
431  case 1:
432  DebugM(2, "dV/dx\n" << endi);
433  break;
434  case 2:
435  DebugM(2, "dV/dy\n" << endi);
436  break;
437  case 3:
438  DebugM(2, "dV/dz\n" << endi);
439  break;
440  }
441 
442  for (int i = 0; i < 8; i++) {
443  DebugM(2, "vals[" << i << "] = " << vals[i] << " wts[" << i << "] = " << wts[i] << "\n" << endi);
444  }
445 #endif
446 
447  float result =
448  wts[0] * get_grid(i0, i1, i2, i3) +
449  wts[1] * get_grid(i0, i1, i2+1, i3) +
450  wts[2] * get_grid(i0, i1+1, i2, i3) +
451  wts[3] * get_grid(i0, i1+1, i2+1, i3) +
452  wts[4] * get_grid(i0+1, i1, i2, i3) +
453  wts[5] * get_grid(i0+1, i1, i2+1, i3) +
454  wts[6] * get_grid(i0+1, i1+1, i2, i3) +
455  wts[7] * get_grid(i0+1, i1+1, i2+1, i3);
456 
457  DebugM(2, "result = " << result << "\n" << endi);
458 
459  return result;
460 }
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
float get_grid(int i0, int i1, int i2, int i3) const

◆ pack()

void GridforceLiteGrid::pack ( MOStream msg) const
protectedvirtual

Implements GridforceGrid.

Definition at line 1405 of file GridForceGrid.C.

References center, checksize, dk, e, filename, grid, inv, k, origin, MOStream::put(), scale, and size.

1406 {
1407  msg->put(4*sizeof(int), (char*)k);
1408  msg->put(size);
1409  msg->put(4*sizeof(long int), (char*)dk);
1410 
1411  msg->put(sizeof(Vector), (char*)&origin);
1412  msg->put(sizeof(Vector), (char*)&center);
1413  msg->put(sizeof(Tensor), (char*)&e);
1414  msg->put(sizeof(Tensor), (char*)&inv);
1415  msg->put(sizeof(Vector), (char*)&scale);
1416  msg->put(sizeof(Bool), (char*)&checksize);
1417 
1418  msg->put(129*sizeof(char), (char*)filename);
1419 
1420  msg->put(size*sizeof(float), (char*)grid);
1421 }
Definition: Vector.h:72
int Bool
Definition: common.h:142
char filename[NAMD_FILENAME_BUFFER_SIZE]
Definition: Tensor.h:15
MOStream * put(char data)
Definition: MStream.h:112

◆ reinitialize()

void GridforceLiteGrid::reinitialize ( SimParameters simParams,
MGridforceParams mgridParams 
)
virtual

Implements GridforceGrid.

Definition at line 1399 of file GridForceGrid.C.

References filename, initialize(), and simParams.

1400 {
1401  initialize(filename, simParams, mgridParams);
1402 }
char filename[NAMD_FILENAME_BUFFER_SIZE]
#define simParams
Definition: Output.C:129
void initialize(char *potfilename, SimParameters *simParams, MGridforceParams *mgridParams)

◆ set_all_gridvals()

void GridforceLiteGrid::set_all_gridvals ( float *  all_gridvals,
long int  sz 
)
virtual

Implements GridforceGrid.

Definition at line 1476 of file GridForceGrid.C.

References DebugM, endi(), grid, and size.

1477 {
1478  DebugM(4, "GridforceLiteGrid::set_all_gridvals called\n" << endi);
1479 
1480  long int sz_calc = size;
1481  CmiAssert(sz == sz_calc);
1482 
1483  long int idx = 0;
1484  for (long int i = 0; i < size; i++) {
1485  grid[i] = all_gridvals[idx++];
1486  }
1487  CmiAssert(idx == sz);
1488 
1489  //compute_derivative_grids(); // not needed if we're sending all 4 grids
1490 
1491  DebugM(4, "GridforceLiteGrid::set_all_gridvals finished\n" << endi);
1492 }
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54

◆ set_grid()

void GridforceLiteGrid::set_grid ( int  i0,
int  i1,
int  i2,
int  i3,
float  V 
)
inline

Definition at line 312 of file GridForceGrid.h.

References grid, and grid_index().

Referenced by compute_derivative_grids(), and initialize().

312  {
313  grid[grid_index(i0, i1, i2, i3)] = V;
314  }
long int grid_index(int i0, int i1, int i2, int i3) const

◆ set_scale()

void GridforceLiteGrid::set_scale ( Vector  s)
inlinevirtual

Implements GridforceGrid.

Definition at line 304 of file GridForceGrid.h.

References scale.

304 { scale = s; }

◆ unpack()

void GridforceLiteGrid::unpack ( MIStream msg)
protectedvirtual

Implements GridforceGrid.

Definition at line 1424 of file GridForceGrid.C.

References center, checksize, dk, e, filename, MIStream::get(), grid, inv, k, origin, scale, and size.

1425 {
1426  delete[] grid;
1427  grid = NULL;
1428 
1429  msg->get(4*sizeof(int), (char*)k);
1430  msg->get(size);
1431  msg->get(4*sizeof(long int), (char*)dk);
1432 
1433  msg->get(sizeof(Vector), (char*)&origin);
1434  msg->get(sizeof(Vector), (char*)&center);
1435  msg->get(sizeof(Tensor), (char*)&e);
1436  msg->get(sizeof(Tensor), (char*)&inv);
1437  msg->get(sizeof(Vector), (char*)&scale);
1438  msg->get(sizeof(Bool), (char*)&checksize);
1439 
1440  msg->get(129*sizeof(char), (char*)filename);
1441 
1442  if (size) {
1443  grid = new float[size];
1444  msg->get(size*sizeof(float), (char*)grid);
1445  }
1446 }
Definition: Vector.h:72
MIStream * get(char &data)
Definition: MStream.h:29
int Bool
Definition: common.h:142
char filename[NAMD_FILENAME_BUFFER_SIZE]
Definition: Tensor.h:15

Member Data Documentation

◆ center

Position GridforceLiteGrid::center
protected

Definition at line 343 of file GridForceGrid.h.

Referenced by get_center(), initialize(), pack(), and unpack().

◆ checksize

Bool GridforceLiteGrid::checksize
protected

Definition at line 348 of file GridForceGrid.h.

Referenced by get_checksize(), pack(), and unpack().

◆ dk

long int GridforceLiteGrid::dk[4]
protected

Definition at line 340 of file GridForceGrid.h.

Referenced by grid_index(), initialize(), pack(), and unpack().

◆ e

Tensor GridforceLiteGrid::e
protected

Definition at line 344 of file GridForceGrid.h.

Referenced by get_e(), initialize(), pack(), and unpack().

◆ filename

char GridforceLiteGrid::filename[NAMD_FILENAME_BUFFER_SIZE]
protected

Definition at line 350 of file GridForceGrid.h.

Referenced by initialize(), pack(), reinitialize(), and unpack().

◆ grid

float* GridforceLiteGrid::grid
protected

◆ inv

Tensor GridforceLiteGrid::inv
protected

Definition at line 345 of file GridForceGrid.h.

Referenced by compute_VdV(), get_inds(), get_inv(), initialize(), pack(), and unpack().

◆ k

int GridforceLiteGrid::k[4]
protected

◆ origin

Position GridforceLiteGrid::origin
protected

Definition at line 342 of file GridForceGrid.h.

Referenced by get_inds(), get_origin(), initialize(), pack(), and unpack().

◆ scale

Vector GridforceLiteGrid::scale
protected

Definition at line 347 of file GridForceGrid.h.

Referenced by get_scale(), initialize(), pack(), set_scale(), and unpack().

◆ size

long int GridforceLiteGrid::size
protected

Definition at line 339 of file GridForceGrid.h.

Referenced by get_all_gridvals(), initialize(), pack(), set_all_gridvals(), and unpack().


The documentation for this class was generated from the following files: