visit_handle SimGetMesh(int domain, const char *name, void *cbdata) { visit_handle h = VISIT_INVALID_HANDLE; if(strcmp(name, "mesh2d") == 0) { if(VisIt_RectilinearMesh_alloc(&h) != VISIT_ERROR) { visit_handle hxc, hyc; VisIt_VariableData_alloc(&hxc); VisIt_VariableData_alloc(&hyc); VisIt_VariableData_setDataF(hxc, VISIT_OWNER_SIM, 1, rmesh_dims[0], rmesh_x); VisIt_VariableData_setDataF(hyc, VISIT_OWNER_SIM, 1, rmesh_dims[1], rmesh_y); VisIt_RectilinearMesh_setCoordsXY(h, hxc, hyc); } } else if(strcmp(name, "mesh3d") == 0) { if(VisIt_CurvilinearMesh_alloc(&h) != VISIT_ERROR) { int nn; visit_handle hxc, hyc, hzc; nn = cmesh_dims[0] * cmesh_dims[1] * cmesh_dims[2]; VisIt_VariableData_alloc(&hxc); VisIt_VariableData_alloc(&hyc); VisIt_VariableData_alloc(&hzc); VisIt_VariableData_setDataF(hxc, VISIT_OWNER_SIM, 1, nn, (float*)cmesh_x); VisIt_VariableData_setDataF(hyc, VISIT_OWNER_SIM, 1, nn, (float*)cmesh_y); VisIt_VariableData_setDataF(hzc, VISIT_OWNER_SIM, 1, nn, (float*)cmesh_z); VisIt_CurvilinearMesh_setCoordsXYZ(h, cmesh_dims, hxc, hyc, hzc); } } return h; }
visit_handle SimGetMesh(int domain, const char *name, void *cbdata) { visit_handle h = VISIT_INVALID_HANDLE; simulation_data *sim = (simulation_data *)cbdata; if(VisIt_CurvilinearMesh_alloc(&h) != VISIT_ERROR) { visit_handle hx, hy, hz, hxyz; if(strcmp(name, "soa_s") == 0) { /* Set coordinates using a single variable data made from SOA data. */ serror(VisIt_VariableData_alloc(&hxyz)); serror(VisIt_VariableData_setArrayDataD(hxyz, 0, VISIT_OWNER_SIM, sim->soa.nnodes, 0, sizeof(double), sim->soa.x)); serror(VisIt_VariableData_setArrayDataD(hxyz, 1, VISIT_OWNER_SIM, sim->soa.nnodes, 0, sizeof(double), sim->soa.y)); serror(VisIt_VariableData_setArrayDataD(hxyz, 2, VISIT_OWNER_SIM, sim->soa.nnodes, 0, sizeof(double), sim->soa.z)); serror(VisIt_CurvilinearMesh_setCoords3(h, sim->dims, hxyz)); } else if(strcmp(name, "soa_m") == 0) { /* Set coordinates using 3 variable datas made from SOA data. */ serror(VisIt_VariableData_alloc(&hx)); serror(VisIt_VariableData_alloc(&hy)); serror(VisIt_VariableData_alloc(&hz)); serror(VisIt_VariableData_setDataD(hx, VISIT_OWNER_SIM, 1, sim->soa.nnodes, sim->soa.x)); serror(VisIt_VariableData_setDataD(hy, VISIT_OWNER_SIM, 1, sim->soa.nnodes, sim->soa.y)); serror(VisIt_VariableData_setDataD(hz, VISIT_OWNER_SIM, 1, sim->soa.nnodes, sim->soa.z)); serror(VisIt_CurvilinearMesh_setCoordsXYZ(h, sim->dims, hx, hy, hz)); } else if(strcmp(name, "soa_i") == 0) { /* Set coordinates using a single variable data made from SOA interleaved data. */ serror(VisIt_VariableData_alloc(&hxyz)); serror(VisIt_VariableData_setDataD(hxyz, VISIT_OWNER_SIM, 3, sim->soa.nnodes, sim->soa.xyz)); serror(VisIt_CurvilinearMesh_setCoords3(h, sim->dims, hxyz)); } else if(strcmp(name, "aos_s") == 0) { /* Set coordinates using a single variable data made from AOS data. */ serror(VisIt_VariableData_alloc(&hxyz)); serror(VisIt_VariableData_setArrayDataD(hxyz, 0, VISIT_OWNER_SIM, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].x))); serror(VisIt_VariableData_setArrayDataD(hxyz, 1, VISIT_OWNER_SIM, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].y))); serror(VisIt_VariableData_setArrayDataD(hxyz, 2, VISIT_OWNER_SIM, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].z))); serror(VisIt_CurvilinearMesh_setCoords3(h, sim->dims, hxyz)); } else if(strcmp(name, "aos_m") == 0) { /* Set coordinates using 3 variable datas made from AOS data. */ serror(VisIt_VariableData_alloc(&hx)); serror(VisIt_VariableData_alloc(&hy)); serror(VisIt_VariableData_alloc(&hz)); serror(VisIt_VariableData_setArrayDataD(hx, 0, VISIT_OWNER_SIM, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].x))); serror(VisIt_VariableData_setArrayDataD(hy, 0, VISIT_OWNER_SIM, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].y))); serror(VisIt_VariableData_setArrayDataD(hz, 0, VISIT_OWNER_SIM, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].z))); serror(VisIt_CurvilinearMesh_setCoordsXYZ(h, sim->dims, hx, hy, hz)); } else if(strcmp(name, "aos_c") == 0) { /* Set coordinates using 3 variable datas made from AOS data. Let's COPY data */ serror(VisIt_VariableData_alloc(&hx)); serror(VisIt_VariableData_alloc(&hy)); serror(VisIt_VariableData_alloc(&hz)); serror(VisIt_VariableData_setArrayDataD(hx, 0, VISIT_OWNER_COPY, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].x))); serror(VisIt_VariableData_setArrayDataD(hy, 0, VISIT_OWNER_COPY, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].y))); serror(VisIt_VariableData_setArrayDataD(hz, 0, VISIT_OWNER_COPY, sim->aos.nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].z))); serror(VisIt_CurvilinearMesh_setCoordsXYZ(h, sim->dims, hx, hy, hz)); } } return h; }