Changeset 3999
- Timestamp:
- 06/02/10 15:51:23 (15 years ago)
- Location:
- issm/trunk/src/c/modules/ModelProcessorx
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsBalancedthickness.c:2 * CreateNodesBalancedthickness.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsBalancedthickness(DataSet** pelements,DataSet** pnodes, DataSet** pvertices, DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesBalancedthickness(DataSet** pelements,DataSet** pnodes, DataSet** pvertices, DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i,j,k,n; 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 19 21 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->thickness,NULL,NULL,iomodel_handle,"thickness"); 41 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 42 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 43 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 44 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 45 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 46 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 47 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate"); 48 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 49 IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt"); 50 51 for (i=0;i<iomodel->numberofelements;i++){ 52 53 if(iomodel->my_elements[i]){ 54 55 /*Create and add tria element to elements dataset: */ 56 elements->AddObject(new Tria(i+1,i,iomodel)); 57 58 /*Create and add material property to materials dataset: */ 59 materials->AddObject(new Matice(i+1,i,iomodel,3)); 60 } 61 }//for (i=0;i<numberofelements;i++) 62 63 /*Free data : */ 64 xfree((void**)&iomodel->elements); 65 xfree((void**)&iomodel->thickness); 66 xfree((void**)&iomodel->surface); 67 xfree((void**)&iomodel->bed); 68 xfree((void**)&iomodel->elementoniceshelf); 69 xfree((void**)&iomodel->elementonwater); 70 xfree((void**)&iomodel->vx); 71 xfree((void**)&iomodel->vy); 72 xfree((void**)&iomodel->melting_rate); 73 xfree((void**)&iomodel->accumulation_rate); 74 xfree((void**)&iomodel->dhdt); 75 76 } 77 else{ // if (dim==2) 78 79 /*Fetch data needed: */ 80 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 81 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 82 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 83 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 84 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 85 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed"); 86 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface"); 87 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 88 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 89 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 90 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate"); 91 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 92 IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt"); 93 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements"); 94 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements"); 95 96 for (i=0;i<iomodel->numberofelements;i++){ 97 if(iomodel->my_elements[i]){ 98 /*Create and add penta element to elements dataset: */ 99 elements->AddObject(new Penta(i+1,i,iomodel)); 100 101 /*Create and add material property to materials dataset: */ 102 materials->AddObject(new Matice(i+1,i,iomodel,6)); 103 } 104 }//for (i=0;i<numberofelements;i++) 105 106 /*Free data: */ 107 xfree((void**)&iomodel->elements); 108 xfree((void**)&iomodel->thickness); 109 xfree((void**)&iomodel->surface); 110 xfree((void**)&iomodel->bed); 111 xfree((void**)&iomodel->elementoniceshelf); 112 xfree((void**)&iomodel->elementonbed); 113 xfree((void**)&iomodel->elementonsurface); 114 xfree((void**)&iomodel->elementonwater); 115 xfree((void**)&iomodel->vx); 116 xfree((void**)&iomodel->vy); 117 xfree((void**)&iomodel->melting_rate); 118 xfree((void**)&iomodel->accumulation_rate); 119 xfree((void**)&iomodel->dhdt); 120 xfree((void**)&iomodel->upperelements); 121 xfree((void**)&iomodel->lowerelements); 122 123 124 } //if (dim==2) 125 126 /*Add new constrant material property to materials, at the end: */ 127 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel)); 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); 128 33 129 34 /*First fetch data: */ … … 132 37 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 133 38 } 134 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");135 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");136 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");137 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");138 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");139 39 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 140 40 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 144 44 for (i=0;i<iomodel->numberofvertices;i++){ 145 45 146 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */147 46 if(iomodel->my_vertices[i]){ 148 149 /*Add vertex to vertices dataset: */150 vertices->AddObject(new Vertex(i+1,i,iomodel));151 47 152 48 /*Add node to nodes dataset: */ … … 158 54 /*Clean fetched data: */ 159 55 xfree((void**)&iomodel->deadgrids); 160 xfree((void**)&iomodel->x);161 xfree((void**)&iomodel->y);162 xfree((void**)&iomodel->z);163 xfree((void**)&iomodel->thickness);164 xfree((void**)&iomodel->bed);165 56 xfree((void**)&iomodel->gridonbed); 166 57 xfree((void**)&iomodel->gridonsurface); … … 171 62 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 172 63 * datasets, it will not be redone: */ 173 elements->Presort();174 vertices->Presort();175 64 nodes->Presort(); 176 materials->Presort();177 178 cleanup_and_return:179 65 180 66 /*Assign output pointer: */ 181 *pelements=elements;182 67 *pnodes=nodes; 183 *pvertices=vertices;184 *pmaterials=materials;185 68 186 69 } -
issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/CreateNodesBalancedthickness2.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsBalancedthickness2.c:2 * CreateNodesBalancedthickness2.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsBalancedthickness2(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesBalancedthickness2(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i ,j;19 int vertex_index;20 int node_index;18 int i; 19 int totalnodes; 20 bool continuous_galerkin=false; 21 21 22 22 /*DataSets: */ 23 DataSet* elements = NULL;24 23 DataSet* nodes = NULL; 25 DataSet* vertices = NULL;26 DataSet* materials = NULL;27 24 28 /*First create the elements, nodes and material properties: */ 29 elements = new DataSet(ElementsEnum); 30 nodes = new DataSet(NodesEnum); 31 vertices = new DataSet(VerticesEnum); 32 materials = new DataSet(MaterialsEnum); 25 /*First create nodes*/ 26 nodes = new DataSet(NodesEnum); 33 27 34 /* Partition elements and vertices and nodes: */35 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; 36 30 37 /*elements created vary if we are dealing with a 2d mesh, or a 3d mesh: */ 38 /*2d mesh: */ 39 if (iomodel->dim==2){ 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); 40 33 41 /*Fetch data needed: */ 42 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 43 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 44 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 45 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 46 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 47 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 48 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 49 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 50 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"melting_rate"); 51 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 52 IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt"); 53 54 for (i=0;i<iomodel->numberofelements;i++){ 55 56 if(iomodel->my_elements[i]){ 57 58 /*Create and add tria element to elements dataset: */ 59 elements->AddObject(new Tria(i+1,i,iomodel)); 60 61 /*Create and add material property to materials dataset: */ 62 materials->AddObject(new Matice(i+1,i,iomodel,3)); 63 } 64 }//for (i=0;i<numberofelements;i++) 65 66 /*Free data : */ 67 xfree((void**)&iomodel->thickness); 68 xfree((void**)&iomodel->surface); 69 xfree((void**)&iomodel->bed); 70 xfree((void**)&iomodel->elementoniceshelf); 71 xfree((void**)&iomodel->elementonwater); 72 xfree((void**)&iomodel->vx); 73 xfree((void**)&iomodel->vy); 74 xfree((void**)&iomodel->melting_rate); 75 xfree((void**)&iomodel->accumulation_rate); 76 xfree((void**)&iomodel->dhdt); 77 78 } 79 else{ // if (dim==2) 80 ISSMERROR("not implemented yet"); 81 } //if (dim==2) 82 83 /*Add new constrant material property tgo materials, at the end: */ 84 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel)); 85 86 /*Create nodes and vertices: */ 87 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x"); 88 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y"); 89 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z"); 90 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 91 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 34 /*Create nodes: */ 92 35 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 93 36 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 95 38 IoModelFetchData(&iomodel->gridonicesheet,NULL,NULL,iomodel_handle,"gridonicesheet"); 96 39 IoModelFetchData(&iomodel->gridoniceshelf,NULL,NULL,iomodel_handle,"gridoniceshelf"); 40 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 97 41 if (iomodel->dim==3){ 98 42 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 99 43 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 100 } 101 102 /*Build Vertices dataset*/ 103 for (i=0;i<iomodel->numberofvertices;i++){ 104 105 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */ 106 if(iomodel->my_vertices[i]){ 107 108 /*Add vertex to vertices dataset: */ 109 vertices->AddObject(new Vertex(i+1,i,iomodel)); 110 111 } 44 ISSMERROR("Not implemented yet"); 112 45 } 113 46 … … 134 67 /*Clean fetched data: */ 135 68 xfree((void**)&iomodel->deadgrids); 136 xfree((void**)&iomodel->x);137 xfree((void**)&iomodel->y);138 xfree((void**)&iomodel->z);139 xfree((void**)&iomodel->thickness);140 xfree((void**)&iomodel->bed);141 69 xfree((void**)&iomodel->gridonbed); 142 70 xfree((void**)&iomodel->gridonsurface); … … 149 77 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 150 78 * datasets, it will not be redone: */ 151 elements->Presort();152 79 nodes->Presort(); 153 vertices->Presort();154 materials->Presort();155 156 cleanup_and_return:157 80 158 81 /*Assign output pointer: */ 159 *pelements=elements;160 82 *pnodes=nodes; 161 *pvertices=vertices;162 *pmaterials=materials;163 83 } -
issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsBalancedvelocities.c:2 * CreateNodesBalancedvelocities.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsBalancedvelocities(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesBalancedvelocities(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i,j,k,n; 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 19 21 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){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); 37 33 38 /*Fetch data needed: */39 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");40 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");41 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");42 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");43 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf");44 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");45 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");46 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");47 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"melting_rate");48 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"accumulation_rate");49 50 for (i=0;i<iomodel->numberofelements;i++){51 52 if(iomodel->my_elements[i]){53 54 /*Create and add tria element to elements dataset: */55 elements->AddObject(new Tria(i+1,i,iomodel));56 57 /*Create and add material property to materials dataset: */58 materials->AddObject(new Matice(i+1,i,iomodel,3));59 }60 61 }//for (i=0;i<numberofelements;i++)62 63 64 /*Free data : */65 xfree((void**)&iomodel->elements);66 xfree((void**)&iomodel->thickness);67 xfree((void**)&iomodel->surface);68 xfree((void**)&iomodel->bed);69 xfree((void**)&iomodel->elementoniceshelf);70 xfree((void**)&iomodel->elementonwater);71 xfree((void**)&iomodel->vx);72 xfree((void**)&iomodel->vy);73 xfree((void**)&iomodel->melting_rate);74 xfree((void**)&iomodel->accumulation_rate);75 76 }77 else{ // if (dim==2)78 79 /*Fetch data needed: */80 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");81 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");82 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");83 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");84 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf");85 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");86 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface");87 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");88 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");89 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");90 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");91 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");92 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");93 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");94 95 for (i=0;i<iomodel->numberofelements;i++){96 if(iomodel->my_elements[i]){97 /*Create and add penta element to elements dataset: */98 elements->AddObject(new Penta(i+1,i,iomodel));99 100 /*Create and add material property to materials dataset: */101 materials->AddObject(new Matice(i+1,i,iomodel,6));102 103 }//if(my_elements[i])104 105 }//for (i=0;i<numberofelements;i++)106 107 /*Free data: */108 xfree((void**)&iomodel->elements);109 xfree((void**)&iomodel->thickness);110 xfree((void**)&iomodel->surface);111 xfree((void**)&iomodel->bed);112 xfree((void**)&iomodel->elementoniceshelf);113 xfree((void**)&iomodel->elementonbed);114 xfree((void**)&iomodel->elementonsurface);115 xfree((void**)&iomodel->elementonwater);116 xfree((void**)&iomodel->vx);117 xfree((void**)&iomodel->vy);118 xfree((void**)&iomodel->melting_rate);119 xfree((void**)&iomodel->accumulation_rate);120 xfree((void**)&iomodel->upperelements);121 xfree((void**)&iomodel->lowerelements);122 123 124 } //if (dim==2)125 126 /*Add new constrant material property to materials, at the end: */127 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel)); //put it at the end of the materials128 129 34 /*First fetch data: */ 130 35 if (iomodel->dim==3){ … … 132 37 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 133 38 } 134 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");135 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");136 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");137 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");138 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");139 39 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 140 40 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 144 44 for (i=0;i<iomodel->numberofvertices;i++){ 145 45 146 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */147 46 if(iomodel->my_vertices[i]){ 148 47 149 /*Add vertex to vertices dataset: */150 vertices->AddObject(new Vertex(i+1,i,iomodel));151 152 48 /*Add node to nodes dataset: */ 153 49 nodes->AddObject(new Node(i+1,i,iomodel)); … … 158 54 /*Clean fetched data: */ 159 55 xfree((void**)&iomodel->deadgrids); 160 xfree((void**)&iomodel->x);161 xfree((void**)&iomodel->y);162 xfree((void**)&iomodel->z);163 xfree((void**)&iomodel->thickness);164 xfree((void**)&iomodel->bed);165 56 xfree((void**)&iomodel->gridonbed); 166 57 xfree((void**)&iomodel->gridonsurface); … … 171 62 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 172 63 * datasets, it will not be redone: */ 173 elements->Presort();174 64 nodes->Presort(); 175 vertices->Presort();176 materials->Presort();177 178 cleanup_and_return:179 65 180 66 /*Assign output pointer: */ 181 *pelements=elements;182 67 *pnodes=nodes; 183 *pvertices=vertices;184 *pmaterials=materials;185 68 186 69 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
r3998 r3999 17 17 /*Intermediary*/ 18 18 int i; 19 int totalnodes; 19 20 bool continuous_galerkin=true; 20 21 … … 22 23 DataSet* nodes = NULL; 23 24 24 /*First create the elements, vertices, nodes and material properties, if they don't already exist*/25 nodes 25 /*First create nodes*/ 26 nodes = new DataSet(NodesEnum); 26 27 27 28 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsDiagnosticHutter.c:2 * CreateNodesDiagnosticHutter.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsDiagnosticHutter(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesDiagnosticHutter(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i,j,k,n; 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 19 21 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); 25 /*First create nodes*/ 28 26 nodes = new DataSet(NodesEnum); 29 vertices = new DataSet(VerticesEnum);30 materials = new DataSet(MaterialsEnum);31 27 32 28 /*Now, is the flag ishutter on? otherwise, do nothing: */ 33 29 if (!iomodel->ishutter)goto cleanup_and_return; 34 30 35 /* Partition elements and vertices and nodes: */36 Partitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_nodes, &iomodel->my_bordervertices, iomodel, iomodel_handle);31 /*Recover number of nodes already created in other analyses: */ 32 totalnodes=iomodel->nodecounter; 37 33 38 /* Hutter elements can be partitioned using epart, even if39 * each hutter elements either lies on a node (in 2d), or a pair of vertically juxtaposed nodes (in 3d): */34 /*Continuous Galerkin partition of nodes: */ 35 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin); 40 36 41 /*Fetch data temporarily needed: */42 IoModelFetchData(&iomodel->gridonhutter,NULL,NULL,iomodel_handle,"gridonhutter");43 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");44 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");45 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");46 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface");47 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");48 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");49 IoModelFetchData(&iomodel->drag_coefficient,NULL,NULL,iomodel_handle,"drag_coefficient");50 IoModelFetchData(&iomodel->rheology_B,NULL,NULL,iomodel_handle,"rheology_B");51 IoModelFetchData(&iomodel->rheology_n,NULL,NULL,iomodel_handle,"rheology_n");52 IoModelFetchData(&iomodel->elements_type,NULL,NULL,iomodel_handle,"elements_type");53 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");54 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface");55 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");56 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");57 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");58 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");59 60 /*2d mesh: */61 if (iomodel->dim==2){62 63 for (i=0;i<iomodel->numberofelements;i++){64 65 if(iomodel->my_elements[i]){66 67 if (*(iomodel->elements_type+2*i+0)==HutterFormulationEnum){ //create only Hutter elements68 69 /*Create and add penta element to elements dataset: */70 elements->AddObject(new Tria(i+1,i,iomodel));71 72 /*Create and add material property to materials dataset: */73 materials->AddObject(new Matice(i+1,i,iomodel,3));74 }75 }76 } //for (i=0;i<iomodel->numberofvertices;i++)77 } //if (iomodel->dim==2)78 else{79 80 for (i=0;i<iomodel->numberofelements;i++){81 82 if(iomodel->my_elements[i]){83 84 if (*(iomodel->elements_type+2*i+0)==HutterFormulationEnum){ //create only Hutter elements85 86 /*Create and add penta element to elements dataset: */87 elements->AddObject(new Penta(i+1,i,iomodel));88 89 90 /*Create and add material property to materials dataset: */91 materials->AddObject(new Matice(i+1,i,iomodel,6));92 93 }94 }95 96 } //for (i=0;i<iomodel->numberofelements;i++)97 98 } //if (iomodel->dim==2)99 100 /*Free data: */101 xfree((void**)&iomodel->elements);102 xfree((void**)&iomodel->elementonbed);103 xfree((void**)&iomodel->elementonsurface);104 xfree((void**)&iomodel->elements_type);105 xfree((void**)&iomodel->gridonhutter);106 xfree((void**)&iomodel->thickness);107 xfree((void**)&iomodel->surface);108 xfree((void**)&iomodel->bed);109 xfree((void**)&iomodel->gridonbed);110 xfree((void**)&iomodel->elementonwater);111 xfree((void**)&iomodel->uppernodes);112 xfree((void**)&iomodel->drag_coefficient);113 xfree((void**)&iomodel->rheology_B);114 xfree((void**)&iomodel->rheology_n);115 xfree((void**)&iomodel->upperelements);116 xfree((void**)&iomodel->lowerelements);117 118 /*Add new constrant material property to materials, at the end: */119 if (iomodel->dim==2){120 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel)); //put it at the end of the materials121 }122 else{123 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel)); //put it at the end of the materials124 }125 126 37 /*First fetch data: */ 127 38 if (iomodel->dim==3){ … … 129 40 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 130 41 } 131 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");132 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");133 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");134 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");135 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");136 42 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 137 43 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 144 50 for (i=0;i<iomodel->numberofvertices;i++){ 145 51 146 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */147 52 if(iomodel->my_vertices[i]){ 148 149 /*Add vertex to vertices dataset: */150 vertices->AddObject(new Vertex(i+1,i,iomodel));151 53 152 54 /*Add node to nodes dataset: */ … … 158 60 /*Clean fetched data: */ 159 61 xfree((void**)&iomodel->deadgrids); 160 xfree((void**)&iomodel->x);161 xfree((void**)&iomodel->y);162 xfree((void**)&iomodel->z);163 xfree((void**)&iomodel->thickness);164 xfree((void**)&iomodel->bed);165 62 xfree((void**)&iomodel->gridonbed); 166 63 xfree((void**)&iomodel->gridonsurface); … … 175 72 * datasets, it will not be redone: */ 176 73 elements->Presort(); 177 nodes->Presort();178 vertices->Presort();179 materials->Presort();180 74 181 75 cleanup_and_return: 182 76 183 77 /*Assign output pointer: */ 184 *pelements=elements;185 78 *pnodes=nodes; 186 *pvertices=vertices;187 *pmaterials=materials;188 79 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsDiagnosticStokes.c:2 * CreateNodesDiagnosticStokes.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsDiagnosticStokes(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesDiagnosticStokes(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i,j,k,n; 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 19 21 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 28 /*Now, do we have Stokes elements?*/ … … 34 30 if (!iomodel->isstokes) goto cleanup_and_return; 35 31 32 /*Recover number of nodes already created in other analyses: */ 33 totalnodes=iomodel->nodecounter; 36 34 37 /* Partition elements and vertices andnodes: */38 Partitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_nodes, &iomodel->my_bordervertices, iomodel, iomodel_handle);35 /*Continuous Galerkin partition of nodes: */ 36 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin); 39 37 40 /*Fetch data needed: */41 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");42 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");43 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");44 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");45 IoModelFetchData(&iomodel->drag_coefficient,NULL,NULL,iomodel_handle,"drag_coefficient");46 IoModelFetchData(&iomodel->drag_p,NULL,NULL,iomodel_handle,"drag_p");47 IoModelFetchData(&iomodel->drag_q,NULL,NULL,iomodel_handle,"drag_q");48 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf");49 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");50 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface");51 IoModelFetchData(&iomodel->elements_type,NULL,NULL,iomodel_handle,"elements_type");52 IoModelFetchData(&iomodel->rheology_B,NULL,NULL,iomodel_handle,"rheology_B");53 IoModelFetchData(&iomodel->rheology_n,NULL,NULL,iomodel_handle,"rheology_n");54 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");55 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");56 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");57 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");58 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");59 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");60 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");61 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");62 63 if (iomodel->control_analysis){64 IoModelFetchData(&iomodel->vx_obs,NULL,NULL,iomodel_handle,"vx_obs");65 IoModelFetchData(&iomodel->vy_obs,NULL,NULL,iomodel_handle,"vy_obs");66 IoModelFetchData(&iomodel->weights,NULL,NULL,iomodel_handle,"weights");67 }68 69 for (i=0;i<iomodel->numberofelements;i++){70 71 if(iomodel->my_elements[i]){72 if (*(iomodel->elements_type+2*i+1)==StokesFormulationEnum){73 74 /*Create and add penta element to elements dataset: */75 elements->AddObject(new Penta(i+1,i,iomodel));76 77 /*Create and add material property to materials dataset: */78 materials->AddObject(new Matice(i+1,i,iomodel,6));79 }80 81 }82 83 }//for (i=0;i<numberofelements;i++)84 85 /*Free data: */86 xfree((void**)&iomodel->elements);87 xfree((void**)&iomodel->thickness);88 xfree((void**)&iomodel->surface);89 xfree((void**)&iomodel->bed);90 xfree((void**)&iomodel->drag_coefficient);91 xfree((void**)&iomodel->drag_p);92 xfree((void**)&iomodel->drag_q);93 xfree((void**)&iomodel->elementoniceshelf);94 xfree((void**)&iomodel->elementonbed);95 xfree((void**)&iomodel->elementonsurface);96 xfree((void**)&iomodel->elements_type);97 xfree((void**)&iomodel->rheology_n);98 xfree((void**)&iomodel->rheology_B);99 xfree((void**)&iomodel->accumulation_rate);100 xfree((void**)&iomodel->melting_rate);101 xfree((void**)&iomodel->vx);102 xfree((void**)&iomodel->vy);103 xfree((void**)&iomodel->vz);104 if (iomodel->control_analysis){105 xfree((void**)&iomodel->vx_obs);106 xfree((void**)&iomodel->vy_obs);107 xfree((void**)&iomodel->weights);108 }109 xfree((void**)&iomodel->upperelements);110 xfree((void**)&iomodel->lowerelements);111 112 113 /*Add new constrant material property to materials, at the end: */114 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel));115 116 38 /*First fetch data: */ 117 39 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 118 40 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 119 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");120 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");121 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");122 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");123 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");124 41 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 125 42 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 131 48 for (i=0;i<iomodel->numberofvertices;i++){ 132 49 133 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */134 50 if(iomodel->my_vertices[i]){ 135 136 /*Add vertex to vertices dataset: */137 vertices->AddObject(new Vertex(i+1,i,iomodel));138 51 139 52 /*Add node to nodes dataset: */ … … 145 58 /*Clean fetched data: */ 146 59 xfree((void**)&iomodel->deadgrids); 147 xfree((void**)&iomodel->x);148 xfree((void**)&iomodel->y);149 xfree((void**)&iomodel->z);150 xfree((void**)&iomodel->thickness);151 xfree((void**)&iomodel->bed);152 60 xfree((void**)&iomodel->gridonbed); 153 61 xfree((void**)&iomodel->gridonsurface); … … 160 68 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 161 69 * datasets, it will not be redone: */ 162 elements->Presort();163 70 nodes->Presort(); 164 vertices->Presort();165 materials->Presort();166 71 167 72 cleanup_and_return: 168 73 169 74 /*Assign output pointer: */ 170 *pelements=elements;171 75 *pnodes=nodes; 172 *pvertices=vertices;173 *pmaterials=materials;174 76 175 77 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsDiagnosticVert.c:2 * CreateNodesDiagnosticVert.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsDiagnosticVert(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesDiagnosticVert(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i,j,k,n; 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 19 21 20 22 /*DataSets: */ 21 DataSet* elements = NULL;22 23 DataSet* nodes = NULL; 23 DataSet* vertices = NULL;24 DataSet* materials = NULL;25 24 26 25 /*First create the elements, nodes and material properties: */ 27 elements = new DataSet(ElementsEnum);28 26 nodes = new DataSet(NodesEnum); 29 vertices = new DataSet(VerticesEnum);30 materials = new DataSet(MaterialsEnum);31 27 32 28 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */ 33 29 if (iomodel->dim==2)goto cleanup_and_return; 34 30 35 /* Partition elements and vertices and nodes: */36 Partitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_nodes, &iomodel->my_bordervertices, iomodel, iomodel_handle);31 /*Recover number of nodes already created in other analyses: */ 32 totalnodes=iomodel->nodecounter; 37 33 38 /*Create 3d elements: */ 39 /*Fetch data needed: */ 40 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 41 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 42 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 43 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 44 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 45 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed"); 46 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface"); 47 IoModelFetchData(&iomodel->elements_type,NULL,NULL,iomodel_handle,"elements_type"); 48 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate"); 49 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 50 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 51 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 52 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 53 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements"); 54 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements"); 55 56 for (i=0;i<iomodel->numberofelements;i++){ 57 58 if(iomodel->my_elements[i]){ 59 60 /*Create and add penta element to elements dataset: */ 61 elements->AddObject(new Penta(i+1,i,iomodel)); 62 63 /*Create and add material property to materials dataset: */ 64 materials->AddObject(new Matice(i+1,i,iomodel,6)); 65 66 } 67 68 }//for (i=0;i<numberofelements;i++) 69 70 /*Free data: */ 71 xfree((void**)&iomodel->elements); 72 xfree((void**)&iomodel->thickness); 73 xfree((void**)&iomodel->surface); 74 xfree((void**)&iomodel->bed); 75 xfree((void**)&iomodel->elementoniceshelf); 76 xfree((void**)&iomodel->elementonbed); 77 xfree((void**)&iomodel->elementonsurface); 78 xfree((void**)&iomodel->elements_type); 79 xfree((void**)&iomodel->melting_rate); 80 xfree((void**)&iomodel->accumulation_rate); 81 xfree((void**)&iomodel->elementonwater); 82 xfree((void**)&iomodel->vx); 83 xfree((void**)&iomodel->vy); 84 xfree((void**)&iomodel->upperelements); 85 xfree((void**)&iomodel->lowerelements); 86 87 /*Add new constrant material property to materials, at the end: */ 88 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel));//put it at the end of the materials 34 /*Continuous Galerkin partition of nodes: */ 35 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin); 89 36 90 37 /*First fetch data: */ 91 38 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 92 39 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 93 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");94 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");95 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");96 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");97 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");98 40 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 99 41 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 103 45 for (i=0;i<iomodel->numberofvertices;i++){ 104 46 105 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */106 47 if(iomodel->my_vertices[i]){ 107 108 /*Add vertex to vertices dataset: */109 vertices->AddObject(new Vertex(i+1,i,iomodel));110 48 111 49 /*Add node to nodes dataset: */ … … 117 55 /*Clean fetched data: */ 118 56 xfree((void**)&iomodel->deadgrids); 119 xfree((void**)&iomodel->x);120 xfree((void**)&iomodel->y);121 xfree((void**)&iomodel->z);122 xfree((void**)&iomodel->thickness);123 xfree((void**)&iomodel->bed);124 57 xfree((void**)&iomodel->gridonbed); 125 58 xfree((void**)&iomodel->gridonsurface); … … 130 63 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 131 64 * datasets, it will not be redone: */ 132 elements->Presort();133 65 nodes->Presort(); 134 vertices->Presort();135 materials->Presort();136 66 137 67 cleanup_and_return: 138 68 139 69 /*Assign output pointer: */ 140 *pelements=elements;141 70 *pnodes=nodes; 142 *pvertices=vertices;143 *pmaterials=materials;144 71 145 72 } -
issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsMelting.c:2 * CreateNodesMelting.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsMelting(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesMelting(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i,j,k,n; 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 19 21 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 /*Fetch data needed: */ 36 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 37 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 38 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 39 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 40 IoModelFetchData(&iomodel->drag_coefficient,NULL,NULL,iomodel_handle,"drag_coefficient"); 41 IoModelFetchData(&iomodel->drag_p,NULL,NULL,iomodel_handle,"drag_p"); 42 IoModelFetchData(&iomodel->drag_q,NULL,NULL,iomodel_handle,"drag_q"); 43 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 44 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed"); 45 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface"); 46 IoModelFetchData(&iomodel->elements_type,NULL,NULL,iomodel_handle,"elements_type"); 47 IoModelFetchData(&iomodel->rheology_B,NULL,NULL,iomodel_handle,"rheology_B"); 48 IoModelFetchData(&iomodel->rheology_n,NULL,NULL,iomodel_handle,"rheology_n"); 49 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 50 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate"); 51 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 52 IoModelFetchData(&iomodel->pressure,NULL,NULL,iomodel_handle,"pressure"); 53 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements"); 54 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements"); 55 56 for (i=0;i<iomodel->numberofelements;i++){ 57 58 if(iomodel->my_elements[i]){ 59 60 /*Create and add tria element to elements dataset: */ 61 elements->AddObject(new Penta(i+1,i,iomodel)); 62 63 /*Create and add material property to materials dataset: */ 64 materials->AddObject(new Matice(i+1,i,iomodel,6)); 65 } 66 67 }//for (i=0;i<numberofelements;i++) 68 69 /*Free data: */ 70 xfree((void**)&iomodel->elements); 71 xfree((void**)&iomodel->thickness); 72 xfree((void**)&iomodel->surface); 73 xfree((void**)&iomodel->bed); 74 xfree((void**)&iomodel->drag_coefficient); 75 xfree((void**)&iomodel->drag_p); 76 xfree((void**)&iomodel->drag_q); 77 xfree((void**)&iomodel->elementoniceshelf); 78 xfree((void**)&iomodel->elementonbed); 79 xfree((void**)&iomodel->elementonsurface); 80 xfree((void**)&iomodel->elements_type); 81 xfree((void**)&iomodel->rheology_n); 82 xfree((void**)&iomodel->rheology_B); 83 xfree((void**)&iomodel->accumulation_rate); 84 xfree((void**)&iomodel->melting_rate); 85 xfree((void**)&iomodel->elementonwater); 86 xfree((void**)&iomodel->pressure); 87 xfree((void**)&iomodel->upperelements); 88 xfree((void**)&iomodel->lowerelements); 89 90 /*Add new constrant material property tgo materials, at the end: */ 91 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); 92 33 93 34 /*First fetch data: */ … … 96 37 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 97 38 } 98 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");99 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");100 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");101 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");102 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");103 39 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 104 40 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 108 44 for (i=0;i<iomodel->numberofvertices;i++){ 109 45 110 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */111 46 if(iomodel->my_vertices[i]){ 112 47 113 /*Add vertex to vertices dataset: */114 vertices->AddObject(new Vertex(i+1,i,iomodel));115 116 48 /*Add node to nodes dataset: */ 117 49 nodes->AddObject(new Node(i+1,i,iomodel)); … … 122 54 /*Clean fetched data: */ 123 55 xfree((void**)&iomodel->deadgrids); 124 xfree((void**)&iomodel->x);125 xfree((void**)&iomodel->y);126 xfree((void**)&iomodel->z);127 xfree((void**)&iomodel->thickness);128 xfree((void**)&iomodel->bed);129 56 xfree((void**)&iomodel->gridonbed); 130 57 xfree((void**)&iomodel->gridonsurface); … … 135 62 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 136 63 * datasets, it will not be redone: */ 137 elements->Presort();138 64 nodes->Presort(); 139 vertices->Presort();140 materials->Presort();141 142 cleanup_and_return:143 65 144 66 /*Assign output pointer: */ 145 *pelements=elements;146 67 *pnodes=nodes; 147 *pvertices=vertices;148 *pmaterials=materials;149 68 } -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsPrognostic.c:2 * CreateNodesPrognostic.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsPrognostic(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesPrognostic(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i,j,k,n; 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 19 21 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); 25 /*First create nodes*/ 28 26 nodes = new DataSet(NodesEnum); 29 vertices = new DataSet(VerticesEnum);30 materials = new DataSet(MaterialsEnum);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->thickness,NULL,NULL,iomodel_handle,"thickness"); 41 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 42 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 43 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 44 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 45 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate"); 46 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 47 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 48 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 49 50 for (i=0;i<iomodel->numberofelements;i++){ 51 52 if(iomodel->my_elements[i]){ 53 54 /*Create and add tria element to elements dataset: */ 55 elements->AddObject(new Tria(i+1,i,iomodel)); 56 57 /*Create and add material property to materials dataset: */ 58 materials->AddObject(new Matice(i+1,i,iomodel,3)); 59 } 60 }//for (i=0;i<numberofelements;i++) 61 62 63 /*Free data : */ 64 xfree((void**)&iomodel->elements); 65 xfree((void**)&iomodel->thickness); 66 xfree((void**)&iomodel->surface); 67 xfree((void**)&iomodel->bed); 68 xfree((void**)&iomodel->elementoniceshelf); 69 xfree((void**)&iomodel->elementonwater); 70 xfree((void**)&iomodel->melting_rate); 71 xfree((void**)&iomodel->accumulation_rate); 72 xfree((void**)&iomodel->vx); 73 xfree((void**)&iomodel->vy); 74 75 } 76 else{ // if (dim==2) 77 78 /*Fetch data needed: */ 79 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 80 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 81 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 82 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 83 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 84 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed"); 85 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface"); 86 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 87 IoModelFetchData(&iomodel->pressure,NULL,NULL,iomodel_handle,"pressure"); 88 IoModelFetchData(&iomodel->temperature,NULL,NULL,iomodel_handle,"temperature"); 89 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate"); 90 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 91 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 92 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 93 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements"); 94 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements"); 95 96 for (i=0;i<iomodel->numberofelements;i++){ 97 if(iomodel->my_elements[i]){ 98 /*Create and add penta element to elements dataset: */ 99 elements->AddObject(new Penta(i+1,i,iomodel)); 100 101 /*Create and add material property to materials dataset: */ 102 materials->AddObject(new Matice(i+1,i,iomodel,6)); 103 } 104 }//for (i=0;i<numberofelements;i++) 105 106 /*Free data: */ 107 xfree((void**)&iomodel->elements); 108 xfree((void**)&iomodel->thickness); 109 xfree((void**)&iomodel->surface); 110 xfree((void**)&iomodel->bed); 111 xfree((void**)&iomodel->elementoniceshelf); 112 xfree((void**)&iomodel->elementonbed); 113 xfree((void**)&iomodel->elementonsurface); 114 xfree((void**)&iomodel->elementonwater); 115 xfree((void**)&iomodel->pressure); 116 xfree((void**)&iomodel->temperature); 117 xfree((void**)&iomodel->melting_rate); 118 xfree((void**)&iomodel->accumulation_rate); 119 xfree((void**)&iomodel->vx); 120 xfree((void**)&iomodel->vy); 121 xfree((void**)&iomodel->upperelements); 122 xfree((void**)&iomodel->lowerelements); 123 124 125 } //if (dim==2) 126 127 /*Add new constrant material property to materials, at the end: */ 128 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); 129 33 130 34 /*First fetch data: */ … … 133 37 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 134 38 } 135 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");136 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");137 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");138 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");139 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");140 39 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 141 40 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 145 44 for (i=0;i<iomodel->numberofvertices;i++){ 146 45 147 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */148 46 if(iomodel->my_vertices[i]){ 149 150 /*Add vertex to vertices dataset: */151 vertices->AddObject(new Vertex(i+1,i,iomodel));152 47 153 48 /*Add node to nodes dataset: */ … … 159 54 /*Clean fetched data: */ 160 55 xfree((void**)&iomodel->deadgrids); 161 xfree((void**)&iomodel->x);162 xfree((void**)&iomodel->y);163 xfree((void**)&iomodel->z);164 xfree((void**)&iomodel->thickness);165 xfree((void**)&iomodel->bed);166 56 xfree((void**)&iomodel->gridonbed); 167 57 xfree((void**)&iomodel->gridonsurface); … … 172 62 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 173 63 * datasets, it will not be redone: */ 174 elements->Presort();175 64 nodes->Presort(); 176 vertices->Presort();177 materials->Presort();178 179 cleanup_and_return:180 65 181 66 /*Assign output pointer: */ 182 *pelements=elements;183 67 *pnodes=nodes; 184 *pvertices=vertices;185 *pmaterials=materials;186 68 187 69 } -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/CreateNodesPrognostic2.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsPrognostic2.c:2 * CreateNodesPrognostic2.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsPrognostic2(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesPrognostic2(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i ,j;18 int i; 19 19 int vertex_index; 20 20 int node_index; 21 int totalnodes; 22 bool continuous_galerkin=false; 21 23 22 24 /*DataSets: */ 23 DataSet* elements = NULL;24 25 DataSet* nodes = NULL; 25 DataSet* vertices = NULL;26 DataSet* materials = NULL;27 26 28 /*First create the elements, nodes and material properties: */ 29 elements = new DataSet(ElementsEnum); 27 /*First create nodes*/ 30 28 nodes = new DataSet(NodesEnum); 31 vertices = new DataSet(VerticesEnum);32 materials = new DataSet(MaterialsEnum);33 29 34 /* Partition elements and vertices and nodes: */35 Partitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_nodes, &iomodel->my_bordervertices, iomodel, iomodel_handle);30 /*Recover number of nodes already created in other analyses: */ 31 totalnodes=iomodel->nodecounter; 36 32 37 /*elements created vary if we are dealing with a 2d mesh, or a 3d mesh: */ 38 /*2d mesh: */ 39 if (iomodel->dim==2){ 33 /*Continuous Galerkin partition of nodes: */ 34 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin); 40 35 41 /*Fetch data needed: */ 42 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 43 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 44 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 45 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 46 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 47 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 48 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate"); 49 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 50 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 51 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 52 53 for (i=0;i<iomodel->numberofelements;i++){ 54 55 if(iomodel->my_elements[i]){ 56 57 /*Create and add tria element to elements dataset: */ 58 elements->AddObject(new Tria(i+1,i,iomodel)); 59 60 /*Create and add material property to materials dataset: */ 61 materials->AddObject(new Matice(i+1,i,iomodel,3)); 62 } 63 }//for (i=0;i<numberofelements;i++) 64 65 /*Free data : */ 66 xfree((void**)&iomodel->thickness); 67 xfree((void**)&iomodel->surface); 68 xfree((void**)&iomodel->bed); 69 xfree((void**)&iomodel->elementoniceshelf); 70 xfree((void**)&iomodel->elementonwater); 71 xfree((void**)&iomodel->melting_rate); 72 xfree((void**)&iomodel->accumulation_rate); 73 xfree((void**)&iomodel->vx); 74 xfree((void**)&iomodel->vy); 75 76 } 77 else{ // if (dim==2) 78 ISSMERROR("not implemented yet"); 79 } //if (dim==2) 80 81 /*Add new constrant material property tgo materials, at the end: */ 82 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel)); 83 84 /*Create nodes and vertices: */ 85 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x"); 86 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y"); 87 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z"); 88 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 89 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 36 /*Create nodes: */ 90 37 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 91 38 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 93 40 IoModelFetchData(&iomodel->gridonicesheet,NULL,NULL,iomodel_handle,"gridonicesheet"); 94 41 IoModelFetchData(&iomodel->gridoniceshelf,NULL,NULL,iomodel_handle,"gridoniceshelf"); 42 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 95 43 if (iomodel->dim==3){ 96 44 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 97 45 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 98 }99 100 /*Build Vertices dataset*/101 for (i=0;i<iomodel->numberofvertices;i++){102 103 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */104 if(iomodel->my_vertices[i]){105 106 /*Add vertex to vertices dataset: */107 vertices->AddObject(new Vertex(i+1,i,iomodel));108 109 }110 46 } 111 47 … … 132 68 /*Clean fetched data: */ 133 69 xfree((void**)&iomodel->deadgrids); 134 xfree((void**)&iomodel->x);135 xfree((void**)&iomodel->y);136 xfree((void**)&iomodel->z);137 xfree((void**)&iomodel->thickness);138 xfree((void**)&iomodel->bed);139 70 xfree((void**)&iomodel->gridonbed); 140 71 xfree((void**)&iomodel->gridonsurface); … … 146 77 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 147 78 * datasets, it will not be redone: */ 148 elements->Presort();149 79 nodes->Presort(); 150 vertices->Presort();151 materials->Presort();152 153 cleanup_and_return:154 80 155 81 /*Assign output pointer: */ 156 *pelements=elements;157 82 *pnodes=nodes; 158 *pvertices=vertices;159 *pmaterials=materials;160 83 } -
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 } -
issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
r3998 r3999 1 1 /* 2 * Create ElementsNodesAndMaterialsThermal.c:2 * CreateNodesThermal.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void Create ElementsNodesAndMaterialsThermal(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){15 void CreateNodesThermal(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 /*Intermediary*/ 18 int i,j,k,n; 18 int i; 19 int totalnodes; 20 bool continuous_galerkin=true; 19 21 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 /*Fetch data needed: */ 36 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); 37 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness"); 38 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface"); 39 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed"); 40 IoModelFetchData(&iomodel->drag_coefficient,NULL,NULL,iomodel_handle,"drag_coefficient"); 41 IoModelFetchData(&iomodel->drag_p,NULL,NULL,iomodel_handle,"drag_p"); 42 IoModelFetchData(&iomodel->drag_q,NULL,NULL,iomodel_handle,"drag_q"); 43 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 44 IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed"); 45 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface"); 46 IoModelFetchData(&iomodel->elements_type,NULL,NULL,iomodel_handle,"elements_type"); 47 IoModelFetchData(&iomodel->geothermalflux,NULL,NULL,iomodel_handle,"geothermalflux"); 48 IoModelFetchData(&iomodel->rheology_B,NULL,NULL,iomodel_handle,"rheology_B"); 49 IoModelFetchData(&iomodel->rheology_n,NULL,NULL,iomodel_handle,"rheology_n"); 50 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 51 IoModelFetchData(&iomodel->pressure,NULL,NULL,iomodel_handle,"pressure"); 52 IoModelFetchData(&iomodel->temperature,NULL,NULL,iomodel_handle,"temperature"); 53 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 54 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 55 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz"); 56 IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements"); 57 IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements"); 58 59 for (i=0;i<iomodel->numberofelements;i++){ 60 if(iomodel->my_elements[i]){ 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); 61 33 62 /*Create and add tria element to elements dataset: */63 elements->AddObject(new Penta(i+1,i,iomodel));64 65 /*Create and add material property to materials dataset: */66 materials->AddObject(new Matice(i+1,i,iomodel,6));67 }68 }//for (i=0;i<numberofelements;i++)69 70 /*Free data: */71 xfree((void**)&iomodel->elements);72 xfree((void**)&iomodel->thickness);73 xfree((void**)&iomodel->surface);74 xfree((void**)&iomodel->bed);75 xfree((void**)&iomodel->drag_coefficient);76 xfree((void**)&iomodel->drag_p);77 xfree((void**)&iomodel->drag_q);78 xfree((void**)&iomodel->elementoniceshelf);79 xfree((void**)&iomodel->elementonbed);80 xfree((void**)&iomodel->elementonsurface);81 xfree((void**)&iomodel->elements_type);82 xfree((void**)&iomodel->geothermalflux);83 xfree((void**)&iomodel->rheology_n);84 xfree((void**)&iomodel->rheology_B);85 xfree((void**)&iomodel->elementonwater);86 xfree((void**)&iomodel->pressure);87 xfree((void**)&iomodel->temperature);88 xfree((void**)&iomodel->vx);89 xfree((void**)&iomodel->vy);90 xfree((void**)&iomodel->vz);91 xfree((void**)&iomodel->upperelements);92 xfree((void**)&iomodel->lowerelements);93 94 /*Add new constrant material property tgo materials, at the end: */95 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel));//put it at the end of the materials96 97 34 /*Create nodes and vertices: */ 98 35 if (iomodel->dim==3){ … … 100 37 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids"); 101 38 } 102 IoModelFetchData(&iomodel->x,NULL,NULL,iomodel_handle,"x");103 IoModelFetchData(&iomodel->y,NULL,NULL,iomodel_handle,"y");104 IoModelFetchData(&iomodel->z,NULL,NULL,iomodel_handle,"z");105 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");106 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");107 39 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 108 40 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 112 44 for (i=0;i<iomodel->numberofvertices;i++){ 113 45 114 /*vertices and nodes (same number, as we are running continuous galerkin formulation: */115 46 if(iomodel->my_vertices[i]){ 116 47 117 /*Add vertex to vertices dataset: */118 vertices->AddObject(new Vertex(i+1,i,iomodel));119 120 48 /*Add node to nodes dataset: */ 121 49 nodes->AddObject(new Node(i+1,i,iomodel)); … … 126 54 /*Clean fetched data: */ 127 55 xfree((void**)&iomodel->deadgrids); 128 xfree((void**)&iomodel->x);129 xfree((void**)&iomodel->y);130 xfree((void**)&iomodel->z);131 xfree((void**)&iomodel->thickness);132 xfree((void**)&iomodel->bed);133 56 xfree((void**)&iomodel->gridonbed); 134 57 xfree((void**)&iomodel->gridonsurface); … … 139 62 /*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 140 63 * datasets, it will not be redone: */ 141 elements->Presort();142 64 nodes->Presort(); 143 vertices->Presort();144 materials->Presort();145 146 cleanup_and_return:147 65 148 66 /*Assign output pointer: */ 149 *pelements=elements;150 67 *pnodes=nodes; 151 *pvertices=vertices;152 *pmaterials=materials;153 68 154 69 }
Note:
See TracChangeset
for help on using the changeset viewer.