int write_real_field_subset(QIO_Writer *outfile, int count, 
			    float *field_out[], int lower[],
			    int upper[], int dim, char *myname){
  QIO_String *xml_record_out;
  char xml_write_field[] = "Dummy user record XML for subset of real field";
  int status;
  QIO_RecordInfo *rec_info;

  /* Create the record info for the field */
  rec_info = QIO_create_record_info(QIO_HYPER, lower, upper, dim, 
				    "QDP_F_Real", "F", 0,
				    0, sizeof(float), count);
  /* Create the record XML for the field */
  xml_record_out = QIO_string_create();
  QIO_string_set(xml_record_out,xml_write_field);

  /* Write the record for the field */
  status = QIO_write(outfile, rec_info, xml_record_out, vget_R, 
		     count*sizeof(float), sizeof(float), field_out);
  printf("%s(%d): QIO_write returns status %d\n",myname,this_node,status);
  if(status != QIO_SUCCESS)return 1;

  QIO_destroy_record_info(rec_info);
  QIO_string_destroy(xml_record_out);

  return 0;
}
int write_su3_field(QIO_Writer *outfile, int count, 
		     suN_matrix *field_out[], char *myname){
  QIO_String *xml_record_out;
  char xml_write_field[] = "Dummy user record XML for su3 field";
  int status;
  QIO_RecordInfo *rec_info;

  /* Create the record info for the field */
  rec_info = QIO_create_record_info(QIO_FIELD, NULL, NULL, 0,
				    "QDP_F3_ColorMatrix", "F", 3,
				    0, sizeof(suN_matrix), count);
  /* Create the record XML for the field */
  xml_record_out = QIO_string_create();
  QIO_string_set(xml_record_out,xml_write_field);

  /* Write the record for the field */
  status = QIO_write(outfile, rec_info, xml_record_out, vget_M, 
		     count*sizeof(suN_matrix), sizeof(float), field_out);
  printf("%s(%d): QIO_write returns status %d\n",myname,this_node,status);
  if(status != QIO_SUCCESS)return 1;

  QIO_destroy_record_info(rec_info);
  QIO_string_destroy(xml_record_out);

  return 0;
}
Example #3
0
/* read an array of QDP fields */
int
QDP$PC_vread_$ABBR(QDP_Reader *qdpr, QDP_String *md, $QDPPCTYPE *field[],
		   int nv)
{
  int status;
  TGET;
  ONE {
    struct QDP_IO_field qf;
    QIO_RecordInfo *cmp_info;

    qf.data = (char *) field;
    qf.size = QDPIO_size_$ABBR($P, QDP_get_nc(field[0]), QLA_Ns);
    qf.nc = QDPIO_nc_$ABBR(QDP_get_nc(field[0]));
    qf.ns = QDPIO_ns_$ABBR(QLA_Ns);
    qf.word_size = WS;

    QDP_set_iolat(qdpr->lat);
    cmp_info = QIO_create_record_info(QIO_FIELD, 0, 0, 0,
				      "$QDPPCTYPE", "$P", qf.nc,
				      qf.ns, qf.size, nv);

    for(int i=0; i<nv; i++) QDP_prepare_dest( &field[i]->dc );

    status = QDP_read_check(qdpr, md, QIO_FIELD, QDP$PC_vput_$ABBR, &qf,
			    nv, cmp_info);

    QIO_destroy_record_info(cmp_info);

    SHARE_SET(&status);
    TBARRIER;
  } else {
Example #4
0
int write_S_from_site(QIO_Writer *outfile, QIO_String *xml_record_out,
		      field_offset src){
  int status;
  QIO_RecordInfo *rec_info;
  char qdptype[] = "MILC_RandomState";
  char prec[] = "";
  int datum_size = sizeof(double_prn);
  int word_size = sizeof(float);
  int count = 1;

  /* Create the record info for the field */
  rec_info = QIO_create_record_info(QIO_FIELD, 0, 0, 0, qdptype, prec, 0,
				    0, datum_size, count);
  /* Write the record for the field */
  status = QIO_write(outfile, rec_info, xml_record_out, vget_S_from_site, 
		     count*datum_size, word_size, (void *)&src);
  if(status != QIO_SUCCESS)return 1;

  QIO_destroy_record_info(rec_info);

  return 0;
}
int write_real_global(QIO_Writer *outfile, int count, float array_out[], 
		      char *myname){
  QIO_String *xml_record_out;
  char xml_write_global[] = "Dummy user record XML for global";
  int status;
  QIO_RecordInfo *rec_info;

  /* Create the record info for the global array */
  xml_record_out = QIO_string_create();
  QIO_string_set(xml_record_out,xml_write_global);
  rec_info = QIO_create_record_info(QIO_GLOBAL, NULL, NULL, 0,
				    "QLA_F_Real", "F", 0,
				    0, sizeof(float), count);
  /* Write the array to a file */
  status = QIO_write(outfile, rec_info, xml_record_out, vget_r, 
		     count*sizeof(float), sizeof(float), array_out);
  printf("%s(%d): QIO_write returns status %d\n",myname,this_node,status);
  if(status != QIO_SUCCESS)return 1;
  
  QIO_destroy_record_info(rec_info);
  QIO_string_destroy(xml_record_out);

  return 0;
}
Example #6
0
    typedef QLA_FN_DiracFermion(nc, Ftype);
#else
    typedef Qx(QLA_D,_DiracPropagator) Ptype;
    typedef Qx(QLA_D,_DiracFermion) Dtype;
    typedef Qx(QLA_F,_DiracFermion) Ftype;
#endif
    typedef void Putter(char *buf, size_t index, int count, void *arg);
    QIO_String      *record_xml = NULL;
    QIO_RecordInfo  *record_info = NULL;
    int              word_size = 0;
    int              datum_size = 0;
    Putter          *putter = NULL;
    int              prec;
    Qs(USQCDArgs)    data;

    record_info = QIO_create_record_info(0, NULL, NULL, 0, "", "", 0, 0, 0, 0);
    record_xml = QIO_string_create();
    if (QIO_read_record_info(reader, record_info, record_xml))
        return luaL_error(L, "qcd.ddpairs.read() read info error");
    prec = *QIO_get_precision(record_info);
    switch (prec) {
    case 'F':
        putter = Qs(float_DD_put);
        word_size = sizeof (QLA_F_Real);
        datum_size = sizeof (Ftype);
        break;
    case 'D':
        putter = Qs(double_DD_put);
        word_size = sizeof (QLA_D_Real);
        datum_size = sizeof (Dtype);
        break;