示例#1
0
visit_handle
SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;

    if(strcmp(name, "unstructured3d") == 0)
    {
        if(VisIt_UnstructuredMesh_alloc(&h) != VISIT_ERROR)
        {
            visit_handle x,y,z,conn;

            VisIt_VariableData_alloc(&x);
            VisIt_VariableData_alloc(&y);
            VisIt_VariableData_alloc(&z);
            VisIt_VariableData_setDataD(x, VISIT_OWNER_SIM, 1, umnnodes, umx);
            VisIt_VariableData_setDataD(y, VISIT_OWNER_SIM, 1, umnnodes, umy);
            VisIt_VariableData_setDataD(z, VISIT_OWNER_SIM, 1, umnnodes, umz);

            VisIt_VariableData_alloc(&conn);
            VisIt_VariableData_setDataI(conn, VISIT_OWNER_SIM, 1, 
                lconnectivity, connectivity);

            VisIt_UnstructuredMesh_setCoordsXYZ(h, x, y, z);
            VisIt_UnstructuredMesh_setConnectivity(h, umnzones, conn);
        }
    }

    return h;
}
示例#2
0
visit_handle
SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "mesh1d") == 0)
    {
        if(VisIt_UnstructuredMesh_alloc(&h) != VISIT_ERROR)
        {
            visit_handle x,y,conn;
            int nzones;

            nzones = sim->npts-1;
            VisIt_VariableData_alloc(&x);
            VisIt_VariableData_alloc(&y);
            VisIt_VariableData_setDataF(x, VISIT_OWNER_SIM, 1, sim->npts, sim->x);
            VisIt_VariableData_setDataF(y, VISIT_OWNER_SIM, 1, sim->npts, sim->y);

            VisIt_VariableData_alloc(&conn);
            VisIt_VariableData_setDataI(conn, VISIT_OWNER_SIM, 1, 
                3*nzones, sim->conn);

            VisIt_UnstructuredMesh_setCoordsXY(h, x, y);
            VisIt_UnstructuredMesh_setConnectivity(h, nzones, conn);
        }
    }

    return h;
}
示例#3
0
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "zonal") == 0)
    {
        /* Find the right domain. */
        int i;
        Domain *d = NULL;
        for(i = 0; i < sim->nDomains; ++i)
        {
            if(sim->domains[i].globalIndex == domain)
            {
                d = &sim->domains[i];
                break;
            }
        }

        if(d != NULL && VisIt_VariableData_alloc(&h) != VISIT_ERROR)
        {
            int nTuples = (d->dims[0]-1) * (d->dims[1]-1) * (d->dims[2]-1);
            VisIt_VariableData_alloc(&h);
            VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
                nTuples, d->variable);
        }
    }

    return h;
}
示例#4
0
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_OKAY)
        {
            int i;
            visit_handle x,y;

            /* Initialize X coords. */
            for(i = 0; i < NX; ++i)
            {
                float t = (float)i / (float)(NX-1);
                rmesh_x[i] = (1.f-t)*XMIN + t*XMAX;
            }
            /* Initialize Y coords. */
            for(i = 0; i < NY; ++i) 
            {
                float t = (float)i / (float)(NY-1);
                rmesh_y[i] = (1.f-t)*YMIN + t*YMAX;
            }

            VisIt_VariableData_alloc(&x);
            VisIt_VariableData_alloc(&y);
            VisIt_VariableData_setDataF(x, VISIT_OWNER_SIM, 1, NX, rmesh_x);
            VisIt_VariableData_setDataF(y, VISIT_OWNER_SIM, 1, NY, rmesh_y);
            VisIt_RectilinearMesh_setCoordsXY(h, x, y);
        }
    }
    else if(strcmp(name, "ucdmesh") == 0)
    {
        visit_handle c, hc;
        if(VisIt_UnstructuredMesh_alloc(&h) == VISIT_OKAY &&
           VisIt_VariableData_alloc(&c) == VISIT_OKAY &&
           VisIt_VariableData_alloc(&hc) == VISIT_OKAY)
        {
            int nnodes, nzones;
            nnodes = (NX * NY);
            nzones = (NX-1)*(NY-1);
            VisIt_VariableData_setDataF(c, VISIT_OWNER_SIM, 2, nnodes, (float*)coords2d);
            VisIt_VariableData_setDataI(hc, VISIT_OWNER_SIM, 1, 5*nzones,
                connectivity);
            VisIt_UnstructuredMesh_setCoords(h, c);
            VisIt_UnstructuredMesh_setConnectivity(h, nzones, hc);
        }
    }

    return h;
}
示例#5
0
visit_handle
SimGetDomainList(const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    if(VisIt_DomainList_alloc(&h) != VISIT_ERROR)
    {
        visit_handle hdl;
        int i, *iptr = NULL, dcount = 0;
        int ndoms = 9;
        simulation_data *sim = (simulation_data *)cbdata;

        iptr = (int *)malloc(ndoms * sizeof(int));
        memset(iptr, 0, ndoms * sizeof(int));

        for(i = 0; i < ndoms; i++)
        {
            int owner_of_domain = i % sim->par_size;
            if(sim->par_rank == owner_of_domain)
                iptr[dcount++] = i;
        }

        VisIt_VariableData_alloc(&hdl);
        VisIt_VariableData_setDataI(hdl, VISIT_OWNER_VISIT, 1, dcount, iptr);
        VisIt_DomainList_setDomains(h, dcount, hdl);
    }
    return h;
}
示例#6
0
visit_handle SimGetVariable(int domain, const char *name, void *cbdata)
{
  visit_handle h = VISIT_INVALID_HANDLE;
  int f, ret = -1, nComponents = 1, nTuples;
  simulation_data *sim = (simulation_data *)cbdata;

  if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
    {
    nTuples = (sim->grid.Ncolumns) * (sim->grid.Nrows) *  (sim->grid.Nlevels);
    for (f = 0; f < NFIELDS; f++)
      {
      char simdname[8];
      sprintf(simdname, "data%03d", f);
      if(strcmp(name, simdname) == 0)
        {
        ret = VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, nComponents, nTuples, sim->grid.data[f]);
        break;
        }
      }
     if(ret == VISIT_ERROR)
        {
        VisIt_VariableData_free(h);
        h = VISIT_INVALID_HANDLE;
        }
    }
    return h;
}
示例#7
0
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    int ncells;
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "rect_var") == 0)
    {
        ncells = (sim->blankRectMesh.dims[0]-1) * (sim->blankRectMesh.dims[1]-1);
        VisIt_VariableData_alloc(&h);
        VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
            ncells, sim->blankRectMesh.data);
    }
    else if(strcmp(name, "curv_var") == 0)
    {
        ncells = (sim->blankCurvMesh.dims[0]-1) * (sim->blankCurvMesh.dims[1]-1);
        VisIt_VariableData_alloc(&h);
        VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
            ncells, sim->blankCurvMesh.data);
    }
    else if(strcmp(name, "ucd_var") == 0)
    {
        VisIt_VariableData_alloc(&h);
        VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
            sim->blankUcdMesh.ncells, sim->blankUcdMesh.data);
    }
    else if(strncmp(name, "multi_var", 9) == 0)
    {
        ncells = (sim->multidomain[domain].m.dims[0]-1) * (sim->multidomain[domain].m.dims[1]-1);
        VisIt_VariableData_alloc(&h);
        VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
            ncells, sim->multidomain[domain].m.data);
    }
    else if(domain < 4 && strcmp(name, "multi_types_var") == 0)
    {
        ncells = (sim->multipletypes[domain].dims[0]-1) * 
                 (sim->multipletypes[domain].dims[1]-1) *
                 (sim->multipletypes[domain].dims[2]-1);
        VisIt_VariableData_alloc(&h);
        VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
            ncells, sim->multipletypes[domain].data);
    }
    return h;
}
示例#8
0
文件: amr.c 项目: ahota/visit_intel
visit_handle
SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;

    if(strcmp(name, "amr") == 0)
    {
        if(VisIt_RectilinearMesh_alloc(&h) != VISIT_ERROR)
        {
            visit_handle x, y;
            int   i, nx, ny;
            float cx[100], cy[100], t;

            /* Create the X coordinates */
            nx = rmxext[domain][1] - rmxext[domain][0]+1+1;
            for(i = 0; i < nx; ++i)
            {
                t = (float)i / (float)(nx-1);
                cx[i] = (1.-t)*rmx[domain][0] + t*rmx[domain][1];
            }

            /* Create the Y coordinates */
            ny = rmyext[domain][1] - rmyext[domain][0]+1+1;
            for(i = 0; i < ny; ++i)
            {
                t = (float)i / (float)(ny-1);
                cy[i] = (1.-t)*rmy[domain][0] + t*rmy[domain][1];
            }

            VisIt_VariableData_alloc(&x);
            VisIt_VariableData_alloc(&y);
            VisIt_VariableData_setDataF(x, VISIT_OWNER_COPY, 1, nx, cx);
            VisIt_VariableData_setDataF(y, VISIT_OWNER_COPY, 1, ny, cy);
            VisIt_RectilinearMesh_setCoordsXY(h, x, y);
        }
    }

    return h;
}
示例#9
0
visit_handle SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "mesh") == 0)
    {
        if(VisIt_RectilinearMesh_alloc(&h) != VISIT_ERROR)
        {
            int minRealIndex[3], maxRealIndex[3];
            minRealIndex[0] = 0;
            minRealIndex[1] = 0;
            minRealIndex[2] = 0;
            maxRealIndex[0] = sim->grid.Ncolumns;
            maxRealIndex[1] = sim->grid.Nrows;
            maxRealIndex[2] = sim->grid.Nlevels;
#ifdef SHOW_GHOST_ARRAY
            // only modify in X and Y directions, since Z does not have ghost
            minRealIndex[0]++;
            minRealIndex[1]++;
            maxRealIndex[0]--;
            maxRealIndex[1]--;
#endif
    //fprintf(stderr,"minRealIndex[%dx%dx%d], maxRealIndex[%dx%dx%d]\n", minRealIndex[0], minRealIndex[1],minRealIndex[2],maxRealIndex[0], maxRealIndex[1],maxRealIndex[2]);
            visit_handle hxc, hyc, hzc;
            VisIt_VariableData_alloc(&hxc);
            VisIt_VariableData_alloc(&hyc);
            VisIt_VariableData_alloc(&hzc);
            VisIt_VariableData_setDataF(hxc, VISIT_OWNER_SIM, 1, sim->grid.Ncolumns+1, sim->grid.rmesh_x);
            VisIt_VariableData_setDataF(hyc, VISIT_OWNER_SIM, 1, sim->grid.Nrows+1,    sim->grid.rmesh_y);
            VisIt_VariableData_setDataF(hzc, VISIT_OWNER_SIM, 1, sim->grid.Nlevels+1,  sim->grid.rmesh_z);
            VisIt_RectilinearMesh_setCoordsXYZ(h, hxc, hyc, hzc);
#ifdef SHOW_GHOST_ARRAY
            VisIt_RectilinearMesh_setRealIndices(h, minRealIndex, maxRealIndex);
#endif
        }
    }
    return h;
}
示例#10
0
文件: stubs.c 项目: ybouret/iics
visit_handle
SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle res = VISIT_INVALID_HANDLE;
    
    if(strcmp(name, "quadmesh") == 0)
    {
        if(VisIt_RectilinearMesh_alloc(&res) != VISIT_ERROR)
        {
            int i,minRealIndex[3]={0,0,0}, maxRealIndex[3]={0,0,0};
            float *rmesh[3];
            visit_handle h[3];
            
            // fprintf(stderr,"proc %d\t:simgetmesh: %d\t%d\t%d\n",rank,rmesh_dims[0],rmesh_dims[1],rmesh_dims[2]);
            // fflush(stderr);
            
            for(i=0;i<3;i++)
            {
                minRealIndex[i] = 0;
                maxRealIndex[i] = rmesh_dims[i]-1;
                // attention do not free !
                rmesh[i] = (float *)malloc(sizeof(float) * rmesh_dims[i]);
            }
            
            for(i = 0; i < rmesh_dims[0]; ++i)
                rmesh[0][i] = i*dx;
            for(i = 0; i < rmesh_dims[1]; ++i)
                rmesh[1][i] = i*dy;
            for(i = 0; i < rmesh_dims[2]; ++i)
                rmesh[2][i] =(zmin+i)*dz;
            
            
            for(i=0;i<3;i++)
            {
                VisIt_VariableData_alloc(&h[i]);
                VisIt_VariableData_setDataF(h[i], VISIT_OWNER_VISIT, 1,rmesh_dims[i], rmesh[i]);
                
            }
            VisIt_RectilinearMesh_setCoordsXYZ(res, h[0], h[1],h[2]);
            VisIt_RectilinearMesh_setRealIndices(res, minRealIndex, maxRealIndex);
            
            
        }
        else
        {
            fprintf(stderr,"proc: %d:Erreur allocation in SimGetMesh\n",rank);
        }
    }
    
    return res;
}
示例#11
0
visit_handle
SimGetCurve(const char *name, void *cbdata)
{
    int h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "sine") == 0)
    {
        if(VisIt_CurveData_alloc(&h) != VISIT_ERROR)
        {
            visit_handle hxc, hyc;

            /* Give the arrays to VisIt. VisIt will free them. */
            VisIt_VariableData_alloc(&hxc);
            VisIt_VariableData_alloc(&hyc);
            VisIt_VariableData_setDataF(hxc, VISIT_OWNER_SIM, 1, NPTS, sim->x);
            VisIt_VariableData_setDataF(hyc, VISIT_OWNER_SIM, 1, NPTS, sim->y);
            VisIt_CurveData_setCoordsXY(h, hxc, hyc);
        }
    }

    return h;
}
示例#12
0
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "zonal") == 0)
    {
        int nTuples = sim->npts-1;
        VisIt_VariableData_alloc(&h);
        VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
            nTuples, sim->zonal);
    }
    else if(strcmp(name, "nodal") == 0)
    {
        int nTuples = sim->npts;
        VisIt_VariableData_alloc(&h);
        VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
            nTuples, sim->nodal);
    }

    return h;
}
示例#13
0
visit_handle
SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "mesh") == 0)
    {
        /* Find the right domain. */
        int i;
        Domain *d = NULL;
        for(i = 0; i < sim->nDomains; ++i)
        {
            if(sim->domains[i].globalIndex == domain)
            {
                d = &sim->domains[i];
                break;
            }
        }

        if(d != NULL && VisIt_RectilinearMesh_alloc(&h) != VISIT_ERROR)
        {
            visit_handle hx, hy, hz;

            VisIt_VariableData_alloc(&hx);
            VisIt_VariableData_alloc(&hy);
            VisIt_VariableData_alloc(&hz);
            VisIt_VariableData_setDataF(hx, VISIT_OWNER_SIM, 1, d->dims[0], d->x);
            VisIt_VariableData_setDataF(hy, VISIT_OWNER_SIM, 1, d->dims[1], d->y);
            VisIt_VariableData_setDataF(hz, VISIT_OWNER_SIM, 1, d->dims[2], d->z);
            VisIt_RectilinearMesh_setCoordsXYZ(h, hx, hy, hz);
        }
    }

    return h;
}
示例#14
0
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;
}
示例#15
0
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;

    if(strcmp(name, "scalar") == 0)
    {
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
                (NX-1) * (NY-1), &zonal_scalar[0][0]); 
        }
    }

    return h;
}
示例#16
0
visit_handle
SimGetMixedVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;

    if(strcmp(name, "scalar") == 0)
    {
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            int nTuples = sizeof(mixvar) / sizeof(float);
            VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1,
                nTuples, mixvar);
        }
    }

    return h;
}
示例#17
0
文件: stubs.c 项目: ybouret/iics
/*
 visit_handle
 SimGetVariableWorking(int domain, const char *name, void *cbdata)
 {
 visit_handle h = VISIT_INVALID_HANDLE;
 //  simulation_data *sim = (simulation_data *)cbdata;
 
 // fprintf(stderr,"proc %d: SimGetVariable\n",rank);
 
 if(strcmp(name, "u") == 0)
 {
 float *zoneptr;
 float  *rmesh_zonal;
 int i, j, k, nTuples;
 
 
 // Calculate a zonal variable that moves around.
 rmesh_zonal = (float*)malloc(sizeof(float) * (rmesh_dims[0]-1) * (rmesh_dims[1]-1)*(rmesh_dims[2]-1));
 zoneptr = rmesh_zonal;
 
 for(k=zmin;k<zmax;k++)
 {
 for(j = 0; j < rmesh_dims[1]-1; ++j)
 {
 for(i = 0; i < rmesh_dims[0]-1; ++i)
 {
 
 *zoneptr++ = fields[0][k][j][i];
 }
 }
 }
 nTuples = (rmesh_dims[0]-1) * (rmesh_dims[1]-1)*(rmesh_dims[2]-1);
 VisIt_VariableData_alloc(&h);
 VisIt_VariableData_setDataF(h, VISIT_OWNER_VISIT, 1,
 nTuples, rmesh_zonal);
 }
 
 return h;
 }
 */
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    //  simulation_data *sim = (simulation_data *)cbdata;
    
    // fprintf(stderr,"proc %d: SimGetVariable\n",rank);
    
    if(strcmp(name, "u") == 0)
    {
        float *zoneptr;
        float  *rmesh_zonal;
        int i, j, k, nTuples;
        nTuples = (rmesh_dims[0]) * (rmesh_dims[1])*(rmesh_dims[2]);
        
        
        // Calculate a zonal variable that moves around.
        rmesh_zonal = (float*)malloc(sizeof(float)*nTuples);
        zoneptr = rmesh_zonal;
        
        // A RETRAVAILLER
        if((size==2)&&rank==0)
        {
            // for(k=zmin;k<=zmax;k++)
            for(k=zmax+NG;k>=zmin;--k)
            {
                for(j = 0; j < rmesh_dims[1]; ++j)
                {
                    for(i = 0; i < rmesh_dims[0]; ++i)
                    {
                        
                        *zoneptr++ = fields[0][k][j][i];
                    }
                }
            }
        }
        else
        {
            VisIt_VariableData_alloc(&h);
            VisIt_VariableData_setDataD(h,VISIT_OWNER_SIM,1,nTuples, &fields[0][zmin][ymin][xmin]);
        }
    }
    
    return h;
}
示例#18
0
visit_handle
SimGetDomainList(const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    if(VisIt_DomainList_alloc(&h) != VISIT_ERROR)
    {
        visit_handle hdl;
        int *iptr = NULL;
        simulation_data *sim = (simulation_data *)cbdata;

        iptr = (int *)malloc(sizeof(int));
        *iptr = sim->par_rank;

        VisIt_VariableData_alloc(&hdl);
        VisIt_VariableData_setDataI(hdl, VISIT_OWNER_VISIT, 1, 1, iptr);
        VisIt_DomainList_setDomains(h, sim->par_size, hdl);
    }
    return h;
}
示例#19
0
visit_handle
SimGetDomainList(const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    if(VisIt_DomainList_alloc(&h) != VISIT_ERROR)
    {
        visit_handle hdl;
        int i, *iptr = NULL;
        simulation_data *sim = (simulation_data *)cbdata;

        iptr = (int *)malloc(sizeof(int) * sim->nDomains);
        for(i = 0; i < sim->nDomains; ++i)
            iptr[i] = sim->domains[i].globalIndex;

        VisIt_VariableData_alloc(&hdl);
        VisIt_VariableData_setDataI(hdl, VISIT_OWNER_VISIT, 1, sim->nDomains, iptr);
        VisIt_DomainList_setDomains(h, sim->nTotalDomains, hdl);
    }
    return h;
}
示例#20
0
visit_handle
SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;

    if(strcmp(name, "mesh2d") == 0)
    {
        if(VisIt_CurvilinearMesh_alloc(&h) != VISIT_ERROR)
        {
            int nTuples;
            visit_handle hxy;
            nTuples = mesh_dims[domain][0] * mesh_dims[domain][1];

            VisIt_VariableData_alloc(&hxy);
            VisIt_VariableData_setDataF(hxy, VISIT_OWNER_SIM, 2, nTuples, 
                                        mesh_coords[domain]);
            VisIt_CurvilinearMesh_setCoords2(h, mesh_dims[domain], hxy);
        }
    }

    return h;
}
示例#21
0
visit_handle
SimGetDomainList(const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    if(VisIt_DomainList_alloc(&h) != VISIT_ERROR)
    {
        visit_handle hdl;
        int *iptr = NULL, i, nTuples = 0;
        simulation_data *sim = (simulation_data *)cbdata;

        iptr = (int *)malloc(sizeof(int) * NDOMAINS);
        for(i = 0; i < NDOMAINS; ++i)
        {
            if(i % sim->par_size == sim->par_rank)
                iptr[nTuples++] = i;
        }

        VisIt_VariableData_alloc(&hdl);
        VisIt_VariableData_setDataI(hdl, VISIT_OWNER_VISIT, 1, nTuples, iptr);
        VisIt_DomainList_setDomains(h, NDOMAINS, hdl);
    }
    return h;
}
示例#22
0
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    int nComponents = 1, nTuples = 0;

    if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
    {
        if(strcmp(name, "zonal") == 0)
        {
            nTuples = (rmesh_dims[0]-1) * (rmesh_dims[1]-1);
            VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, nComponents,
                nTuples, zonal);
        }
        else if(strcmp(name, "nodal") == 0)
        {
            nTuples = cmesh_dims[0] * cmesh_dims[1] *
                cmesh_dims[2];
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents,
                nTuples, (double*)nodal);
        }
    }
    return h;
}
示例#23
0
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "domainID") == 0)
    {
        double *domainID = NULL;
        int i, nTuples;

        /* Fill in the domain id. */
        nTuples = (mesh_dims[domain][0]-1)*(mesh_dims[domain][1]-1);
        domainID = (double*)malloc(sizeof(double) * nTuples);
        for(i = 0; i < nTuples; ++i)
            domainID[i] = (double)domain;

        VisIt_VariableData_alloc(&h);
        VisIt_VariableData_setDataD(h, VISIT_OWNER_VISIT, 1,
            nTuples, domainID);
    }

    return h;
}
示例#24
0
文件: data.cpp 项目: ybouret/iics
visit_handle Simulation:: get_variable( int domain, const string &name ) const
{

    visit_handle h = VISIT_INVALID_HANDLE;
    
    if( name == "P" )
    {
        const int nComponents= 1;
        const int nTuples    = P.items;
        //MPI.Printf0( stderr, "Sending P: %dx%d\n", nComponents, nTuples);
        assert(P.entry!=NULL);
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents, nTuples, P.entry);
        }
        return h;
    }
    
    if( name == "B" )
    {
        const int nComponents= 1;
        const int nTuples    = B.items;
        //MPI.Printf0( stderr, "Sending B: %dx%d\n", nComponents, nTuples);
        assert(B.entry!=NULL);
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents, nTuples, B.entry);
        }
        return h;
    }
    
    if( name == "Bulk" )
    {
        const int nComponents= 1;
        const int nTuples    = B.items;
        //MPI.Printf0( stderr, "Sending B: %dx%d\n", nComponents, nTuples);
        assert(Bulk.entry!=NULL);
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents, nTuples, Bulk.entry);
        }
        return h;
    }

    
    if( name == "U" )
    {
        const int nComponents= 2;
        const int nTuples    = U.items;
        //MPI.Printf0( stderr, "Sending U: %dx%d\n", nComponents, nTuples);
        assert(U.entry!=NULL);
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents, nTuples, (Real*)(U.entry));
        }
        return h;
    }
    
    if( name == "gradP" )
    {
        const int nComponents= 2;
        const int nTuples    = gradP.items;
        //MPI.Printf0( stderr, "Sending U: %dx%d\n", nComponents, nTuples);
        assert(gradP.entry!=NULL);
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents, nTuples, (Real*)(gradP.entry));
        }
        return h;
    }

    if( name == "Penter" )
    {
        const int nComponents= 2;
        const int nTuples    = U.items;
        assert(Penter.entry!=NULL);
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents, nTuples, (Real*)(Penter.entry));
        }
        return h;
    }
    
    if( name == "Pleave" )
    {
        const int nComponents= 2;
        const int nTuples    = U.items;
        assert(Pleave.entry!=NULL);
        if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
        {
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents, nTuples, (Real*)(Pleave.entry));
        }
        return h;
    }


    return h;
}
示例#25
0
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    int nComponents = 1, nTuples = 0;

    if(VisIt_VariableData_alloc(&h) == VISIT_OKAY)
    {
        if(strcmp(name, "zonal_scalar") == 0)
        {
            nTuples = (rmesh_dims[0]-1) * (rmesh_dims[1]-1);
            VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, nComponents,
                nTuples, zonal);
        }
        else if(strcmp(name, "nodal_scalar") == 0 ||
                strcmp(name, "hidden") == 0)
        {
            nTuples = cmesh_dims[0] * cmesh_dims[1] *
                cmesh_dims[2];
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents,
                nTuples, (double*)nodal);
        }
        else if(strcmp(name, "zonal_vector") == 0)
        {
            nComponents = 2;
            nTuples = (rmesh_dims[0]-1) * (rmesh_dims[1]-1);
            VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, nComponents,
                nTuples, (float *)zonal_vector);
        }
        else if(strcmp(name, "nodal_vector") == 0)
        {
            nComponents = 3;
            nTuples = cmesh_dims[0] * cmesh_dims[1] *
                cmesh_dims[2];
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents,
                nTuples, (double *)nodal_vector);
        }
        else if(strcmp(name, "zonal_label") == 0)
        {
            nComponents = 7;
            nTuples = (rmesh_dims[0]-1) * (rmesh_dims[1]-1);
            VisIt_VariableData_setDataC(h, VISIT_OWNER_SIM, nComponents,
                nTuples, (char *)zonal_labels);
        }
        else if(strcmp(name, "zonal_array") == 0)
        {
            nComponents = 4;
            nTuples = (rmesh_dims[0]-1) * (rmesh_dims[1]-1);
            VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, nComponents,
                nTuples, (float *)zonal_array);
        }
        else if(strcmp(name, "nodal_array") == 0)
        {
            nComponents = 4;
            nTuples = cmesh_dims[0] * cmesh_dims[1] *
                cmesh_dims[2];
            VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, nComponents,
                nTuples, (double *)nodal_array);
        }
        else
        {
            VisIt_VariableData_free(h);
            h = VISIT_INVALID_HANDLE;
        }
    }
    return h;
}
示例#26
0
visit_handle
SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    visit_handle c = VISIT_INVALID_HANDLE;
    int owner = VISIT_OWNER_SIM;
    int dt = VISIT_DATATYPE_FLOAT;

    if(strstr(name, "double") != NULL)
        dt = VISIT_DATATYPE_DOUBLE;
    if(strstr(name, "dynamic") != NULL)
        owner = VISIT_OWNER_VISIT;

    if(strstr(name, "curv") != NULL)
    {
        if(VisIt_CurvilinearMesh_alloc(&h) == VISIT_OKAY &&
           VisIt_VariableData_alloc(&c) == VISIT_OKAY)
        {
            if(strstr(name, "curv2d") != NULL)
            {
                int dims[2];
                dims[0] = NX;
                dims[1] = NY;
                SetData(c, owner, dt, 2, NX*NY, (float*)coords2d);
                VisIt_CurvilinearMesh_setCoords2(h, dims, c);
            }
            else
            {
                int dims[3];
                dims[0] = NX;
                dims[1] = NY;
                dims[2] = NZ;
                SetData(c, owner, dt, 3, NX*NY*NZ, (float*)coords3d);
                VisIt_CurvilinearMesh_setCoords3(h, dims, c);
            }
        }
    }
    else if(strstr(name, "point") != NULL)
    {
        if(VisIt_PointMesh_alloc(&h) == VISIT_OKAY &&
           VisIt_VariableData_alloc(&c) == VISIT_OKAY)
        {
            if(strstr(name, "point2d") != NULL)
                SetData(c, owner, dt, 2, NX*NY, (float*)coords2d);
            else
                SetData(c, owner, dt, 3, NX*NY*NZ, (float*)coords3d);

            VisIt_PointMesh_setCoords(h, c);
        }
    }
    else if(strstr(name, "ucd") != NULL)
    {
        visit_handle hc;
        if(VisIt_UnstructuredMesh_alloc(&h) == VISIT_OKAY &&
           VisIt_VariableData_alloc(&c) == VISIT_OKAY &&
           VisIt_VariableData_alloc(&hc) == VISIT_OKAY)
        {
            int nzones = 0;
            if(strstr(name, "ucd2d") != NULL)
            {
                int i, j, lconnectivity;
                int *connectivity = NULL, *conn = NULL;

                nzones = (NX-1)*(NY-1);
                lconnectivity = 5*nzones;
                conn = connectivity = (int*)malloc(lconnectivity * sizeof(int));
                for(j = 0; j < NY-1; ++j)
                    for(i = 0; i < NX-1; ++i)
                    {
                        *conn++ = VISIT_CELL_QUAD;
                        *conn++ = j*NX + i;
                        *conn++ = j*NX + (i+1);
                        *conn++ = (j+1)*NX + (i+1);
                        *conn++ = (j+1)*NX + i;
                    }
                SetData(c, owner, dt, 2, NX*NY, (float*)coords2d);
                VisIt_VariableData_setDataI(hc, VISIT_OWNER_VISIT, 1, lconnectivity,
                    connectivity);
            }
            else
            {
                int i, j, k, lconnectivity;
                int *connectivity = NULL, *conn = NULL;

                nzones = (NX-1)*(NY-1)*(NZ-1);
                lconnectivity = 9*nzones;
                conn = connectivity = (int*)malloc(lconnectivity * sizeof(int));
                for(k = 0; k < NZ-1; ++k)
                  for(j = 0; j < NY-1; ++j)
                    for(i = 0; i < NX-1; ++i)
                    {
                        *conn++ = VISIT_CELL_HEX;
                        *conn++ = k*NX*NY + j*NX + i;
                        *conn++ = k*NX*NY + j*NX + (i+1);
                        *conn++ = k*NX*NY + (j+1)*NX + (i+1);
                        *conn++ = k*NX*NY + (j+1)*NX + i;
                        *conn++ = (k+1)*NX*NY + j*NX + i;
                        *conn++ = (k+1)*NX*NY + j*NX + (i+1);
                        *conn++ = (k+1)*NX*NY + (j+1)*NX + (i+1);
                        *conn++ = (k+1)*NX*NY + (j+1)*NX + i;
                    }
                SetData(c, owner, dt, 3, NX*NY*NZ, (float*)coords3d);
                VisIt_VariableData_setDataI(hc, VISIT_OWNER_VISIT, 1, lconnectivity,
                    connectivity);
            }

            VisIt_UnstructuredMesh_setCoords(h, c);
            VisIt_UnstructuredMesh_setConnectivity(h, nzones, hc);
        }
    }
    return h;
}
示例#27
0
visit_handle
SimGetMesh(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strcmp(name, "rect_blank") == 0)
    {
        if(VisIt_RectilinearMesh_alloc(&h) != VISIT_ERROR)
        {
            int ncells;
            visit_handle hx, hy, gc;

            VisIt_VariableData_alloc(&hx);
            VisIt_VariableData_alloc(&hy);
            VisIt_VariableData_setDataF(hx, VISIT_OWNER_SIM, 1, sim->blankRectMesh.dims[0], sim->blankRectMesh.x);
            VisIt_VariableData_setDataF(hy, VISIT_OWNER_SIM, 1, sim->blankRectMesh.dims[1], sim->blankRectMesh.y);
            VisIt_RectilinearMesh_setCoordsXY(h, hx, hy);

            /* Attach ghost cells to blank out certain cells*/
            VisIt_VariableData_alloc(&gc);
            ncells = (sim->blankRectMesh.dims[0]-1) * (sim->blankRectMesh.dims[1]-1);
            VisIt_VariableData_setDataI(gc, VISIT_OWNER_SIM, 1, ncells, sim->blankRectMesh.ghostCells);
            VisIt_RectilinearMesh_setGhostCells(h, gc);
        }
    }
    else if(strcmp(name, "curv_blank") == 0)
    {
        if(VisIt_CurvilinearMesh_alloc(&h) != VISIT_ERROR)
        {
            int ncells, nnodes;
            visit_handle hx, hy, gc;

            nnodes = sim->blankCurvMesh.dims[0] * sim->blankCurvMesh.dims[1];
            ncells = (sim->blankCurvMesh.dims[0]-1) * (sim->blankCurvMesh.dims[1]-1);

            VisIt_VariableData_alloc(&hx);
            VisIt_VariableData_alloc(&hy);
            VisIt_VariableData_setDataF(hx, VISIT_OWNER_SIM, 1, nnodes, sim->blankCurvMesh.x);
            VisIt_VariableData_setDataF(hy, VISIT_OWNER_SIM, 1, nnodes, sim->blankCurvMesh.y);
            VisIt_CurvilinearMesh_setCoordsXY(h, sim->blankCurvMesh.dims, hx, hy);

            /* Attach ghost cells to blank out certain cells*/
            VisIt_VariableData_alloc(&gc);
            VisIt_VariableData_setDataI(gc, VISIT_OWNER_SIM, 1, ncells, sim->blankCurvMesh.ghostCells);
            VisIt_CurvilinearMesh_setGhostCells(h, gc);
        }
    }
    else if(strcmp(name, "ucd_blank") == 0)
    {
        if(VisIt_UnstructuredMesh_alloc(&h) != VISIT_ERROR)
        {
            visit_handle hxyz, hc, gc;

            VisIt_VariableData_alloc(&hxyz);
            VisIt_VariableData_setDataF(hxyz, VISIT_OWNER_SIM, 3, sim->blankUcdMesh.nnodes, sim->blankUcdMesh.xyz);
            VisIt_UnstructuredMesh_setCoords(h, hxyz);

            VisIt_VariableData_alloc(&hc);
            VisIt_VariableData_setDataI(hc, VISIT_OWNER_SIM, 1, sim->blankUcdMesh.connectivityLen,
                sim->blankUcdMesh.connectivity);
            VisIt_UnstructuredMesh_setConnectivity(h, sim->blankUcdMesh.ncells, hc);

            /* Attach ghost cells to blank out certain cells*/
            VisIt_VariableData_alloc(&gc);
            VisIt_VariableData_setDataI(gc, VISIT_OWNER_SIM, 1, sim->blankUcdMesh.ncells, sim->blankUcdMesh.ghostCells);
            VisIt_UnstructuredMesh_setGhostCells(h, gc);
        }
    }
    else if(strncmp(name, "multi_domain", 12) == 0)
    {
        if(VisIt_RectilinearMesh_alloc(&h) != VISIT_ERROR)
        {
            int ncells;
            visit_handle hx, hy, gc;

            VisIt_VariableData_alloc(&hx);
            VisIt_VariableData_alloc(&hy);
            VisIt_VariableData_setDataF(hx, VISIT_OWNER_SIM, 1, sim->multidomain[domain].m.dims[0], sim->multidomain[domain].m.x);
            VisIt_VariableData_setDataF(hy, VISIT_OWNER_SIM, 1, sim->multidomain[domain].m.dims[1], sim->multidomain[domain].m.y);
            VisIt_RectilinearMesh_setCoordsXY(h, hx, hy);

            if(strcmp(name, "multi_domain") == 0)
            {
                /* Do ghost cells using a ghost cells array. */
                VisIt_VariableData_alloc(&gc);
                ncells = (sim->multidomain[domain].m.dims[0]-1) * (sim->multidomain[domain].m.dims[1]-1);
                VisIt_VariableData_setDataI(gc, VISIT_OWNER_SIM, 1, ncells, sim->multidomain[domain].m.ghostCells);
                VisIt_RectilinearMesh_setGhostCells(h, gc);
            }
            else
            {
                /* Do ghost cells using indices. Note: other mesh types can also 
                 * designate ghost cells using indices.
                 */
                VisIt_RectilinearMesh_setRealIndices(h, sim->multidomain[domain].minReal, 
                    sim->multidomain[domain].maxReal);
            }
        }
    }
    else if(strcmp(name, "multi_types") == 0)
    {
        if(domain < 4 && VisIt_RectilinearMesh_alloc(&h) != VISIT_ERROR)
        {
            int ncells;
            visit_handle hx, hy, hz, gc;

            VisIt_VariableData_alloc(&hx);
            VisIt_VariableData_alloc(&hy);
            VisIt_VariableData_alloc(&hz);
            VisIt_VariableData_setDataF(hx, VISIT_OWNER_SIM, 1, sim->multipletypes[domain].dims[0], sim->multipletypes[domain].x);
            VisIt_VariableData_setDataF(hy, VISIT_OWNER_SIM, 1, sim->multipletypes[domain].dims[1], sim->multipletypes[domain].y);
            VisIt_VariableData_setDataF(hz, VISIT_OWNER_SIM, 1, sim->multipletypes[domain].dims[2], sim->multipletypes[domain].z);
            VisIt_RectilinearMesh_setCoordsXYZ(h, hx, hy, hz);

            /* Do ghost cells using a ghost cells array. */
            VisIt_VariableData_alloc(&gc);
            ncells = (sim->multipletypes[domain].dims[0]-1) *
                     (sim->multipletypes[domain].dims[1]-1) *
                     (sim->multipletypes[domain].dims[2]-1);
            VisIt_VariableData_setDataI(gc, VISIT_OWNER_SIM, 1, ncells, sim->multipletypes[domain].ghostCells);
            VisIt_RectilinearMesh_setGhostCells(h, gc);
        }
    }
    return h;
}
示例#28
0
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;
}
示例#29
0
visit_handle
SimGetMaterial(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;

    /* Allocate a VisIt_MaterialData */
    VisIt_MaterialData_alloc(&h);
    if(strcmp(name, "Material") == 0)
    {
        int i, j, m, cell = 0, arrlen = 0;
        int nmats, cellmat[10], matnos[3]={1,2,3};
        float cellmatvf[10];

        /* The matlist table indicates the material numbers that are found in
         * each cell. Every 3 numbers indicates the material numbers in a cell.
         * A material number of 0 means that the material entry is not used.
         */
        int matlist[NY-1][NX-1][3] = {
            {{3,0,0},{2,3,0},{1,2,0},{1,0,0}},
            {{3,0,0},{2,3,0},{1,2,0},{1,0,0}},
            {{3,0,0},{2,3,0},{1,2,3},{1,2,0}}
        };

        /* The mat_vf table indicates the material volume fractions that are
         * found in a cell.
         */
        float mat_vf[NY-1][NX-1][3] = {
            {{1.,0.,0.},{0.75,0.25,0.},  {0.8125,0.1875, 0.},{1.,0.,0.}},
            {{1.,0.,0.},{0.625,0.375,0.},{0.5625,0.4375,0.}, {1.,0.,0.}},
            {{1.,0.,0.},{0.3,0.7,0.},    {0.2,0.4,0.4},      {0.55,0.45,0.}}
        };

        /* Tell the object we'll be adding cells to it using add*Cell functions */
        VisIt_MaterialData_appendCells(h, (NX-1)*(NY-1));

        /* Fill in the VisIt_MaterialData */
        VisIt_MaterialData_addMaterial(h, matNames[0], &matnos[0]);
        VisIt_MaterialData_addMaterial(h, matNames[1], &matnos[1]);
        VisIt_MaterialData_addMaterial(h, matNames[2], &matnos[2]);

        for(j = 0; j < NY-1; ++j)
        {
            for(i = 0; i < NX-1; ++i, ++cell)
            {
                nmats = 0;
                for(m = 0; m < 3; ++m)
                {
                    if(matlist[j][i][m] > 0)
                    {
                        cellmat[nmats] = matnos[matlist[j][i][m] - 1];
                        cellmatvf[nmats] = mat_vf[j][i][m];
                        nmats++;
                    }
                }        
                if(nmats > 1)
                    VisIt_MaterialData_addMixedCell(h, cell, cellmat, cellmatvf, nmats);
                else
                    VisIt_MaterialData_addCleanCell(h, cell, cellmat[0]);
            }
        }
    }
    else if(strcmp(name, "MaterialFromArrays") == 0)
    {
        int nTuples, matnos[] = {11,22,33};
        visit_handle hmatlist, hmix_zone, hmix_mat, hmix_vf, hmix_next;
      
        /* Fill in the VisIt_MaterialData using arrays encode the material. */
        VisIt_MaterialData_addMaterial(h, matNames[0], &matnos[0]);
        VisIt_MaterialData_addMaterial(h, matNames[1], &matnos[1]);
        VisIt_MaterialData_addMaterial(h, matNames[2], &matnos[2]);

        VisIt_VariableData_alloc(&hmatlist);
        VisIt_VariableData_setDataI(hmatlist, VISIT_OWNER_SIM, 1, (NX-1)*(NY-1), matlist);
        VisIt_MaterialData_setMaterials(h, hmatlist);

        nTuples = sizeof(mix_zone) / sizeof(int);
        VisIt_VariableData_alloc(&hmix_zone);
        VisIt_VariableData_setDataI(hmix_zone, VISIT_OWNER_SIM, 1, nTuples, mix_zone);

        VisIt_VariableData_alloc(&hmix_mat);
        VisIt_VariableData_setDataI(hmix_mat, VISIT_OWNER_SIM, 1, nTuples, mix_mat);

        VisIt_VariableData_alloc(&hmix_vf);
        VisIt_VariableData_setDataD(hmix_vf, VISIT_OWNER_SIM, 1, nTuples, mix_vf);

        VisIt_VariableData_alloc(&hmix_next);
        VisIt_VariableData_setDataI(hmix_next, VISIT_OWNER_SIM, 1, nTuples, mix_next);

        VisIt_MaterialData_setMixedMaterials(h, hmix_mat, hmix_zone, hmix_next, hmix_vf);
    }

    return h;
}
示例#30
0
visit_handle
SimGetVariable(int domain, const char *name, void *cbdata)
{
    visit_handle h = VISIT_INVALID_HANDLE;
    simulation_data *sim = (simulation_data *)cbdata;

    if(strncmp(name, "aos", 3) == 0)
    {
        int nnodes, owner;
        owner = (strcmp(name, "aos_c") == 0) ? VISIT_OWNER_COPY : VISIT_OWNER_SIM;
        nnodes = sim->aos.nnodes;
        /* Use setDataArray functions to set up strided array access. */
        VisIt_VariableData_alloc(&h);
        if(strcmp(name+6, "temperature") == 0)
            serror(VisIt_VariableData_setArrayDataF(h, 0, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].temperature)));
        else if(strcmp(name+6, "vx") == 0)
            serror(VisIt_VariableData_setArrayDataD(h, 0, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].vx)));
        else if(strcmp(name+6, "vy") == 0)
            serror(VisIt_VariableData_setArrayDataD(h, 0, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].vy)));
        else if(strcmp(name+6, "vz") == 0)
            serror(VisIt_VariableData_setArrayDataD(h, 0, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].vz)));
        else if(strcmp(name+6, "I") == 0)
            serror(VisIt_VariableData_setArrayDataI(h, 0, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].I)));
        else if(strcmp(name+6, "J") == 0)
            serror(VisIt_VariableData_setArrayDataI(h, 0, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].J)));
        else if(strcmp(name+6, "K") == 0)
            serror(VisIt_VariableData_setArrayDataI(h, 0, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].K)));
        else if(strcmp(name+6, "velocity") == 0)
        {
            /* Combine separate strided array access into a vector. */
            serror(VisIt_VariableData_setArrayDataD(h, 0, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].vx)));
            serror(VisIt_VariableData_setArrayDataD(h, 1, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].vy)));
            serror(VisIt_VariableData_setArrayDataD(h, 2, owner, nnodes, 0, sizeof(Node), &(sim->aos.nodes[0].vz)));
        }
    }
    else if(strncmp(name, "soa", 3) == 0)
    {
        int nnodes = sim->soa.nnodes;
        /* Use setData functions to set up contiguous array access. */
        VisIt_VariableData_alloc(&h);
        if(strcmp(name+6, "temperature") == 0)
            serror(VisIt_VariableData_setDataF(h, VISIT_OWNER_SIM, 1, nnodes, sim->soa.temperature));
        else if(strcmp(name+6, "vx") == 0)
            serror(VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, 1, nnodes, sim->soa.vx));
        else if(strcmp(name+6, "vy") == 0)
            serror(VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, 1, nnodes, sim->soa.vy));
        else if(strcmp(name+6, "vz") == 0)
            serror(VisIt_VariableData_setDataD(h, VISIT_OWNER_SIM, 1, nnodes, sim->soa.vz));
        else if(strcmp(name+6, "I") == 0)
            serror(VisIt_VariableData_setDataI(h, VISIT_OWNER_SIM, 1, nnodes, sim->soa.I));
        else if(strcmp(name+6, "J") == 0)
            serror(VisIt_VariableData_setDataI(h, VISIT_OWNER_SIM, 1, nnodes, sim->soa.J));
        else if(strcmp(name+6, "K") == 0)
            serror(VisIt_VariableData_setDataI(h, VISIT_OWNER_SIM, 1, nnodes, sim->soa.K));
        else if(strcmp(name+6, "velocity") == 0)
        {
            /* Combine separate contiguous arrays into a vector. */
            serror(VisIt_VariableData_setArrayDataD(h, 0, VISIT_OWNER_SIM, nnodes, 0, sizeof(double), sim->soa.vx));
            serror(VisIt_VariableData_setArrayDataD(h, 1, VISIT_OWNER_SIM, nnodes, 0, sizeof(double), sim->soa.vy));
            serror(VisIt_VariableData_setArrayDataD(h, 2, VISIT_OWNER_SIM, nnodes, 0, sizeof(double), sim->soa.vz));
        }
    }

    return h;
}