3
\brief Enter brief description of file here
6
#include <libpsio/psio.h>
12
int dpd_file4_mat_irrep_row_rd(dpdfile4 *File, int irrep, int row)
14
int coltot, my_irrep, seek_block;
15
psio_address row_ptr, next_address;
17
if(File->incore) return 0; /* We already have this data in core */
23
my_irrep = File->my_irrep;
25
row_ptr = File->lfiles[irrep];
26
coltot = File->params->coltot[irrep^my_irrep];
28
/* Advance file pointer to current row --- careful about overflows! */
30
seek_block = DPD_BIGNUM/(coltot * sizeof(double)); /* no. of rows for which we can compute the address */
32
fprintf(stderr, "\nLIBDPD Error: each row of %s is too long to compute an address.\n",File->label);
33
dpd_error("dpd_file4_mat_irrep_row_rd", stderr);
35
for(; row > seek_block; row -= seek_block)
36
row_ptr = psio_get_address(row_ptr, seek_block*coltot*sizeof(double));
37
row_ptr = psio_get_address(row_ptr, row*coltot*sizeof(double));
41
psio_read(File->filenum, File->label, (char *) File->matrix[irrep][0],
42
coltot*sizeof(double), row_ptr, &next_address);
45
timer_off("f4_rowrd");