示例#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
文件: 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;
}
示例#3
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;
}
示例#4
0
void
SetData(visit_handle c, int owner, int dataType, int nTuples, int nComps, float *f)
{
    if(dataType == VISIT_DATATYPE_FLOAT)
    {
        if(owner == VISIT_OWNER_SIM)
            VisIt_VariableData_setDataF(c, owner, nTuples, nComps, f);
        else
        {
            float *d = (float *)malloc(nTuples * nComps * sizeof(float));
            memcpy(d, f, nTuples * nComps * sizeof(float));
            VisIt_VariableData_setDataF(c, owner, nTuples, nComps, d);
        }
    }
    else
    {
        /* Convert the data to double and let VisIt own it. */
        int i;
        double *d = (double *)malloc(nTuples * nComps * sizeof(double));
        for(i = 0; i < nTuples * nComps; ++i)
            d[i] = (double)f[i];
        VisIt_VariableData_setDataD(c, VISIT_OWNER_VISIT, nTuples, nComps, d);
    }
}
示例#5
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;
}
示例#6
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;
}
示例#7
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;
}
示例#8
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;
}
示例#9
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;
}
示例#10
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;
}
示例#11
0
文件: data.cpp 项目: ybouret/iics
visit_handle Simulation:: get_curve( const string &name ) const
{
    visit_handle h = VISIT_INVALID_HANDLE;
    
    if( strncmp(name.c_str(),"bubble",6) == 0 )
    {
        const size_t  id = strconv::to_size( name.c_str()+6, "bubble id");
        assert(id>0);
        assert(id<=bubbles.count());
        const Bubble *b  = bubbles.first();
        for(size_t iter=1;iter<id;++iter) b=b->next;
        assert(b);
        if( VisIt_CurveData_alloc(&h) == VISIT_OKAY )
        {
            // copy bubble spots coordinates
            const size_t bn = b->size+1;
            vector<Real> bx(bn,0);
            vector<Real> by(bn,0);
            const Tracer *p = b->root;
            
            
            for( size_t i=1; i <= bn; ++i,p=p->next)
            {
                bx[i] = p->vertex.x;
                by[i] = p->vertex.y;
            }
            
            
            // make a curve
            visit_handle hcx,hcy;
            VisIt_VariableData_alloc( &hcx );
            VisIt_VariableData_alloc( &hcy );
            VisIt_VariableData_setDataD(hcx, VISIT_OWNER_COPY, 1, bn, bx());
            VisIt_VariableData_setDataD(hcy, VISIT_OWNER_COPY, 1, bn, by());
            VisIt_CurveData_setCoordsXY(h, hcx, hcy);
            
        }
    }
    
    if( name == "junctions" )
    {
        if( VisIt_CurveData_alloc(&h) == VISIT_OKAY )
        {
            // copy juntions coordinates
            const size_t nj = segmenter.num_junctions();
            vector<Real> jx(nj,0);
            vector<Real> jy(nj,0);
            const Segments &segments = segmenter();
            for( size_t i=segments.size(),j=1;i>0;--i)
            {
                const Segment &seg = *segments[i];
                for( const Junction *J = seg.head;J;J=J->next)
                {
                    assert(j<=nj);
                    jx[j] = J->vertex.x;
                    jy[j] = J->vertex.y;
                    ++j;
                }
            }
            
            // make a curve
            visit_handle hcx,hcy;
            VisIt_VariableData_alloc( &hcx );
            VisIt_VariableData_alloc( &hcy );
            VisIt_VariableData_setDataD(hcx, VISIT_OWNER_COPY, 1, nj, jx());
            VisIt_VariableData_setDataD(hcy, VISIT_OWNER_COPY, 1, nj, jy());
            VisIt_CurveData_setCoordsXY(h, hcx, hcy);

        }

    }
    
    return h;
}