void write_defvars(DBfile *dbfile) { const char *names[] = {"velocity", "speed"}; const char *defs[] = {"{xc,yc,zc}", "magnitude(velocity)"}; int types[] = {DB_VARTYPE_VECTOR, DB_VARTYPE_SCALAR}; DBPutDefvars(dbfile, "defvars", 2, (DBCAS_t)names, types, (DBCAS_t)defs, NULL); }
virtual void WriteMasterFile(const bool *domainsHaveData) { std::string filename(MasterFile()); DBfile *dbfile = DBCreate(filename.c_str(), DB_CLOBBER, DB_LOCAL, "3D point mesh", DB_HDF5); if(dbfile == NULL) { fprintf(stderr, "Could not create master Silo file!\n"); return; } // Create an option list for saving cycle and time values. DBoptlist *optlist = DBMakeOptlist(2); DBAddOption(optlist, DBOPT_CYCLE, (void *)&cycle); DBAddOption(optlist, DBOPT_DTIME, (void *)&time); const char *snames[] = {"pointmesh", "vx", "vy", "vz", "restitution", "mass", "dom", "contact"}; const int svartypes[] = {DB_POINTMESH, DB_POINTVAR, DB_POINTVAR, DB_POINTVAR, DB_POINTVAR, DB_POINTVAR, DB_POINTVAR, DB_POINTVAR}; const bool isMesh[] = {true, false, false, false, false, false, false, false}; for(size_t i = 0; i < (sizeof(snames)/sizeof(const char*)); ++i) { std::vector<std::string> names; for(int d = 0; d < nDomains; ++d) { std::string domName("EMPTY"); if(domainsHaveData[d]) domName = (DomainFile(d) + ":") + snames[i]; names.push_back(domName); } char **varnames = new char *[nDomains]; int *vartypes = new int[nDomains]; for(int d = 0; d < nDomains; ++d) { varnames[d] = (char*)names[d].c_str(); vartypes[d] = svartypes[i]; } if(isMesh[i]) DBPutMultimesh(dbfile, snames[i], nDomains, varnames, vartypes, optlist); else DBPutMultivar(dbfile, snames[i], nDomains, varnames, vartypes, optlist); } const char *names[] = {"velocity", "speed", "ID"}; const char *defs[] = {"{vx,vy,vz}", "magnitude(velocity)", "global_nodeid(pointmesh)"}; int types[] = {DB_VARTYPE_VECTOR, DB_VARTYPE_SCALAR, DB_VARTYPE_SCALAR}; DBPutDefvars(dbfile, "defvars", 3, (char**)names, types, (char**)defs, NULL); DBFreeOptlist(optlist); DBClose(dbfile); }
/*--------------------*/ int main(int argc, char **argv) { DBfile *db; int i, driver = DB_PDB; char *filename = "mat_3x3x3_3across.silo"; char *coordnames[3]; float *coord[3]; i=1; while (i < argc) { if (strcmp(argv[i], "-driver") == 0) { i++; if (strcmp(argv[i], "DB_HDF5") == 0) { driver = DB_HDF5; } else if (strcmp(argv[i], "DB_PDB") == 0) { driver = DB_PDB; } else { fprintf(stderr,"Uncrecognized driver name \"%s\"\n", argv[i]); exit(-1); } } i++; } coordnames[0]=strdup("x"); coordnames[1]=strdup("y"); coordnames[2]=strdup("z"); coord[0] = x; coord[1] = y; coord[2] = z; dims[0]=nx; dims[1]=ny; dims[2]=nz; db=DBCreate(filename, DB_CLOBBER, DB_LOCAL, "Mixed zone 2d test", driver); DBPutQuadmesh(db, "mesh", coordnames, coord, dims, 3, DB_FLOAT, DB_NONCOLLINEAR, NULL); dims[0]=zx; dims[1]=zy; dims[2]=zz; DBPutMaterial(db, "material", "mesh", nmat, matnos, matlist, dims, 3, mix_next, mix_mat, mix_zone, mix_vf, mixlen, DB_FLOAT, NULL); char *expNames[3] = {"mat1", "mat2", "mat3"}; char *expDefs[3] = {"matvf(<material>, 1)", "matvf(<material>, 2)", "matvf(<material>, 3)"}; int expTypes[3] = {DB_VARTYPE_SCALAR, DB_VARTYPE_SCALAR, DB_VARTYPE_SCALAR}; DBoptlist *optlists[3] = {NULL, NULL, NULL}; DBPutDefvars(db, "_visit_defvars", 3, expNames, expTypes, expDefs, optlists); DBClose(db); return 0; }