source: issm/trunk/src/c/modules/ModelProcessorx/EdgesPartitioning.cpp@ 24313

Last change on this file since 24313 was 24313, checked in by Mathieu Morlighem, 5 years ago

merged trunk-jpl and trunk for revision 24310

File size: 1.4 KB
Line 
1/*!\file: EdgesPartitioning.cpp
2 * \brief: partition elements and nodes and vertices
3 */
4
5#include <string.h>
6#include "../../classes/classes.h"
7#include "../../shared/shared.h"
8#include "./ModelProcessorx.h"
9
10void EdgesPartitioning(IoModel* iomodel){
11
12 /*If faces are already present, exit*/
13 if(iomodel->my_edges) return;
14
15 /*Get edges and elements*/
16 CreateEdges(iomodel);
17 _assert_(iomodel->elementtoedgeconnectivity);
18
19 /*Mesh dependent variables*/
20 int elementnbe;
21 switch(iomodel->meshelementtype){
22 case TriaEnum: elementnbe = 3; break;
23 case TetraEnum: elementnbe = 6; break;
24 case PentaEnum: elementnbe = 9; break;
25 default: _error_("mesh dimension not supported yet");
26 }
27
28 /*output: */
29 iomodel->my_edges = xNewZeroInit<bool>(iomodel->numberofedges);
30
31 for(int i=0;i<iomodel->numberofelements;i++){
32 if(iomodel->my_elements[i]){
33 for(int j=0;j<elementnbe;j++){
34 iomodel->my_edges[iomodel->elementtoedgeconnectivity[i*elementnbe+j]] = true;
35 }
36 }
37 }
38
39 if(iomodel->meshelementtype==PentaEnum){
40 iomodel->my_vedges = xNewZeroInit<bool>(iomodel->numberofverticaledges);
41 iomodel->my_hedges = xNewZeroInit<bool>(iomodel->numberofhorizontaledges);
42 for(int i=0;i<iomodel->numberofelements;i++){
43 if(iomodel->my_elements[i]){
44 for(int j=0;j<3;j++) iomodel->my_vedges[iomodel->elementtoverticaledgeconnectivity[i*3+j]] = true;
45 for(int j=0;j<6;j++) iomodel->my_hedges[iomodel->elementtohorizontaledgeconnectivity[i*6+j]] = true;
46 }
47 }
48 }
49}
Note: See TracBrowser for help on using the repository browser.