OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
Connectivity.cpp File Reference
#include <iostream>
#include <vector>
#include <algorithm>

Go to the source code of this file.

Data Structures

struct  tab3_t
struct  edge_t

Macros

#define _FCALL

Typedefs

typedef vector< edge_tedge_list_t
typedef vector< int > tab1_t

Functions

void edge_sort_ (edge_list_t **, int *, int *, int *, int *)
void edge_get_nb_connect_ (edge_list_t **, int *)
void edge_get_connect_ (edge_list_t **, int *)
void edge_free_memory_ (edge_list_t **)
void tab1_init_ (tab1_t **)
void tab1_append_ (tab1_t **, int *)
void tab1_append_tab_ (tab1_t **, int *, int *)
void tab1_get_size_ (tab1_t **, int *)
void tab1_get_ (tab1_t **, int *)
void tab1_free_memory_ (tab1_t **)
void _FCALL EDGE_SORT (edge_list_t **edge_ptr, int *n1, int *n2, int *elem, int *nedge)
void _FCALL EDGE_GET_NB_CONNECT (edge_list_t **edge_ptr, int *nb_conn)
void _FCALL EDGE_GET_CONNECT (edge_list_t **edge_ptr, int *elem)
void _FCALL EDGE_FREE_MEMORY (edge_list_t **edge_ptr)
void _FCALL TAB1_INIT (tab1_t **tab1_ptr)
void _FCALL TAB1_APPEND (tab1_t **tab1_ptr, int *ii)
void _FCALL TAB1_APPEND_TAB (tab1_t **tab1_ptr, int *n, int *tab)
void _FCALL TAB1_GET_SIZE (tab1_t **tab1_ptr, int *ii)
void _FCALL TAB1_GET (tab1_t **tab1_ptr, int *ii)
void _FCALL TAB1_FREE_MEMORY (tab1_t **tab1_ptr, int *ii)

Macro Definition Documentation

◆ _FCALL

#define _FCALL

Definition at line 27 of file Connectivity.cpp.

Typedef Documentation

◆ edge_list_t

typedef vector<edge_t> edge_list_t

Definition at line 47 of file Connectivity.cpp.

◆ tab1_t

typedef vector<int> tab1_t

Definition at line 48 of file Connectivity.cpp.

Function Documentation

◆ EDGE_FREE_MEMORY()

void _FCALL EDGE_FREE_MEMORY ( edge_list_t ** edge_ptr)

Definition at line 71 of file Connectivity.cpp.

71 {
72 edge_free_memory_(edge_ptr);
73 }
void edge_free_memory_(edge_list_t **)

◆ edge_free_memory_()

void edge_free_memory_ ( edge_list_t ** edge_ptr)

Definition at line 166 of file Connectivity.cpp.

167{
168 if (*edge_ptr != nullptr) {
169 delete (*edge_ptr);
170 *edge_ptr = nullptr;
171 }
172}

◆ EDGE_GET_CONNECT()

void _FCALL EDGE_GET_CONNECT ( edge_list_t ** edge_ptr,
int * elem )

Definition at line 68 of file Connectivity.cpp.

68 {
69 edge_get_connect_(edge_ptr, elem);
70 }
void edge_get_connect_(edge_list_t **, int *)

◆ edge_get_connect_()

void edge_get_connect_ ( edge_list_t ** edge_ptr,
int * elem )

Definition at line 153 of file Connectivity.cpp.

154{
155 edge_list_t const * edge_list = *edge_ptr;
156 int nn = edge_list->size();
157 int cpt = 0;
158 for (int i(0) ; i < nn ; ++i) {
159 for (int j(0) ; j < edge_list->at(i).elem_list.size(); ++j) {
160 elem[cpt] = edge_list->at(i).elem_list.at(j);
161 cpt++;
162 }
163 }
164}
vector< edge_t > edge_list_t
type(edge_entity), dimension(:,:), allocatable, target edge_list

◆ EDGE_GET_NB_CONNECT()

void _FCALL EDGE_GET_NB_CONNECT ( edge_list_t ** edge_ptr,
int * nb_conn )

Definition at line 65 of file Connectivity.cpp.

65 {
66 edge_get_nb_connect_(edge_ptr, nb_conn);
67 }
void edge_get_nb_connect_(edge_list_t **, int *)

◆ edge_get_nb_connect_()

void edge_get_nb_connect_ ( edge_list_t ** edge_ptr,
int * nb_conn )

Definition at line 144 of file Connectivity.cpp.

145{
146 edge_list_t const * edge_list = *edge_ptr;
147 int nn = edge_list->size();
148 for (int i(0) ; i < nn ; ++i) {
149 nb_conn[i] = edge_list->at(i).nb_con;
150 }
151}

◆ EDGE_SORT()

void _FCALL EDGE_SORT ( edge_list_t ** edge_ptr,
int * n1,
int * n2,
int * elem,
int * nedge )

Definition at line 62 of file Connectivity.cpp.

62 {
63 edge_sort_(edge_ptr, n1, n2, elem, nedge);
64 }
void edge_sort_(edge_list_t **, int *, int *, int *, int *)

◆ edge_sort_()

void edge_sort_ ( edge_list_t ** edge_ptr,
int * n1,
int * n2,
int * elem,
int * nedge )

Definition at line 95 of file Connectivity.cpp.

96{
97 int nn = *nedge;
98 std::vector<tab3_t> tab(nn);
99 for (int i(0) ; i < nn ; ++i) {
100 tab.at(i).n1 = n1[i];
101 tab.at(i).n2 = n2[i];
102 tab.at(i).n3 = elem[i];
103 }
104 std::sort(tab.begin(), tab.end(), [] (tab3_t ielem1, tab3_t ielem2)
105 {return (ielem1.n1 < ielem2.n1);});
106 int i = 0;
107 while (i < tab.size()) {
108 int j = i;
109 for ( ; (j < tab.size()) && (tab.at(i).n1 == tab.at(j).n1) ; j++) {}
110 if (j != i) {
111 std::vector<tab3_t>::iterator iter1 = tab.begin() + i;
112 std::vector<tab3_t>::iterator iter2 = tab.begin() + j;
113 std::sort(iter1, iter2, [] (tab3_t ielem1, tab3_t ielem2) {return (ielem1.n2 < ielem2.n2);});
114 i = j;
115 }
116 }
117
118
119 *edge_ptr = new edge_list_t;
120 edge_list_t* edge_list = *edge_ptr;
121
122 edge_list->push_back(edge_t(tab.at(0).n1, tab.at(0).n2, tab.at(0).n3));
123 for (int i(1) ; i < nn ; ++i) {
124 if (tab.at(i).n1 != (*(edge_list->end()-1)).n1 || tab.at(i).n2 != (*(edge_list->end()-1)).n2) {
125 edge_list->push_back(edge_t(tab.at(i).n1, tab.at(i).n2, tab.at(i).n3));
126 } else {
127 (*(edge_list->end()-1)).elem_list.push_back(tab.at(i).n3);
128 }
129 }
130
131 for (int i(0) ; i < edge_list->size() ; ++i) {
132 edge_list->at(i).nb_con = edge_list->at(i).elem_list.size();
133 }
134
135 *nedge = edge_list->size();
136 nn = *nedge;
137 // Copy back
138 for (int i(0) ; i < nn ; ++i) {
139 n1[i] = edge_list->at(i).n1;
140 n2[i] = edge_list->at(i).n2;
141 }
142}

◆ TAB1_APPEND()

void _FCALL TAB1_APPEND ( tab1_t ** tab1_ptr,
int * ii )

Definition at line 77 of file Connectivity.cpp.

77 {
78 tab1_append_(tab1_ptr, ii);
79 }
void tab1_append_(tab1_t **, int *)

◆ tab1_append_()

void tab1_append_ ( tab1_t ** tab_ptr,
int * ii )

Definition at line 178 of file Connectivity.cpp.

179{
180 (*tab_ptr)->push_back(*ii);
181}

◆ TAB1_APPEND_TAB()

void _FCALL TAB1_APPEND_TAB ( tab1_t ** tab1_ptr,
int * n,
int * tab )

Definition at line 80 of file Connectivity.cpp.

80 {
81 tab1_append_tab_(tab1_ptr, n, tab);
82 }
void tab1_append_tab_(tab1_t **, int *, int *)
n

◆ tab1_append_tab_()

void tab1_append_tab_ ( tab1_t ** tab_ptr,
int * n,
int * tab )

Definition at line 182 of file Connectivity.cpp.

183{
184 for (int i(0) ; i < *n ; ++i) {
185 (*tab_ptr)->push_back(tab[i]);
186 }
187}

◆ TAB1_FREE_MEMORY()

void _FCALL TAB1_FREE_MEMORY ( tab1_t ** tab1_ptr,
int * ii )

Definition at line 89 of file Connectivity.cpp.

89 {
90 tab1_free_memory_(tab1_ptr);
91 }
void tab1_free_memory_(tab1_t **)

◆ tab1_free_memory_()

void tab1_free_memory_ ( tab1_t ** tab_ptr)

Definition at line 199 of file Connectivity.cpp.

200{
201 if ((*tab_ptr) != nullptr) {
202 delete (*tab_ptr);
203 (*tab_ptr) = nullptr;
204 }
205}

◆ TAB1_GET()

void _FCALL TAB1_GET ( tab1_t ** tab1_ptr,
int * ii )

Definition at line 86 of file Connectivity.cpp.

86 {
87 tab1_get_(tab1_ptr, ii);
88 }
void tab1_get_(tab1_t **, int *)

◆ tab1_get_()

void tab1_get_ ( tab1_t ** tab_ptr,
int * out )

Definition at line 192 of file Connectivity.cpp.

193{
194 int ss = (*tab_ptr)->size();
195 for (int i(0) ; i < ss ; ++i) {
196 out[i] = (*tab_ptr)->at(i);
197 }
198}

◆ TAB1_GET_SIZE()

void _FCALL TAB1_GET_SIZE ( tab1_t ** tab1_ptr,
int * ii )

Definition at line 83 of file Connectivity.cpp.

83 {
84 tab1_get_size_(tab1_ptr, ii);
85 }
void tab1_get_size_(tab1_t **, int *)

◆ tab1_get_size_()

void tab1_get_size_ ( tab1_t ** tab_ptr,
int * ss )

Definition at line 188 of file Connectivity.cpp.

189{
190 *ss = (*tab_ptr)->size();
191}

◆ TAB1_INIT()

void _FCALL TAB1_INIT ( tab1_t ** tab1_ptr)

Definition at line 74 of file Connectivity.cpp.

74 {
75 tab1_init_(tab1_ptr);
76 }
void tab1_init_(tab1_t **)

◆ tab1_init_()

void tab1_init_ ( tab1_t ** tab_ptr)

Definition at line 174 of file Connectivity.cpp.

175{
176 (*tab_ptr) = new tab1_t;
177}
vector< int > tab1_t