OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
set_graph Class Reference

Public Member Functions

void init_edge (int edge, int dep_sz, int *dep_list)
void dependancy_sort (int *dependancy_list, int *check)
void delete_tree ()
void print ()

Private Member Functions

void recur_graph (int set_id, int *dependancy_list, int current_tree, int *check)

Private Attributes

vector< struct Edgeset_gr
int depend_stack

Detailed Description

Definition at line 40 of file set_graph.cpp.

Member Function Documentation

◆ delete_tree()

void set_graph::delete_tree ( )
inline

Definition at line 154 of file set_graph.cpp.

155 {
156 std::vector<struct Edge>().swap(set_gr);
157 }
vector< struct Edge > set_gr
Definition set_graph.cpp:43

◆ dependancy_sort()

void set_graph::dependancy_sort ( int * dependancy_list,
int * check )
inline

Definition at line 124 of file set_graph.cpp.

135 {
136 depend_stack=0;
137
138 for (auto edge = set_gr.begin(); edge != set_gr.end(); edge++){
139 int edg_id = edge -> id;
140
141 if ( edge->dep_size == 0 && edge->color == 0){
142
143 edge->color =edge->id;
144 dependancy_list[depend_stack] = edg_id;
145 depend_stack++;
146
147 }else {
148 recur_graph(edg_id, dependancy_list, edg_id ,check);
149 if (*check < 0) return; // Error occurred do not continue
150 }
151 }
152 }
void recur_graph(int set_id, int *dependancy_list, int current_tree, int *check)
Definition set_graph.cpp:48
int depend_stack
Definition set_graph.cpp:44
initmumps id

◆ init_edge()

void set_graph::init_edge ( int edge,
int dep_sz,
int * dep_list )
inline

Definition at line 94 of file set_graph.cpp.

106 {
107 struct Edge edg;
108 edg.id=edge;
109 edg.dep_size=dep_sz;
110 edg.color=0;
111 edg.closed_tree_check = 0;
112
113 edg.set_list = new int [dep_sz];
114
115 for (int i=0;i<dep_sz;i++)
116 {
117 edg.set_list[i] = dep_list[i];
118
119 }
120 set_gr.push_back(edg);
121 }

◆ print()

void set_graph::print ( )
inline

Definition at line 159 of file set_graph.cpp.

164 {
165 for (auto edge = set_gr.begin(); edge != set_gr.end(); edge++){
166 cout << "id: " << edge->id << " color: " << edge->color << " size: " << edge->dep_size << endl;
167 cout << " ";
168 int * list = edge-> set_list;
169 for (int i=0; i< edge->dep_size ; i++){
170 cout << list[i] << "," ;
171 }
172 cout << endl;
173 }
174 }

◆ recur_graph()

void set_graph::recur_graph ( int set_id,
int * dependancy_list,
int current_tree,
int * check )
inlineprivate

Definition at line 48 of file set_graph.cpp.

59 {
60
61 if (*check < 0) return; // Error occurred do not continue
62
63 auto edge = set_gr.begin()+set_id-1;
64 if (edge -> color > 0) return; // Current set appears already in list
65
66 if (edge->closed_tree_check == current_tree) {
67 // cout << "error infinite dependency in SET found" << endl; // if check fails this SET has been visited twice for Same Root SET.
68 *check = -current_tree; // Do not continue
69 return;
70 }
71
72 edge->closed_tree_check=current_tree; // closed_check is colored with the Root SET of the tree
73
74 for (int i=0; i< edge->dep_size; i++) {
75 int new_set = edge->set_list[i];
76 // cout << "curr_tree= "<< edge->closed_tree_check << " cur_set= " << set_id << " new_set= " << new_set << endl;
77 recur_graph(new_set, dependancy_list, current_tree,check );
78
79 if (*check < 0) return; // Error occurred do not continue
80 }
81
82
83 if ( edge->color == 0){ // If leave store it in dependency list
84 edge->color =edge->id;
85 dependancy_list[depend_stack] = edge -> id;
86 // cout << "Stack " << edge -> id << endl;
88 }
89
90 }

Field Documentation

◆ depend_stack

int set_graph::depend_stack
private

Definition at line 44 of file set_graph.cpp.

◆ set_gr

vector<struct Edge> set_graph::set_gr
private

Definition at line 43 of file set_graph.cpp.


The documentation for this class was generated from the following file: