Changeset 4919
- Timestamp:
- 08/02/10 09:44:05 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp
r4765 r4919 33 33 /*Continuous Galerkin partition of nodes: */ 34 34 if(iomodel->prognostic_DG) continuous_galerkin=false; 35 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel,iomodel_handle,continuous_galerkin);35 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 36 36 37 37 /*Check in 3d*/ -
issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp
r4236 r4919 29 29 30 30 /*Continuous Galerkin partition of nodes: */ 31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel,iomodel_handle,continuous_galerkin);31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 32 32 33 33 /*First fetch data: */ -
issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp
r4300 r4919 29 29 30 30 /*Continuous Galerkin partition of nodes: */ 31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel,iomodel_handle,continuous_galerkin);31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 32 32 33 33 /*First fetch data: */ -
issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r4295 r4919 32 32 33 33 /*First, partition elements and vertices. Nodes will partitioned on a per analysis_type basis. If partitining already done, ignore: */ 34 ElementsAndVerticesPartitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_bordervertices, iomodel,iomodel_handle);34 ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices,iomodel,iomodel_handle); 35 35 36 36 /*Fetch data needed: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
r4387 r4919 32 32 33 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);34 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 35 35 36 36 /*Create nodes: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
r4236 r4919 32 32 33 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);34 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 35 35 36 36 /*First fetch data: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp
r4236 r4919 33 33 34 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);35 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 36 36 37 37 /*First fetch data: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
r4236 r4919 32 32 33 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);34 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 35 35 36 36 /*First fetch data: */ -
issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
r4888 r4919 18 18 #include "../ModelProcessorx/ModelProcessorx.h" 19 19 20 void ElementsAndVerticesPartitioning(bool** pmy_elements, bool** pmy_vertices, bool** pmy_bordervertices,IoModel* iomodel, ConstDataHandle iomodel_handle){20 void ElementsAndVerticesPartitioning(bool** pmy_elements, bool** pmy_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){ 21 21 22 22 int i; … … 28 28 bool* my_elements=NULL; 29 29 bool* my_vertices=NULL; 30 bool* my_bordervertices=NULL;31 30 32 31 /*intermediary: */ … … 34 33 int* npart=NULL; //node partitioning. 35 34 int elements_width; //number of columns in elements (2d->3, 3d->6) 36 Vec bordervertices=NULL;37 double* serial_bordervertices=NULL;38 35 int el1,el2; 39 36 … … 121 118 xfree((void**)&iomodel->penalties); 122 119 123 #ifdef _PARALLEL_124 /*From the element partitioning, we can determine which vertices are on the inside of this cpu's125 *element partition, and which are on its border with other vertices:*/126 bordervertices=NewVec(iomodel->numberofvertices);127 128 for (i=0;i<iomodel->numberofvertices;i++){129 if(my_vertices[i])VecSetValue(bordervertices,i,1,ADD_VALUES);130 }131 VecAssemblyBegin(bordervertices);132 VecAssemblyEnd(bordervertices);133 134 VecToMPISerial(&serial_bordervertices,bordervertices);135 136 /*now go through serial_bordervertices, and booleanize it: */137 my_bordervertices=(bool*)xcalloc(iomodel->numberofvertices,sizeof(bool));138 for(i=0;i<iomodel->numberofvertices;i++){139 if(serial_bordervertices[i]>1)my_bordervertices[i]=1;140 }141 #else142 /*No border vertices: */143 my_bordervertices=(bool*)xcalloc(iomodel->numberofvertices,sizeof(bool));144 #endif145 146 120 /*Free ressources:*/ 147 121 xfree((void**)&npart); 148 122 xfree((void**)&epart); 149 xfree((void**)&serial_bordervertices);150 VecFree(&bordervertices);151 123 152 124 /*Assign output pointers:*/ 153 125 *pmy_elements=my_elements; 154 126 *pmy_vertices=my_vertices; 155 *pmy_bordervertices=my_bordervertices;156 127 } 157 128 -
issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
r4236 r4919 29 29 30 30 /*Continuous Galerkin partition of nodes: */ 31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel,iomodel_handle,continuous_galerkin);31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 32 32 33 33 /*First fetch data: */ -
issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h
r4765 r4919 91 91 92 92 /*partitioning: */ 93 void ElementsAndVerticesPartitioning(bool** pmy_elements, bool** pmy_vertices, bool** pmy_bordervertices,IoModel* iomodel, ConstDataHandle iomodel_handle);94 void NodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices,IoModel* iomodel, ConstDataHandle iomodel_handle,bool continuous);93 void ElementsAndVerticesPartitioning(bool** pmy_elements, bool** pmy_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle); 94 void NodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle,bool continuous); 95 95 96 96 /*Connectivity*/ -
issm/trunk/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
r4025 r4919 18 18 #include "../ModelProcessorx/ModelProcessorx.h" 19 19 20 void DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices,IoModel* iomodel, ConstDataHandle iomodel_handle);21 void ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices,IoModel* iomodel, ConstDataHandle iomodel_handle);20 void DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle); 21 void ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle); 22 22 23 void NodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices,IoModel* iomodel, ConstDataHandle iomodel_handle,bool continuous){23 void NodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle,bool continuous){ 24 24 25 25 /*First thing, this is a new partition for a new analysis_type, therefore, to avoid a leak, erase the nodes partition that might come through pmy_nodes: */ … … 28 28 /*Now, depending on whether we are running galerkin discontinous or continuous elements, carry out a different partition of the nodes: */ 29 29 if(continuous==true) 30 ContinuousGalerkinNodesPartitioning(pmy_nodes,my_elements, my_vertices, my_bordervertices,iomodel, iomodel_handle);30 ContinuousGalerkinNodesPartitioning(pmy_nodes,my_elements, my_vertices, iomodel, iomodel_handle); 31 31 else 32 DiscontinuousGalerkinNodesPartitioning(pmy_nodes,my_elements, my_vertices, my_bordervertices,iomodel, iomodel_handle);32 DiscontinuousGalerkinNodesPartitioning(pmy_nodes,my_elements, my_vertices, iomodel, iomodel_handle); 33 33 } 34 34 35 void ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices,IoModel* iomodel, ConstDataHandle iomodel_handle){35 void ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){ 36 36 37 37 /*as many nodes as there are vertices */ … … 48 48 49 49 50 void DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices,IoModel* iomodel, ConstDataHandle iomodel_handle){50 void DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){ 51 51 52 52 /*each element has it own nodes (as many as vertices) + additional nodes from neighbouring elements for each edge. This yields to a very different partition for -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
r4739 r4919 33 33 /*Create partition of nodes: */ 34 34 if(iomodel->prognostic_DG) continuous_galerkin=false; 35 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel,iomodel_handle,continuous_galerkin);35 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 36 36 37 37 /*Check in 3d*/ -
issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp
r4862 r4919 138 138 139 139 /*Partition elements and vertices and nodes: */ 140 ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices, &iomodel->my_bordervertices,iomodel,iomodel_handle);140 ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices,iomodel,iomodel_handle); 141 141 142 142 dpart=(double*)xmalloc(iomodel->numberofvertices*sizeof(double)); -
issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp
r4301 r4919 29 29 30 30 /*Continuous Galerkin partition of nodes: */ 31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel,iomodel_handle,continuous_galerkin);31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 32 32 33 33 /*First fetch data: */ -
issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
r4236 r4919 29 29 30 30 /*Continuous Galerkin partition of nodes: */ 31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel,iomodel_handle,continuous_galerkin);31 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin); 32 32 33 33 /*Create nodes and vertices: */ -
issm/trunk/src/c/objects/IoModel.cpp
r4854 r4919 97 97 xfree((void**)&this->repository); 98 98 xfree((void**)&this->name); 99 100 99 xfree((void**)&this->riftinfo); 101 102 100 xfree((void**)&this->penalties); 103 xfree((void**)&this->penaltypartitioning);104 105 101 xfree((void**)&this->control_type); 106 102 xfree((void**)&this->control_parameter); … … 110 106 xfree((void**)&this->my_vertices); 111 107 xfree((void**)&this->my_nodes); 112 xfree((void**)&this->my_bordervertices);113 xfree((void**)&this->penaltypartitioning);114 108 xfree((void**)&this->singlenodetoelementconnectivity); 115 109 xfree((void**)&this->numbernodetoelementconnectivity); … … 380 374 this->my_vertices=NULL; 381 375 this->my_nodes=NULL; 382 this->my_bordervertices=NULL;383 this->penaltypartitioning=NULL;384 376 this->singlenodetoelementconnectivity=NULL; 385 377 this->numbernodetoelementconnectivity=NULL; -
issm/trunk/src/c/objects/IoModel.h
r4854 r4919 186 186 bool* my_vertices; 187 187 bool* my_nodes; 188 bool* my_bordervertices;189 int* penaltypartitioning;190 188 int* singlenodetoelementconnectivity; 191 189 int* numbernodetoelementconnectivity;
Note:
See TracChangeset
for help on using the changeset viewer.