Changeset 3999 for issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeConpute.cpp
- Timestamp:
- 06/02/10 15:51:23 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeConpute.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsSlopeCompute.c:2 * CreateNodesSlopeCompute.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsSlopeCompute(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesSlopeCompute(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 /*output: int* epart, int* my_grids, double* my_bordergrids*/ 17 /*Intermediary*/ 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 18 21 19 int i,j,k,n;20 22 /*DataSets: */ 21 DataSet* elements = NULL;22 23 DataSet* nodes = NULL; 23 DataSet* vertices = NULL;24 DataSet* materials = NULL;25 24 26 /*First create the elements, nodes and material properties: */ 27 elements = new DataSet(ElementsEnum); 28 nodes = new DataSet(NodesEnum); 29 vertices = new DataSet(VerticesEnum); 30 materials = new DataSet(MaterialsEnum); 25 /*First create nodes*/ 26 nodes = new DataSet(NodesEnum); 31 27 32 /* Partition elements and vertices and nodes: */33 Partitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_nodes, &iomodel->my_bordervertices, iomodel, iomodel_handle);28 /*Recover number of nodes already created in other analyses: */ 29 totalnodes=iomodel->nodecounter; 34 30 35 /*2d mesh: */ 36 if (iomodel->dim==2){ 37 38 /*Fetch data needed: */ 39 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 40 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 41 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 42 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 43 44 for (i=0;i<iomodel->numberofelements;i++){ 45 46 if(iomodel->my_elements[i]){ 47 48 /*Create and add tria element to elements dataset: */ 49 elements->AddObject(new Tria(i+1,i,iomodel)); 50 51 /*Create and add material property to materials dataset: */ 52 materials->AddObject(new Matice(i+1,i,iomodel,3)); 53 } 54 55 }//for (i=0;i<numberofelements;i++) 56 57 58 /*Free data : */ 59 xfree((void**)&iomodel->elements); 60 xfree((void**)&iomodel->surface); 61 xfree((void**)&iomodel->bed); 62 xfree((void**)&iomodel->elementonwater); 63 64 } 65 else{ // if (dim==2) 66 67 /*Fetch data needed: */ 68 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 69 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 70 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 71 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed"); 72 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 73 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements"); 74 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements"); 75 76 for (i=0;i<iomodel->numberofelements;i++){ 77 if(iomodel->my_elements[i]){ 78 /*Create and add penta element to elements dataset: */ 79 elements->AddObject(new Penta(i+1,i,iomodel)); 80 81 /*Create and add material property to materials dataset: */ 82 materials->AddObject(new Matice(i+1,i,iomodel,6)); 83 84 }//if(my_elements[i]) 85 }//for (i=0;i<numberofelements;i++) 86 87 /*Free data: */ 88 xfree((void**)&iomodel->elements); 89 xfree((void**)&iomodel->surface); 90 xfree((void**)&iomodel->bed); 91 xfree((void**)&iomodel->elementonbed); 92 xfree((void**)&iomodel->elementonwater); 93 xfree((void**)&iomodel->upperelements); 94 xfree((void**)&iomodel->lowerelements); 95 96 } //if (dim==2) 97 98 /*Add new constrant material property tgo materials, at the end: */ 99 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel)); //put it at the end of the materials 31 /*Continuous Galerkin partition of nodes: */ 32 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin); 100 33 101 34 /*First fetch data: */ … … 104 37 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 105 38 } 106 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");107 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");108 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");109 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");110 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");111 39 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 112 40 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 116 44 for (i=0;i<iomodel->numberofvertices;i++){ 117 45 118 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */119 46 if(iomodel->my_vertices[i]){ 120 47 121 /*Add vertex to vertices dataset: */122 vertices->AddObject(new Vertex(i+1,i,iomodel));123 124 48 /*Add node to nodes dataset: */ 125 49 nodes->AddObject(new Node(i+1,i,iomodel)); … … 130 54 /*Clean fetched data: */ 131 55 xfree((void**)&iomodel->deadgrids); 132 xfree((void**)&iomodel->x);133 xfree((void**)&iomodel->y);134 xfree((void**)&iomodel->z);135 xfree((void**)&iomodel->thickness);136 xfree((void**)&iomodel->bed);137 56 xfree((void**)&iomodel->gridonbed); 138 57 xfree((void**)&iomodel->gridonsurface); … … 143 62 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 144 63 * datasets, it will not be redone: */ 145 elements->Presort();146 64 nodes->Presort(); 147 vertices->Presort();148 materials->Presort();149 150 cleanup_and_return:151 65 152 66 /*Assign output pointer: */ 153 *pelements=elements;154 67 *pnodes=nodes; 155 *pvertices=vertices;156 *pmaterials=materials;157 68 158 69 }
Note:
See TracChangeset
for help on using the changeset viewer.