NAMD
Classes | Public Member Functions | Public Attributes | Friends | List of all members
GridforceFullBaseGrid Class Referenceabstract

#include <GridForceGrid.h>

Inheritance diagram for GridforceFullBaseGrid:
GridforceFullMainGrid GridforceFullSubGrid

Classes

struct  GridIndices
 

Public Member Functions

 GridforceFullBaseGrid (void)
 
virtual ~GridforceFullBaseGrid ()
 
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
 
virtual int get_border (void) const =0
 
float get_grid (int i0, int i1, int i2) const
 
double get_grid_d (int i0, int i1, int i2) const
 
void set_grid (int i0, int i1, int i2, float V)
 
void set_scale (Vector s)
 
int compute_VdV (Position pos, float &V, Vector &dV) const
 
int get_k0 (void) const
 
int get_k1 (void) const
 
int get_k2 (void) const
 
virtual void pack (MOStream *msg) const
 
virtual void unpack (MIStream *msg)
 
void readHeader (SimParameters *simParams, MGridforceParams *mgridParams)
 
long int grid_index (int i0, int i1, int i2) const
 
int get_inds (Position pos, int *inds, Vector &dg, Vector &gapscale) const
 
void compute_a (float *a, float *b) const
 
virtual void compute_b (float *b, int *inds, Vector gapscale) const =0
 
float compute_V (float *a, float *x, float *y, float *z) const
 
Vector compute_dV (float *a, float *x, float *y, float *z) const
 
Vector compute_d2V (float *a, float *x, float *y, float *z) const
 
float compute_d3V (float *a, float *x, float *y, float *z) const
 
void readSubgridHierarchy (FILE *poten, int &totalGrids)
 

Public Attributes

FILE * poten_fp
 
float * grid
 
GridforceFullSubGrid ** subgrids
 
int numSubgrids
 
int generation
 
int k [3]
 
int k_nopad [3]
 
long int size
 
long int size_nopad
 
long int dk [3]
 
long int dk_nopad [3]
 
float factor
 
Position origin
 
Position center
 
Tensor e
 
Tensor inv
 
double p_sum [3]
 
double n_sum [3]
 
double pad_p [3]
 
double pad_n [3]
 
Bool cont [3]
 
float offset [3]
 
float gap [3]
 
float gapinv [3]
 
Vector scale
 
Bool checksize
 

Friends

class GridforceFullMainGrid
 
class GridforceFullSubGrid
 

Detailed Description

Definition at line 81 of file GridForceGrid.h.

Constructor & Destructor Documentation

◆ GridforceFullBaseGrid()

GridforceFullBaseGrid::GridforceFullBaseGrid ( void  )

Definition at line 137 of file GridForceGrid.C.

References cont, FALSE, grid, numSubgrids, and subgrids.

138 {
139  cont[0] = cont[1] = cont[2] = FALSE;
140  grid = NULL;
141  numSubgrids = 0;
142  subgrids = NULL;
143 }
#define FALSE
Definition: common.h:127
GridforceFullSubGrid ** subgrids

◆ ~GridforceFullBaseGrid()

GridforceFullBaseGrid::~GridforceFullBaseGrid ( )
virtual

Definition at line 145 of file GridForceGrid.C.

References grid, numSubgrids, and subgrids.

146 {
147  delete[] grid;
148  for (int i = 0; i < numSubgrids; i++) {
149  delete subgrids[i];
150  }
151  delete[] subgrids;
152 }
GridforceFullSubGrid ** subgrids

Member Function Documentation

◆ compute_a()

void GridforceFullBaseGrid::compute_a ( float *  a,
float *  b 
) const
inline

Definition at line 228 of file GridForceGrid.inl.

Referenced by GridforceFullSubGrid::compute_b(), and compute_VdV().

229 {
230  // Static sparse 64x64 matrix times vector ... nicer looking way than this?
231  a[0] = b[0];
232  a[1] = b[8];
233  a[2] = -3*b[0] + 3*b[1] - 2*b[8] - b[9];
234  a[3] = 2*b[0] - 2*b[1] + b[8] + b[9];
235  a[4] = b[16];
236  a[5] = b[32];
237  a[6] = -3*b[16] + 3*b[17] - 2*b[32] - b[33];
238  a[7] = 2*b[16] - 2*b[17] + b[32] + b[33];
239  a[8] = -3*b[0] + 3*b[2] - 2*b[16] - b[18];
240  a[9] = -3*b[8] + 3*b[10] - 2*b[32] - b[34];
241  a[10] = 9*b[0] - 9*b[1] - 9*b[2] + 9*b[3] + 6*b[8] + 3*b[9] - 6*b[10] - 3*b[11]
242  + 6*b[16] - 6*b[17] + 3*b[18] - 3*b[19] + 4*b[32] + 2*b[33] + 2*b[34] + b[35];
243  a[11] = -6*b[0] + 6*b[1] + 6*b[2] - 6*b[3] - 3*b[8] - 3*b[9] + 3*b[10] + 3*b[11]
244  - 4*b[16] + 4*b[17] - 2*b[18] + 2*b[19] - 2*b[32] - 2*b[33] - b[34] - b[35];
245  a[12] = 2*b[0] - 2*b[2] + b[16] + b[18];
246  a[13] = 2*b[8] - 2*b[10] + b[32] + b[34];
247  a[14] = -6*b[0] + 6*b[1] + 6*b[2] - 6*b[3] - 4*b[8] - 2*b[9] + 4*b[10] + 2*b[11]
248  - 3*b[16] + 3*b[17] - 3*b[18] + 3*b[19] - 2*b[32] - b[33] - 2*b[34] - b[35];
249  a[15] = 4*b[0] - 4*b[1] - 4*b[2] + 4*b[3] + 2*b[8] + 2*b[9] - 2*b[10] - 2*b[11]
250  + 2*b[16] - 2*b[17] + 2*b[18] - 2*b[19] + b[32] + b[33] + b[34] + b[35];
251  a[16] = b[24];
252  a[17] = b[40];
253  a[18] = -3*b[24] + 3*b[25] - 2*b[40] - b[41];
254  a[19] = 2*b[24] - 2*b[25] + b[40] + b[41];
255  a[20] = b[48];
256  a[21] = b[56];
257  a[22] = -3*b[48] + 3*b[49] - 2*b[56] - b[57];
258  a[23] = 2*b[48] - 2*b[49] + b[56] + b[57];
259  a[24] = -3*b[24] + 3*b[26] - 2*b[48] - b[50];
260  a[25] = -3*b[40] + 3*b[42] - 2*b[56] - b[58];
261  a[26] = 9*b[24] - 9*b[25] - 9*b[26] + 9*b[27] + 6*b[40] + 3*b[41] - 6*b[42] - 3*b[43]
262  + 6*b[48] - 6*b[49] + 3*b[50] - 3*b[51] + 4*b[56] + 2*b[57] + 2*b[58] + b[59];
263  a[27] = -6*b[24] + 6*b[25] + 6*b[26] - 6*b[27] - 3*b[40] - 3*b[41] + 3*b[42] + 3*b[43]
264  - 4*b[48] + 4*b[49] - 2*b[50] + 2*b[51] - 2*b[56] - 2*b[57] - b[58] - b[59];
265  a[28] = 2*b[24] - 2*b[26] + b[48] + b[50];
266  a[29] = 2*b[40] - 2*b[42] + b[56] + b[58];
267  a[30] = -6*b[24] + 6*b[25] + 6*b[26] - 6*b[27] - 4*b[40] - 2*b[41] + 4*b[42] + 2*b[43]
268  - 3*b[48] + 3*b[49] - 3*b[50] + 3*b[51] - 2*b[56] - b[57] - 2*b[58] - b[59];
269  a[31] = 4*b[24] - 4*b[25] - 4*b[26] + 4*b[27] + 2*b[40] + 2*b[41] - 2*b[42] - 2*b[43]
270  + 2*b[48] - 2*b[49] + 2*b[50] - 2*b[51] + b[56] + b[57] + b[58] + b[59];
271  a[32] = -3*b[0] + 3*b[4] - 2*b[24] - b[28];
272  a[33] = -3*b[8] + 3*b[12] - 2*b[40] - b[44];
273  a[34] = 9*b[0] - 9*b[1] - 9*b[4] + 9*b[5] + 6*b[8] + 3*b[9] - 6*b[12] - 3*b[13]
274  + 6*b[24] - 6*b[25] + 3*b[28] - 3*b[29] + 4*b[40] + 2*b[41] + 2*b[44] + b[45];
275  a[35] = -6*b[0] + 6*b[1] + 6*b[4] - 6*b[5] - 3*b[8] - 3*b[9] + 3*b[12] + 3*b[13]
276  - 4*b[24] + 4*b[25] - 2*b[28] + 2*b[29] - 2*b[40] - 2*b[41] - b[44] - b[45];
277  a[36] = -3*b[16] + 3*b[20] - 2*b[48] - b[52];
278  a[37] = -3*b[32] + 3*b[36] - 2*b[56] - b[60];
279  a[38] = 9*b[16] - 9*b[17] - 9*b[20] + 9*b[21] + 6*b[32] + 3*b[33] - 6*b[36] - 3*b[37]
280  + 6*b[48] - 6*b[49] + 3*b[52] - 3*b[53] + 4*b[56] + 2*b[57] + 2*b[60] + b[61];
281  a[39] = -6*b[16] + 6*b[17] + 6*b[20] - 6*b[21] - 3*b[32] - 3*b[33] + 3*b[36] + 3*b[37]
282  - 4*b[48] + 4*b[49] - 2*b[52] + 2*b[53] - 2*b[56] - 2*b[57] - b[60] - b[61];
283  a[40] = 9*b[0] - 9*b[2] - 9*b[4] + 9*b[6] + 6*b[16] + 3*b[18] - 6*b[20] - 3*b[22]
284  + 6*b[24] - 6*b[26] + 3*b[28] - 3*b[30] + 4*b[48] + 2*b[50] + 2*b[52] + b[54];
285  a[41] = 9*b[8] - 9*b[10] - 9*b[12] + 9*b[14] + 6*b[32] + 3*b[34] - 6*b[36] - 3*b[38]
286  + 6*b[40] - 6*b[42] + 3*b[44] - 3*b[46] + 4*b[56] + 2*b[58] + 2*b[60] + b[62];
287  a[42] = -27*b[0] + 27*b[1] + 27*b[2] - 27*b[3] + 27*b[4] - 27*b[5] - 27*b[6] + 27*b[7]
288  - 18*b[8] - 9*b[9] + 18*b[10] + 9*b[11] + 18*b[12] + 9*b[13] - 18*b[14] - 9*b[15]
289  - 18*b[16] + 18*b[17] - 9*b[18] + 9*b[19] + 18*b[20] - 18*b[21] + 9*b[22] - 9*b[23]
290  - 18*b[24] + 18*b[25] + 18*b[26] - 18*b[27] - 9*b[28] + 9*b[29] + 9*b[30] - 9*b[31]
291  - 12*b[32] - 6*b[33] - 6*b[34] - 3*b[35] + 12*b[36] + 6*b[37] + 6*b[38] + 3*b[39]
292  - 12*b[40] - 6*b[41] + 12*b[42] + 6*b[43] - 6*b[44] - 3*b[45] + 6*b[46] + 3*b[47]
293  - 12*b[48] + 12*b[49] - 6*b[50] + 6*b[51] - 6*b[52] + 6*b[53] - 3*b[54] + 3*b[55]
294  - 8*b[56] - 4*b[57] - 4*b[58] - 2*b[59] - 4*b[60] - 2*b[61] - 2*b[62] - b[63];
295  a[43] = 18*b[0] - 18*b[1] - 18*b[2] + 18*b[3] - 18*b[4] + 18*b[5] + 18*b[6] - 18*b[7]
296  + 9*b[8] + 9*b[9] - 9*b[10] - 9*b[11] - 9*b[12] - 9*b[13] + 9*b[14] + 9*b[15]
297  + 12*b[16] - 12*b[17] + 6*b[18] - 6*b[19] - 12*b[20] + 12*b[21] - 6*b[22] + 6*b[23]
298  + 12*b[24] - 12*b[25] - 12*b[26] + 12*b[27] + 6*b[28] - 6*b[29] - 6*b[30] + 6*b[31]
299  + 6*b[32] + 6*b[33] + 3*b[34] + 3*b[35] - 6*b[36] - 6*b[37] - 3*b[38] - 3*b[39]
300  + 6*b[40] + 6*b[41] - 6*b[42] - 6*b[43] + 3*b[44] + 3*b[45] - 3*b[46] - 3*b[47]
301  + 8*b[48] - 8*b[49] + 4*b[50] - 4*b[51] + 4*b[52] - 4*b[53] + 2*b[54] - 2*b[55]
302  + 4*b[56] + 4*b[57] + 2*b[58] + 2*b[59] + 2*b[60] + 2*b[61] + b[62] + b[63];
303  a[44] = -6*b[0] + 6*b[2] + 6*b[4] - 6*b[6] - 3*b[16] - 3*b[18] + 3*b[20] + 3*b[22]
304  - 4*b[24] + 4*b[26] - 2*b[28] + 2*b[30] - 2*b[48] - 2*b[50] - b[52] - b[54];
305  a[45] = -6*b[8] + 6*b[10] + 6*b[12] - 6*b[14] - 3*b[32] - 3*b[34] + 3*b[36] + 3*b[38]
306  - 4*b[40] + 4*b[42] - 2*b[44] + 2*b[46] - 2*b[56] - 2*b[58] - b[60] - b[62];
307  a[46] = 18*b[0] - 18*b[1] - 18*b[2] + 18*b[3] - 18*b[4] + 18*b[5] + 18*b[6] - 18*b[7]
308  + 12*b[8] + 6*b[9] - 12*b[10] - 6*b[11] - 12*b[12] - 6*b[13] + 12*b[14] + 6*b[15]
309  + 9*b[16] - 9*b[17] + 9*b[18] - 9*b[19] - 9*b[20] + 9*b[21] - 9*b[22] + 9*b[23]
310  + 12*b[24] - 12*b[25] - 12*b[26] + 12*b[27] + 6*b[28] - 6*b[29] - 6*b[30] + 6*b[31]
311  + 6*b[32] + 3*b[33] + 6*b[34] + 3*b[35] - 6*b[36] - 3*b[37] - 6*b[38] - 3*b[39]
312  + 8*b[40] + 4*b[41] - 8*b[42] - 4*b[43] + 4*b[44] + 2*b[45] - 4*b[46] - 2*b[47]
313  + 6*b[48] - 6*b[49] + 6*b[50] - 6*b[51] + 3*b[52] - 3*b[53] + 3*b[54] - 3*b[55]
314  + 4*b[56] + 2*b[57] + 4*b[58] + 2*b[59] + 2*b[60] + b[61] + 2*b[62] + b[63];
315  a[47] = -12*b[0] + 12*b[1] + 12*b[2] - 12*b[3] + 12*b[4] - 12*b[5] - 12*b[6] + 12*b[7]
316  - 6*b[8] - 6*b[9] + 6*b[10] + 6*b[11] + 6*b[12] + 6*b[13] - 6*b[14] - 6*b[15]
317  - 6*b[16] + 6*b[17] - 6*b[18] + 6*b[19] + 6*b[20] - 6*b[21] + 6*b[22] - 6*b[23]
318  - 8*b[24] + 8*b[25] + 8*b[26] - 8*b[27] - 4*b[28] + 4*b[29] + 4*b[30] - 4*b[31]
319  - 3*b[32] - 3*b[33] - 3*b[34] - 3*b[35] + 3*b[36] + 3*b[37] + 3*b[38] + 3*b[39]
320  - 4*b[40] - 4*b[41] + 4*b[42] + 4*b[43] - 2*b[44] - 2*b[45] + 2*b[46] + 2*b[47]
321  - 4*b[48] + 4*b[49] - 4*b[50] + 4*b[51] - 2*b[52] + 2*b[53] - 2*b[54] + 2*b[55]
322  - 2*b[56] - 2*b[57] - 2*b[58] - 2*b[59] - b[60] - b[61] - b[62] - b[63];
323  a[48] = 2*b[0] - 2*b[4] + b[24] + b[28];
324  a[49] = 2*b[8] - 2*b[12] + b[40] + b[44];
325  a[50] = -6*b[0] + 6*b[1] + 6*b[4] - 6*b[5] - 4*b[8] - 2*b[9] + 4*b[12] + 2*b[13]
326  - 3*b[24] + 3*b[25] - 3*b[28] + 3*b[29] - 2*b[40] - b[41] - 2*b[44] - b[45];
327  a[51] = 4*b[0] - 4*b[1] - 4*b[4] + 4*b[5] + 2*b[8] + 2*b[9] - 2*b[12] - 2*b[13]
328  + 2*b[24] - 2*b[25] + 2*b[28] - 2*b[29] + b[40] + b[41] + b[44] + b[45];
329  a[52] = 2*b[16] - 2*b[20] + b[48] + b[52];
330  a[53] = 2*b[32] - 2*b[36] + b[56] + b[60];
331  a[54] = -6*b[16] + 6*b[17] + 6*b[20] - 6*b[21] - 4*b[32] - 2*b[33] + 4*b[36] + 2*b[37]
332  - 3*b[48] + 3*b[49] - 3*b[52] + 3*b[53] - 2*b[56] - b[57] - 2*b[60] - b[61];
333  a[55] = 4*b[16] - 4*b[17] - 4*b[20] + 4*b[21] + 2*b[32] + 2*b[33] - 2*b[36] - 2*b[37]
334  + 2*b[48] - 2*b[49] + 2*b[52] - 2*b[53] + b[56] + b[57] + b[60] + b[61];
335  a[56] = -6*b[0] + 6*b[2] + 6*b[4] - 6*b[6] - 4*b[16] - 2*b[18] + 4*b[20] + 2*b[22]
336  - 3*b[24] + 3*b[26] - 3*b[28] + 3*b[30] - 2*b[48] - b[50] - 2*b[52] - b[54];
337  a[57] = -6*b[8] + 6*b[10] + 6*b[12] - 6*b[14] - 4*b[32] - 2*b[34] + 4*b[36] + 2*b[38]
338  - 3*b[40] + 3*b[42] - 3*b[44] + 3*b[46] - 2*b[56] - b[58] - 2*b[60] - b[62];
339  a[58] = 18*b[0] - 18*b[1] - 18*b[2] + 18*b[3] - 18*b[4] + 18*b[5] + 18*b[6] - 18*b[7]
340  + 12*b[8] + 6*b[9] - 12*b[10] - 6*b[11] - 12*b[12] - 6*b[13] + 12*b[14] + 6*b[15]
341  + 12*b[16] - 12*b[17] + 6*b[18] - 6*b[19] - 12*b[20] + 12*b[21] - 6*b[22] + 6*b[23]
342  + 9*b[24] - 9*b[25] - 9*b[26] + 9*b[27] + 9*b[28] - 9*b[29] - 9*b[30] + 9*b[31]
343  + 8*b[32] + 4*b[33] + 4*b[34] + 2*b[35] - 8*b[36] - 4*b[37] - 4*b[38] - 2*b[39]
344  + 6*b[40] + 3*b[41] - 6*b[42] - 3*b[43] + 6*b[44] + 3*b[45] - 6*b[46] - 3*b[47]
345  + 6*b[48] - 6*b[49] + 3*b[50] - 3*b[51] + 6*b[52] - 6*b[53] + 3*b[54] - 3*b[55]
346  + 4*b[56] + 2*b[57] + 2*b[58] + b[59] + 4*b[60] + 2*b[61] + 2*b[62] + b[63];
347  a[59] = -12*b[0] + 12*b[1] + 12*b[2] - 12*b[3] + 12*b[4] - 12*b[5] - 12*b[6] + 12*b[7]
348  - 6*b[8] - 6*b[9] + 6*b[10] + 6*b[11] + 6*b[12] + 6*b[13] - 6*b[14] - 6*b[15]
349  - 8*b[16] + 8*b[17] - 4*b[18] + 4*b[19] + 8*b[20] - 8*b[21] + 4*b[22] - 4*b[23]
350  - 6*b[24] + 6*b[25] + 6*b[26] - 6*b[27] - 6*b[28] + 6*b[29] + 6*b[30] - 6*b[31]
351  - 4*b[32] - 4*b[33] - 2*b[34] - 2*b[35] + 4*b[36] + 4*b[37] + 2*b[38] + 2*b[39]
352  - 3*b[40] - 3*b[41] + 3*b[42] + 3*b[43] - 3*b[44] - 3*b[45] + 3*b[46] + 3*b[47]
353  - 4*b[48] + 4*b[49] - 2*b[50] + 2*b[51] - 4*b[52] + 4*b[53] - 2*b[54] + 2*b[55]
354  - 2*b[56] - 2*b[57] - b[58] - b[59] - 2*b[60] - 2*b[61] - b[62] - b[63];
355  a[60] = 4*b[0] - 4*b[2] - 4*b[4] + 4*b[6] + 2*b[16] + 2*b[18] - 2*b[20] - 2*b[22]
356  + 2*b[24] - 2*b[26] + 2*b[28] - 2*b[30] + b[48] + b[50] + b[52] + b[54];
357  a[61] = 4*b[8] - 4*b[10] - 4*b[12] + 4*b[14] + 2*b[32] + 2*b[34] - 2*b[36] - 2*b[38]
358  + 2*b[40] - 2*b[42] + 2*b[44] - 2*b[46] + b[56] + b[58] + b[60] + b[62];
359  a[62] = -12*b[0] + 12*b[1] + 12*b[2] - 12*b[3] + 12*b[4] - 12*b[5] - 12*b[6] + 12*b[7]
360  - 8*b[8] - 4*b[9] + 8*b[10] + 4*b[11] + 8*b[12] + 4*b[13] - 8*b[14] - 4*b[15]
361  - 6*b[16] + 6*b[17] - 6*b[18] + 6*b[19] + 6*b[20] - 6*b[21] + 6*b[22] - 6*b[23]
362  - 6*b[24] + 6*b[25] + 6*b[26] - 6*b[27] - 6*b[28] + 6*b[29] + 6*b[30] - 6*b[31]
363  - 4*b[32] - 2*b[33] - 4*b[34] - 2*b[35] + 4*b[36] + 2*b[37] + 4*b[38] + 2*b[39]
364  - 4*b[40] - 2*b[41] + 4*b[42] + 2*b[43] - 4*b[44] - 2*b[45] + 4*b[46] + 2*b[47]
365  - 3*b[48] + 3*b[49] - 3*b[50] + 3*b[51] - 3*b[52] + 3*b[53] - 3*b[54] + 3*b[55]
366  - 2*b[56] - b[57] - 2*b[58] - b[59] - 2*b[60] - b[61] - 2*b[62] - b[63];
367  a[63] = 8*b[0] - 8*b[1] - 8*b[2] + 8*b[3] - 8*b[4] + 8*b[5] + 8*b[6] - 8*b[7]
368  + 4*b[8] + 4*b[9] - 4*b[10] - 4*b[11] - 4*b[12] - 4*b[13] + 4*b[14] + 4*b[15]
369  + 4*b[16] - 4*b[17] + 4*b[18] - 4*b[19] - 4*b[20] + 4*b[21] - 4*b[22] + 4*b[23]
370  + 4*b[24] - 4*b[25] - 4*b[26] + 4*b[27] + 4*b[28] - 4*b[29] - 4*b[30] + 4*b[31]
371  + 2*b[32] + 2*b[33] + 2*b[34] + 2*b[35] - 2*b[36] - 2*b[37] - 2*b[38] - 2*b[39]
372  + 2*b[40] + 2*b[41] - 2*b[42] - 2*b[43] + 2*b[44] + 2*b[45] - 2*b[46] - 2*b[47]
373  + 2*b[48] - 2*b[49] + 2*b[50] - 2*b[51] + 2*b[52] - 2*b[53] + 2*b[54] - 2*b[55]
374  + b[56] + b[57] + b[58] + b[59] + b[60] + b[61] + b[62] + b[63];
375 }

◆ compute_b()

virtual void GridforceFullBaseGrid::compute_b ( float *  b,
int *  inds,
Vector  gapscale 
) const
pure virtual

◆ compute_d2V()

Vector GridforceFullBaseGrid::compute_d2V ( float *  a,
float *  x,
float *  y,
float *  z 
) const
inline

Definition at line 194 of file GridForceGrid.inl.

References k, Vector::x, Vector::y, and Vector::z.

Referenced by GridforceFullSubGrid::compute_b().

195 {
196  Vector d2V = 0;
197  int ind = 0;
198  for (int l = 0; l < 4; l++) {
199  for (int k = 0; k < 4; k++) {
200  for (int j = 0; j < 4; j++) {
201  if (j > 0 && k > 0) d2V.x += a[ind] * j * k * x[j-1] * y[k-1] * z[l]; // d2V/dxdy
202  if (j > 0 && l > 0) d2V.y += a[ind] * j * l * x[j-1] * y[k] * z[l-1]; // d2V/dxdz
203  if (k > 0 && l > 0) d2V.z += a[ind] * k * l * x[j] * y[k-1] * z[l-1]; // d2V/dydz
204  ind++;
205  }
206  }
207  }
208  return d2V;
209 }
Definition: Vector.h:72
BigReal z
Definition: Vector.h:74
BigReal x
Definition: Vector.h:74
BigReal y
Definition: Vector.h:74

◆ compute_d3V()

float GridforceFullBaseGrid::compute_d3V ( float *  a,
float *  x,
float *  y,
float *  z 
) const
inline

Definition at line 212 of file GridForceGrid.inl.

References k.

Referenced by GridforceFullSubGrid::compute_b().

213 {
214  float d3V = 0.0;
215  long int ind = 0;
216  for (int l = 0; l < 4; l++) {
217  for (int k = 0; k < 4; k++) {
218  for (int j = 0; j < 4; j++) {
219  if (j > 0 && k > 0 && l > 0) d3V += a[ind] * j * k * l * x[j-1] * y[k-1] * z[l-1]; // d3V/dxdydz
220  ind++;
221  }
222  }
223  }
224  return d3V;
225 }

◆ compute_dV()

Vector GridforceFullBaseGrid::compute_dV ( float *  a,
float *  x,
float *  y,
float *  z 
) const
inline

Definition at line 176 of file GridForceGrid.inl.

References k, Vector::x, Vector::y, and Vector::z.

Referenced by GridforceFullSubGrid::compute_b(), and compute_VdV().

177 {
178  Vector dV = 0;
179  long int ind = 0;
180  for (int l = 0; l < 4; l++) {
181  for (int k = 0; k < 4; k++) {
182  for (int j = 0; j < 4; j++) {
183  if (j > 0) dV.x += a[ind] * j * x[j-1] * y[k] * z[l]; // dV/dx
184  if (k > 0) dV.y += a[ind] * k * x[j] * y[k-1] * z[l]; // dV/dy
185  if (l > 0) dV.z += a[ind] * l * x[j] * y[k] * z[l-1]; // dV/dz
186  ind++;
187  }
188  }
189  }
190  return dV;
191 }
Definition: Vector.h:72
BigReal z
Definition: Vector.h:74
BigReal x
Definition: Vector.h:74
BigReal y
Definition: Vector.h:74

◆ compute_V()

float GridforceFullBaseGrid::compute_V ( float *  a,
float *  x,
float *  y,
float *  z 
) const
inline

Definition at line 160 of file GridForceGrid.inl.

References k.

Referenced by GridforceFullSubGrid::compute_b(), and compute_VdV().

161 {
162  float V = 0.0;
163  long int ind = 0;
164  for (int l = 0; l < 4; l++) {
165  for (int k = 0; k < 4; k++) {
166  for (int j = 0; j < 4; j++) {
167  V += a[ind] * x[j] * y[k] * z[l];
168  ind++;
169  }
170  }
171  }
172  return V;
173 }

◆ compute_VdV()

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

Definition at line 12 of file GridForceGrid.inl.

References compute_a(), compute_b(), compute_dV(), compute_V(), compute_VdV(), cont, DebugM, Tensor::diagonal(), endi(), generation, get_inds(), inv, numSubgrids, subgrids, Vector::x, Vector::y, and Vector::z.

Referenced by compute_VdV(), and GridforceFullMainGrid::compute_VdV().

13 {
14  //SimParameters *simParams = Node::Object()->simParameters;
15  int inds[3];
16  Vector g, dg;
17  Vector gapscale = Vector(1, 1, 1);
18 
19  int err = get_inds(pos, inds, dg, gapscale);
20  if (err) {
21  return -1;
22  }
23 
24  DebugM(1, "gapscale = " << gapscale << "\n");
25  DebugM(1, "dg = " << dg << "\n");
26  DebugM(1, "ind + dg = " << inds[0]+dg[0] << " " << inds[1]+dg[1] << " " << inds[2]+dg[2] << "\n");
27  DebugM(3, "compute_VdV: generation = " << generation << "\n" << endi);
28 
29  // Pass to subgrid if one exists here
30  for (int i = 0; i < numSubgrids; i++) {
31  if (((inds[0] >= subgrids[i]->pmin[0] && inds[0] <= subgrids[i]->pmax[0]) || subgrids[i]->cont[0]) &&
32  ((inds[1] >= subgrids[i]->pmin[1] && inds[1] <= subgrids[i]->pmax[1]) || subgrids[i]->cont[1]) &&
33  ((inds[2] >= subgrids[i]->pmin[2] && inds[2] <= subgrids[i]->pmax[2]) || subgrids[i]->cont[2]))
34  {
35  return subgrids[i]->compute_VdV(pos, V, dV);
36  }
37  }
38 
39  // Compute b
40  float b[64]; // Matrix of values at 8 box corners
41  compute_b(b, inds, gapscale);
42  for (int j = 0; j < 64; j++) DebugM(1, "b[" << j << "] = " << b[j] << "\n" << endi);
43 
44  // Compute a
45  float a[64];
46  compute_a(a, b);
47  for (int j = 0; j < 64; j++) DebugM(1, "a[" << j << "] = " << a[j] << "\n" << endi);
48 
49  // Calculate powers of x, y, z for later use
50  // e.g. x[2] = x^2
51  float x[4], y[4], z[4];
52  x[0] = 1; y[0] = 1; z[0] = 1;
53  for (int j = 1; j < 4; j++) {
54  x[j] = x[j-1] * dg.x;
55  y[j] = y[j-1] * dg.y;
56  z[j] = z[j-1] * dg.z;
57  }
58 
59  V = compute_V(a, x, y, z);
60  dV = Tensor::diagonal(gapscale) * (compute_dV(a, x, y, z) * inv);
61 
62  return 0;
63 }
int get_inds(Position pos, int *inds, Vector &dg, Vector &gapscale) const
float compute_V(float *a, float *x, float *y, float *z) const
Definition: Vector.h:72
virtual void compute_b(float *b, int *inds, Vector gapscale) const =0
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
BigReal z
Definition: Vector.h:74
GridforceFullSubGrid ** subgrids
static NAMD_HOST_DEVICE Tensor diagonal(const Vector &v1)
Definition: Tensor.h:37
BigReal x
Definition: Vector.h:74
BigReal y
Definition: Vector.h:74
Vector compute_dV(float *a, float *x, float *y, float *z) const
int compute_VdV(Position pos, float &V, Vector &dV) const
void compute_a(float *a, float *b) const

◆ get_border()

virtual int GridforceFullBaseGrid::get_border ( void  ) const
pure virtual

◆ get_center()

Position GridforceFullBaseGrid::get_center ( void  ) const
inline

Definition at line 92 of file GridForceGrid.h.

References center.

Referenced by GridforceFullMainGrid::get_center().

92 { return center; }

◆ get_checksize()

Bool GridforceFullBaseGrid::get_checksize ( void  ) const
inline

Definition at line 97 of file GridForceGrid.h.

References checksize.

Referenced by GridforceFullMainGrid::get_checksize().

97 { return checksize; }

◆ get_e()

Tensor GridforceFullBaseGrid::get_e ( void  ) const
inline

Definition at line 94 of file GridForceGrid.h.

References e.

Referenced by GridforceFullMainGrid::get_e().

94 { return e; }

◆ get_grid()

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

◆ get_grid_d()

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

Definition at line 103 of file GridForceGrid.h.

References get_grid().

Referenced by GridforceFullMainGrid::compute_b(), and GridforceFullSubGrid::compute_b().

103  {
104  return double(get_grid(i0, i1, i2));
105  }
float get_grid(int i0, int i1, int i2) const

◆ get_inds()

int GridforceFullBaseGrid::get_inds ( Position  pos,
int *  inds,
Vector dg,
Vector gapscale 
) const
inline

Definition at line 131 of file GridForceGrid.inl.

References cont, gapinv, inv, k, and origin.

Referenced by compute_VdV().

132 {
133  Vector p = pos - origin;
134  Vector g;
135 
136  g = inv * p;
137 
138  for (int i = 0; i < 3; i++) {
139  inds[i] = (int)floor(g[i]);
140  dg[i] = g[i] - inds[i];
141  }
142 
143  for (int i = 0; i < 3; i++) {
144  if (inds[i] < 0 || inds[i] >= k[i]-1) {
145  if (cont[i]) inds[i] = k[i]-1;
146  else return -1; // Outside potential and grid is not continuous
147  }
148  if (cont[i] && inds[i] == k[i]-1) {
149  // Correct for non-unit spacing between continuous grid images
150  gapscale[i] *= gapinv[i];
151  if (g[i] < 0.0) dg[i] = 1.0 + g[i]*gapinv[i]; // = (gap[i] + g[i]) * gapinv[i]
152  else dg[i] = (g[i] - inds[i]) * gapinv[i];
153  }
154  }
155 
156  return 0;
157 }
Definition: Vector.h:72

◆ get_inv()

Tensor GridforceFullBaseGrid::get_inv ( void  ) const
inline

Definition at line 95 of file GridForceGrid.h.

References inv.

Referenced by GridforceFullMainGrid::get_inv().

95 { return inv; }

◆ get_k0()

int GridforceFullBaseGrid::get_k0 ( void  ) const
inline

Definition at line 114 of file GridForceGrid.h.

References k.

Referenced by GridforceFullMainGrid::get_k0().

114 { return k[0]; }

◆ get_k1()

int GridforceFullBaseGrid::get_k1 ( void  ) const
inline

Definition at line 115 of file GridForceGrid.h.

References k.

Referenced by GridforceFullMainGrid::get_k1().

115 { return k[1]; }

◆ get_k2()

int GridforceFullBaseGrid::get_k2 ( void  ) const
inline

Definition at line 116 of file GridForceGrid.h.

References k.

Referenced by GridforceFullMainGrid::get_k2().

116 { return k[2]; }

◆ get_origin()

Position GridforceFullBaseGrid::get_origin ( void  ) const
inline

Definition at line 93 of file GridForceGrid.h.

References origin.

Referenced by GridforceFullMainGrid::get_origin().

93 { return origin; }

◆ get_scale()

Vector GridforceFullBaseGrid::get_scale ( void  ) const
inline

Definition at line 96 of file GridForceGrid.h.

References scale.

Referenced by GridforceFullMainGrid::get_scale().

96 { return scale; }

◆ grid_index()

long int GridforceFullBaseGrid::grid_index ( int  i0,
int  i1,
int  i2 
) const
inline

Definition at line 132 of file GridForceGrid.h.

References dk, k, and NAMD_bug().

Referenced by get_grid(), and set_grid().

132  {
133  register int inds[3] = {i0, i1, i2};
134 #ifdef DEBUGM
135  if (i0 < 0 || i0 >= k[0] || i1 < 0 || i1 >= k[1] || i2 < 0 || i2 >= k[2]) {
136  char buffer[256];
137  sprintf(buffer, "Bad grid index! (%d %d %d)", i0, i1, i2);
138  NAMD_bug(buffer);
139  }
140 #endif
141  return inds[0]*dk[0] + inds[1]*dk[1] + inds[2]*dk[2];
142  }
void NAMD_bug(const char *err_msg)
Definition: common.C:195

◆ pack()

void GridforceFullBaseGrid::pack ( MOStream msg) const
virtual

Reimplemented in GridforceFullSubGrid, and GridforceFullMainGrid.

Definition at line 155 of file GridForceGrid.C.

References center, checksize, cont, DebugM, dk, dk_nopad, e, endi(), factor, gap, gapinv, generation, grid, inv, k, k_nopad, numSubgrids, offset, origin, GridforceFullSubGrid::pack(), MOStream::put(), scale, size, size_nopad, and subgrids.

Referenced by GridforceFullMainGrid::pack(), and GridforceFullSubGrid::pack().

156 {
157  DebugM(2, "Packing message\n" << endi);
158 
159  msg->put(numSubgrids);
160  msg->put(generation);
161 
162  msg->put(3*sizeof(int), (char*)k);
163  msg->put(3*sizeof(int), (char*)k_nopad);
164  msg->put(size);
165  msg->put(size_nopad);
166  msg->put(3*sizeof(long int), (char*)dk);
167  msg->put(3*sizeof(long int), (char*)dk_nopad);
168  msg->put(factor);
169 
170  msg->put(sizeof(Vector), (char*)&origin);
171  msg->put(sizeof(Vector), (char*)&center);
172  msg->put(sizeof(Tensor), (char*)&e);
173  msg->put(sizeof(Tensor), (char*)&inv);
174 
175 // msg->put(3*sizeof(float), (char*)pad_p);
176 // msg->put(3*sizeof(float), (char*)pad_n);
177  msg->put(3*sizeof(Bool), (char*)cont);
178  msg->put(3*sizeof(float), (char*)offset);
179  msg->put(3*sizeof(float), (char*)gap);
180  msg->put(3*sizeof(float), (char*)gapinv);
181  msg->put(sizeof(Vector), (char*)&scale);
182  msg->put(sizeof(Bool), (char*)&checksize);
183 
184  DebugM(2, "Packing grid, size = " << size << "\n" << endi);
185 
186  msg->put(size*sizeof(float), (char*)grid);
187 
188  DebugM(2, "Packing subgrids\n" << endi);
189 
190  for (int i = 0; i < numSubgrids; i++) {
191  subgrids[i]->pack(msg);
192  }
193 }
Definition: Vector.h:72
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
GridforceFullSubGrid ** subgrids
int Bool
Definition: common.h:142
Definition: Tensor.h:15
void pack(MOStream *msg) const
MOStream * put(char data)
Definition: MStream.h:112

◆ readHeader()

void GridforceFullBaseGrid::readHeader ( SimParameters simParams,
MGridforceParams mgridParams 
)

Definition at line 255 of file GridForceGrid.C.

References center, DebugM, e, endi(), inv, k_nopad, origin, poten_fp, size_nopad, Vector::x, Tensor::xx, Tensor::xy, Tensor::xz, Vector::y, Tensor::yx, Tensor::yy, Tensor::yz, Vector::z, Tensor::zx, Tensor::zy, and Tensor::zz.

Referenced by GridforceFullMainGrid::initialize(), and GridforceFullSubGrid::initialize().

256 {
257  char line[256];
258  long int poten_offset;
259  do {
260  poten_offset = ftell(poten_fp);
261  fgets(line, 256, poten_fp); // Read comment lines
262  DebugM(4, "Read line: " << line << endi);
263  } while (line[0] == '#');
264  fseek(poten_fp, poten_offset, SEEK_SET);
265 
266  // read grid dimensions
267  fscanf(poten_fp, "object %*d class gridpositions counts %d %d %d\n",
268  &k_nopad[0], &k_nopad[1], &k_nopad[2]);
269  size_nopad = k_nopad[0] * k_nopad[1] * k_nopad[2];
270 
271  // Read origin
272  fscanf(poten_fp, "origin %lf %lf %lf\n",
273  &origin.x, &origin.y, &origin.z);
274 
275  // Read delta (unit vectors)
276  // These are column vectors, so must fill gridfrcE tensor to reflect this
277  fscanf(poten_fp, "delta %lf %lf %lf\n", &e.xx, &e.yx, &e.zx);
278  fscanf(poten_fp, "delta %lf %lf %lf\n", &e.xy, &e.yy, &e.zy);
279  fscanf(poten_fp, "delta %lf %lf %lf\n", &e.xz, &e.yz, &e.zz);
280 
281  center = origin + e * 0.5
282  * Position(k_nopad[0]-1, k_nopad[1]-1, k_nopad[2]-1);
283 
284  fscanf(poten_fp, "object %*d class gridconnections counts %*lf %*lf %*lf\n");
285  fscanf(poten_fp, "object %*d class array type double rank 0 items %*d data follows\n");
286 
287  // Calculate inverse tensor
288  BigReal det;
289  det = e.xx*(e.yy*e.zz - e.yz*e.zy) - e.xy*(e.yx*e.zz - e.yz*e.zx)
290  + e.xz*(e.yx*e.zy - e.yy*e.zx);
291  inv.xx = (e.yy*e.zz - e.yz*e.zy)/det;
292  inv.xy = -(e.xy*e.zz - e.xz*e.zy)/det;
293  inv.xz = (e.xy*e.yz - e.xz*e.yy)/det;
294  inv.yx = -(e.yx*e.zz - e.yz*e.zx)/det;
295  inv.yy = (e.xx*e.zz - e.xz*e.zx)/det;
296  inv.yz = -(e.xx*e.yz - e.xz*e.yx)/det;
297  inv.zx = (e.yx*e.zy - e.yy*e.zx)/det;
298  inv.zy = -(e.xx*e.zy - e.xy*e.zx)/det;
299  inv.zz = (e.xx*e.yy - e.xy*e.yx)/det;
300 
301  DebugM(4, "origin = " << origin << "\n");
302  DebugM(4, "e = " << e << "\n");
303  DebugM(4, "inv = " << inv << "\n" << endi);
304 }
BigReal zy
Definition: Tensor.h:19
BigReal xz
Definition: Tensor.h:17
#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 yz
Definition: Tensor.h:18
BigReal yx
Definition: Tensor.h:18
Vector Position
Definition: NamdTypes.h:24
BigReal x
Definition: Vector.h:74
BigReal xx
Definition: Tensor.h:17
BigReal zz
Definition: Tensor.h:19
BigReal xy
Definition: Tensor.h:17
BigReal y
Definition: Vector.h:74
BigReal yy
Definition: Tensor.h:18
BigReal zx
Definition: Tensor.h:19
double BigReal
Definition: common.h:123

◆ readSubgridHierarchy()

void GridforceFullBaseGrid::readSubgridHierarchy ( FILE *  poten,
int &  totalGrids 
)

Definition at line 306 of file GridForceGrid.C.

References DebugM, endi(), generation, GridforceFullSubGrid, NAMD_die(), numSubgrids, poten_fp, readSubgridHierarchy(), and subgrids.

Referenced by GridforceFullMainGrid::initialize(), and readSubgridHierarchy().

307 {
308  DebugM(4, "Beginning of readSubgridHierarchy, generation = " << generation << ", totalGrids = " << totalGrids << "\n" << endi);
309 
310  int elems, generation_in;
311 
313 
314  for (int i = 0; i < numSubgrids; i++) {
315  subgrids[i] = new GridforceFullSubGrid(this);
316  elems = fscanf(poten_fp, "# namdnugrid subgrid %d generation %d min %d %d %d max %d %d %d subgrids count %d\n",
317  &subgrids[i]->subgridIdx, &generation_in,
318  &subgrids[i]->pmin[0], &subgrids[i]->pmin[1], &subgrids[i]->pmin[2],
319  &subgrids[i]->pmax[0], &subgrids[i]->pmax[1], &subgrids[i]->pmax[2],
320  &subgrids[i]->numSubgrids);
321  if (elems < 9) {
322  char msg[256];
323  sprintf(msg, "Problem reading Gridforce potential file! (%d < 9)", elems);
324  NAMD_die(msg);
325  }
326 
327  totalGrids++;
328 
329  if (subgrids[i]->subgridIdx != (totalGrids - 1)) {
330  char msg[256];
331  sprintf(msg, "Problem reading Gridforce potential file! (%d != %d)", subgrids[i]->subgridIdx, totalGrids - 1);
332  NAMD_die(msg);
333  }
334  if (subgrids[i]->generation != generation_in) {
335  char msg[256];
336  sprintf(msg, "Problem reading Gridforce potential file! (%d != %d)", subgrids[i]->generation, generation_in);
337  NAMD_die(msg);
338  }
339 
340 // DebugM(3, "setting maingrid\n");
341 // subgrids[i]->maingrid->subgrids_flat[subgrids[i]->subgridIdx] = subgrids[i];
342 // DebugM(3, "reading subgrid hierarchy\n");
343 
344  subgrids[i]->readSubgridHierarchy(poten, totalGrids);
345  }
346 }
friend class GridforceFullSubGrid
Definition: GridForceGrid.h:83
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
GridforceFullSubGrid ** subgrids
void readSubgridHierarchy(FILE *poten, int &totalGrids)
void NAMD_die(const char *err_msg)
Definition: common.C:147

◆ set_grid()

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

Definition at line 106 of file GridForceGrid.h.

References grid, and grid_index().

Referenced by GridforceFullMainGrid::initialize(), and GridforceFullSubGrid::initialize().

106  {
107  grid[grid_index(i0, i1, i2)] = V;
108  }
long int grid_index(int i0, int i1, int i2) const

◆ set_scale()

void GridforceFullBaseGrid::set_scale ( Vector  s)
inline

Definition at line 110 of file GridForceGrid.h.

References scale.

110 { scale = s; }

◆ unpack()

void GridforceFullBaseGrid::unpack ( MIStream msg)
virtual

Reimplemented in GridforceFullSubGrid, and GridforceFullMainGrid.

Definition at line 195 of file GridForceGrid.C.

References center, checksize, cont, DebugM, dk, dk_nopad, e, endi(), factor, gap, gapinv, generation, MIStream::get(), grid, GridforceFullSubGrid, inv, k, k_nopad, numSubgrids, offset, origin, scale, size, size_nopad, subgrids, and GridforceFullSubGrid::unpack().

Referenced by GridforceFullMainGrid::unpack(), and GridforceFullSubGrid::unpack().

196 {
197  DebugM(3, "Unpacking message\n" << endi);
198 // iout << iINFO << CkMyPe() << " Unpacking message\n" << endi;
199 
200  delete[] grid;
201  grid = NULL;
202  for (int i = 0; i < numSubgrids; i++) {
203  delete subgrids[i];
204  }
205  numSubgrids = 0;
206  delete[] subgrids;
207  subgrids = NULL;
208 
209  msg->get(numSubgrids);
210  msg->get(generation);
211 
212  DebugM(3, "numSubgrids = " << numSubgrids << "\n");
213  DebugM(3, "generation = " << generation << "\n" << endi);
214 
215  msg->get(3*sizeof(int), (char*)k);
216  msg->get(3*sizeof(int), (char*)k_nopad);
217  msg->get(size);
218  msg->get(size_nopad);
219  msg->get(3*sizeof(long int), (char*)dk);
220  msg->get(3*sizeof(long int), (char*)dk_nopad);
221  msg->get(factor);
222 
223  DebugM(3, "size = " << size << "\n" << endi);
224 
225  msg->get(sizeof(Vector), (char*)&origin);
226  msg->get(sizeof(Vector), (char*)&center);
227  msg->get(sizeof(Tensor), (char*)&e);
228  msg->get(sizeof(Tensor), (char*)&inv);
229 
230 // msg->get(3*sizeof(float), (char*)pad_p);
231 // msg->get(3*sizeof(float), (char*)pad_n);
232  msg->get(3*sizeof(Bool), (char*)cont);
233  msg->get(3*sizeof(float), (char*)offset);
234  msg->get(3*sizeof(float), (char*)gap);
235  msg->get(3*sizeof(float), (char*)gapinv);
236  msg->get(sizeof(Vector), (char*)&scale);
237  msg->get(sizeof(Bool), (char*)&checksize);
238 
239  if (size) {
240  DebugM(3, "allocating grid, size = " << size << "\n" << endi);
241  grid = new float[size];
242  msg->get(size*sizeof(float), (char*)grid);
243  }
244 
245  if (numSubgrids) {
246  DebugM(3, "Creating subgrids array, size " << numSubgrids << "\n" << endi);
248  for (int i = 0; i < numSubgrids; i++) {
249  subgrids[i] = new GridforceFullSubGrid(this);
250  subgrids[i]->unpack(msg);
251  }
252  }
253 }
friend class GridforceFullSubGrid
Definition: GridForceGrid.h:83
Definition: Vector.h:72
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
MIStream * get(char &data)
Definition: MStream.h:29
GridforceFullSubGrid ** subgrids
int Bool
Definition: common.h:142
Definition: Tensor.h:15
void unpack(MIStream *msg)

Friends And Related Function Documentation

◆ GridforceFullMainGrid

friend class GridforceFullMainGrid
friend

Definition at line 82 of file GridForceGrid.h.

◆ GridforceFullSubGrid

friend class GridforceFullSubGrid
friend

Definition at line 83 of file GridForceGrid.h.

Referenced by readSubgridHierarchy(), and unpack().

Member Data Documentation

◆ center

Position GridforceFullBaseGrid::center

◆ checksize

Bool GridforceFullBaseGrid::checksize

◆ cont

Bool GridforceFullBaseGrid::cont[3]

◆ dk

long int GridforceFullBaseGrid::dk[3]

◆ dk_nopad

long int GridforceFullBaseGrid::dk_nopad[3]

Definition at line 168 of file GridForceGrid.h.

Referenced by GridforceFullMainGrid::initialize(), pack(), and unpack().

◆ e

Tensor GridforceFullBaseGrid::e

◆ factor

float GridforceFullBaseGrid::factor

◆ gap

float GridforceFullBaseGrid::gap[3]

◆ gapinv

float GridforceFullBaseGrid::gapinv[3]

◆ generation

int GridforceFullBaseGrid::generation

◆ grid

float* GridforceFullBaseGrid::grid

◆ inv

Tensor GridforceFullBaseGrid::inv

◆ k

int GridforceFullBaseGrid::k[3]

◆ k_nopad

int GridforceFullBaseGrid::k_nopad[3]

◆ n_sum

double GridforceFullBaseGrid::n_sum[3]

Definition at line 177 of file GridForceGrid.h.

Referenced by GridforceFullMainGrid::initialize().

◆ numSubgrids

int GridforceFullBaseGrid::numSubgrids

◆ offset

float GridforceFullBaseGrid::offset[3]

◆ origin

Position GridforceFullBaseGrid::origin

◆ p_sum

double GridforceFullBaseGrid::p_sum[3]

Definition at line 176 of file GridForceGrid.h.

Referenced by GridforceFullMainGrid::initialize().

◆ pad_n

double GridforceFullBaseGrid::pad_n[3]

Definition at line 179 of file GridForceGrid.h.

Referenced by GridforceFullMainGrid::initialize().

◆ pad_p

double GridforceFullBaseGrid::pad_p[3]

Definition at line 178 of file GridForceGrid.h.

Referenced by GridforceFullMainGrid::initialize().

◆ poten_fp

FILE* GridforceFullBaseGrid::poten_fp

◆ scale

Vector GridforceFullBaseGrid::scale

◆ size

long int GridforceFullBaseGrid::size

◆ size_nopad

long int GridforceFullBaseGrid::size_nopad

◆ subgrids

GridforceFullSubGrid** GridforceFullBaseGrid::subgrids

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