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; }
/* 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 {
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; }