Changeset 13269


Ignore:
Timestamp:
09/05/12 14:53:00 (13 years ago)
Author:
jschierm
Message:

NEW: Added python WriteData for bamg objects.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/python/io/WritePythonData.cpp

    r13242 r13269  
    1919#include "../../io/io.h"
    2020#include "../../EnumDefinitions/EnumDefinitions.h"
     21PyObject* PyArrayFromCopiedData(int dims[2],double* data);
    2122
    2223/*Primitive data types*/
     
    5051void WriteData(PyObject* py_tuple,int index,BamgGeom* bamggeom){
    5152
    52         _error_("not implemented yes, see ../../matlab/io/WriteMatlabData.cpp");
     53        PyObject* dict=NULL;
     54
     55        dict=PyDict_New();
     56
     57        PyDict_SetItemString(dict,"Vertices",PyArrayFromCopiedData(bamggeom->VerticesSize,bamggeom->Vertices));
     58        PyDict_SetItemString(dict,"Edges",PyArrayFromCopiedData(bamggeom->EdgesSize,bamggeom->Edges));
     59        PyDict_SetItemString(dict,"TangentAtEdges",PyArrayFromCopiedData(bamggeom->TangentAtEdgesSize,bamggeom->TangentAtEdges));
     60        PyDict_SetItemString(dict,"RequiredVertices",PyArrayFromCopiedData(bamggeom->RequiredVerticesSize,bamggeom->RequiredVertices));
     61        PyDict_SetItemString(dict,"RequiredEdges",PyArrayFromCopiedData(bamggeom->RequiredEdgesSize,bamggeom->RequiredEdges));
     62        PyDict_SetItemString(dict,"CrackedEdges",PyArrayFromCopiedData(bamggeom->CrackedEdgesSize,bamggeom->CrackedEdges));
     63        PyDict_SetItemString(dict,"SubDomains",PyArrayFromCopiedData(bamggeom->SubDomainsSize,bamggeom->SubDomains));
     64
     65        PyTuple_SetItem(py_tuple, index, dict);
    5366}
    5467/*}}}*/
     
    5669void WriteData(PyObject* py_tuple,int index,BamgMesh* bamgmesh){
    5770
    58         _error_("not implemented yes, see ../../matlab/io/WriteMatlabData.cpp");
     71        PyObject* dict=NULL;
     72
     73        dict=PyDict_New();
     74
     75        PyDict_SetItemString(dict,"Triangles",PyArrayFromCopiedData(bamgmesh->TrianglesSize,bamgmesh->Triangles));
     76        PyDict_SetItemString(dict,"Vertices",PyArrayFromCopiedData(bamgmesh->VerticesSize,bamgmesh->Vertices));
     77        PyDict_SetItemString(dict,"Edges",PyArrayFromCopiedData(bamgmesh->EdgesSize,bamgmesh->Edges));
     78        PyDict_SetItemString(dict,"IssmSegments",PyArrayFromCopiedData(bamgmesh->IssmSegmentsSize,bamgmesh->IssmSegments));
     79        PyDict_SetItemString(dict,"IssmEdges",PyArrayFromCopiedData(bamgmesh->IssmEdgesSize,bamgmesh->IssmEdges));
     80        PyDict_SetItemString(dict,"Quadrilaterals",PyArrayFromCopiedData(bamgmesh->QuadrilateralsSize,bamgmesh->Quadrilaterals));
     81        PyDict_SetItemString(dict,"VerticesOnGeomVertex",PyArrayFromCopiedData(bamgmesh->VerticesOnGeomVertexSize,bamgmesh->VerticesOnGeomVertex));
     82        PyDict_SetItemString(dict,"VerticesOnGeomEdge",PyArrayFromCopiedData(bamgmesh->VerticesOnGeomEdgeSize,bamgmesh->VerticesOnGeomEdge));
     83        PyDict_SetItemString(dict,"EdgesOnGeomEdge",PyArrayFromCopiedData(bamgmesh->EdgesOnGeomEdgeSize,bamgmesh->EdgesOnGeomEdge));
     84        PyDict_SetItemString(dict,"SubDomains",PyArrayFromCopiedData(bamgmesh->SubDomainsSize,bamgmesh->SubDomains));
     85        PyDict_SetItemString(dict,"SubDomainsFromGeom",PyArrayFromCopiedData(bamgmesh->SubDomainsFromGeomSize,bamgmesh->SubDomainsFromGeom));
     86        PyDict_SetItemString(dict,"ElementConnectivity",PyArrayFromCopiedData(bamgmesh->ElementConnectivitySize,bamgmesh->ElementConnectivity));
     87        PyDict_SetItemString(dict,"NodalConnectivity",PyArrayFromCopiedData(bamgmesh->NodalConnectivitySize,bamgmesh->NodalConnectivity));
     88        PyDict_SetItemString(dict,"NodalElementConnectivity",PyArrayFromCopiedData(bamgmesh->NodalElementConnectivitySize,bamgmesh->NodalElementConnectivity));
     89        PyDict_SetItemString(dict,"CrackedVertices",PyArrayFromCopiedData(bamgmesh->CrackedVerticesSize,bamgmesh->CrackedVertices));
     90        PyDict_SetItemString(dict,"CrackedEdges",PyArrayFromCopiedData(bamgmesh->CrackedEdgesSize,bamgmesh->CrackedEdges));
     91
     92        PyTuple_SetItem(py_tuple, index, dict);
     93}
     94/*}}}*/
     95/*FUNCTION PyArrayFromCopiedData(int dims[2],double* data){{{*/
     96PyObject* PyArrayFromCopiedData(int dims[2],double* data){
     97
     98        double* pydata;
     99        npy_intp pydims[2]={0,0};
     100
     101        /*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
     102        object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
     103
     104        pydims[0]=(npy_intp)dims[0];
     105        pydims[1]=(npy_intp)dims[1];
     106        pydata=xNew<IssmDouble>(dims[0]*dims[1]);
     107        memcpy(pydata,data,dims[0]*dims[1]*sizeof(double));
     108        return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
    59109}
    60110/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.