/* Follow USQCD style for record XML */ char *create_QCDML(){ size_t bytes = 0; char *info = (char *)malloc(INFOSTRING_MAX); size_t max = INFOSTRING_MAX; char begin[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><usqcdInfo><version>1.0</version>"; char begin_info[] = "<info>"; char end_info[] = "</info>"; char end[] = "</usqcdInfo>"; Real myssplaq = g_ssplaq; /* Precision conversion */ Real mystplaq = g_stplaq; /* Precision conversion */ Real nersc_linktr = linktrsum.real/3.; /* Convention and precision */ Real gauge_fix_tol = GAUGE_FIX_TOL; char sums[20]; snprintf(info+bytes, max-bytes,"%s",begin); bytes = strlen(info); snprintf(info+bytes, max-bytes,"<plaq>%e</plaq>",(myssplaq+mystplaq)/6.); bytes = strlen(info); snprintf(info+bytes, max-bytes,"<linktr>%e</linktr>",nersc_linktr); bytes = strlen(info); snprintf(info+bytes, max-bytes,"%s",begin_info); bytes = strlen(info); /* The rest are optional */ if(startlat_p != NULL) { /* To retain some info about the original (or previous) configuration */ bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.previous.filename", "%s", startlat_p->filename,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.previous.time_stamp", "%s", startlat_p->header->time_stamp,0,0); sprintf(sums,"%x %x",startlat_p->check.sum29,startlat_p->check.sum31); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.previous.checksums", "%s", sums,0,0); } if(fixflag==COULOMB_GAUGE_FIX) { bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.fix.description", "%s", "Coulomb",0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.fix.tolerance", "%g", (char *)&gauge_fix_tol,0,0); } snprintf(info+bytes, max-bytes,"%s",end_info); bytes = strlen(info); snprintf(info+bytes, max-bytes,"%s",end); return info; }
char *create_MILC_info(){ size_t bytes = 0; char *info = (char *)malloc(INFOSTRING_MAX); size_t max = INFOSTRING_MAX; // char begin[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><usqcdInfo><version>1.0</version>"; // char begin_info[] = "<info>"; // char end_info[] = "</info>"; // char end[] = "</usqcdInfo>"; // char valstring[32]; Real myssplaq = g_ssplaq; /* Precision conversion */ Real mystplaq = g_stplaq; /* Precision conversion */ Real nersc_linktr = linktrsum.real/3.; /* Convention and precision */ sprint_gauge_info_item(info+bytes, max-bytes,"action.description","%s", "\"Gauge (improved)\"",0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.description","%s", gauge_action_description,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.nloops","%d", (char *)&gauge_action_nloops,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.nreps","%d", (char *)&gauge_action_nreps,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.beta11","%f", (char *)&beta,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.tadpole.u0","%f", (char *)&u0,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.ssplaq","%f", (char *)&myssplaq,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.stplaq","%f", (char *)&mystplaq,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.nersc_linktr","%e", (char *)&nersc_linktr,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.nersc_checksum","%u", (char *)&nersc_checksum,0,0); return info; }
/* Follow USQCD style for record XML */ char *create_QCDML(){ size_t bytes = 0; char *info = (char *)malloc(INFOSTRING_MAX); size_t max = INFOSTRING_MAX; char begin[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><usqcdInfo><version>1.0</version>"; char begin_info[] = "<info>"; char end_info[] = "</info>"; char end[] = "</usqcdInfo>"; Real myssplaq = g_ssplaq; /* Precision conversion */ Real mystplaq = g_stplaq; /* Precision conversion */ Real nersc_linktr = linktrsum.real/3.; /* Convention and precision */ snprintf(info+bytes, max-bytes,"%s",begin); bytes = strlen(info); snprintf(info+bytes, max-bytes,"<plaq>%e</plaq>",(myssplaq+mystplaq)/6.); bytes = strlen(info); snprintf(info+bytes, max-bytes,"<linktr>%e</linktr>",nersc_linktr); bytes = strlen(info); snprintf(info+bytes, max-bytes,"%s",begin_info); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"action.description","%s", "\"Pure gauge\"",0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.description","%s", "\"One plaquette gauge action.\"",0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.beta11","%f", (char *)&beta,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.ssplaq","%f", (char *)&myssplaq,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.stplaq","%f", (char *)&mystplaq,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.nersc_linktr","%e", (char *)&nersc_linktr,0,0); bytes = strlen(info); sprint_gauge_info_item(info+bytes, max-bytes,"gauge.nersc_checksum","%lu", (char *)&nersc_checksum,0,0); bytes = strlen(info); snprintf(info+bytes, max-bytes,"%s",end_info); bytes = strlen(info); snprintf(info+bytes, max-bytes,"%s",end); return info; }