7 #include "../headers/tnt_int.h"
8 #include "../headers/dec_public.h"
9 #include "../headers/dec_tnode.h"
10 #include "../headers/dec_network.h"
21 struct tnetwork *tnw_copy;
26 chk = tnw_copy = malloc(
sizeof(
struct tnetwork));
30 ret = _tnt_network_copy(nw->nw_start,nw->nw_end,&tnw_copy->nw_start,&tnw_copy->nw_end, 1);
34 if (NULL != nw->schmidt_vec) {
35 ret = _tnt_tnarr_copy(tnw_copy->schmidt_vec, nw->schmidt_vec);
38 tnw_copy->schmidt_vec = NULL;
42 nw->nw_start->flag = TNT_STARTNODE_FLAG;
43 nw->nw_end->flag = TNT_ENDNODE_FLAG;
58 struct tnetwork *tnw_copy;
63 chk = tnw_copy = malloc(
sizeof(
struct tnetwork));
67 ret = _tnt_network_copy(nw->nw_start,nw->nw_end,&tnw_copy->nw_start,&tnw_copy->nw_end, 0);
71 nw->nw_start->flag = TNT_STARTNODE_FLAG;
72 nw->nw_end->flag = TNT_ENDNODE_FLAG;
75 if (NULL != nw->schmidt_vec) {
76 ret = _tnt_tnarr_copy(tnw_copy->schmidt_vec, nw->schmidt_vec);
79 tnw_copy->schmidt_vec = NULL;
98 ret = _tnt_network_create(&tnw);
102 tnw->nw_start->flag = TNT_STARTNODE_FLAG;
103 tnw->nw_end->flag = TNT_ENDNODE_FLAG;
106 tnw->schmidt_vec = NULL;
120 struct tnetwork *tnw = *nwp;
123 if (NULL == tnw)
return;
126 ret = _tnt_network_free(&(tnw->nw_start));
130 if (NULL != tnw->schmidt_vec) {
131 ret = _tnt_tnarr_free(tnw->schmidt_vec);
134 free(tnw->schmidt_vec);
156 tntNode (*eig_contract)(tntNode, tntNetwork),
159 void (*eig_prep)(tntNode, tntNetwork),
164 struct tnode *eigNode;
167 ret = _tnt_network_eig(&eigNode, V, nwMV, NM, eig_contract, eig_prep, eigval);
206 tntLegLabel leg_start_1,
208 tntLegLabel leg_end_1,
211 tntLegLabel leg_start_2,
213 tntLegLabel leg_end_2,
220 unsigned legid_start_1, legid_start_2, legid_end_1, legid_end_2;
221 struct tnetwork *tnw_2;
225 ret = _tnt_node_id_chartonum(&legid_start_1,leg_start_1[0]);
227 ret = _tnt_node_id_chartonum(&legid_start_2,leg_start_2[0]);
229 ret = _tnt_node_id_chartonum(&legid_end_1,leg_end_1[0]);
231 ret = _tnt_node_id_chartonum(&legid_end_2,leg_end_2[0]);
235 if (NULL != nw->schmidt_vec) {
236 ret = _tnt_tnarr_free(nw->schmidt_vec);
239 free(nw->schmidt_vec);
240 nw->schmidt_vec = NULL;
244 ret = _tnt_network_split(nw, &tnw_2, tnFirst_1, legid_start_1, tnLast_1, legid_end_1, tnFirst_2, legid_start_2, tnLast_2, legid_end_2, numSplit_1, tnSplit_1, numSplit_2, tnSplit_2);
248 nw->nw_start->flag = TNT_STARTNODE_FLAG;
249 nw->nw_end->flag = TNT_ENDNODE_FLAG;
252 tnw_2->nw_start->flag = TNT_STARTNODE_FLAG;
253 tnw_2->nw_end->flag = TNT_ENDNODE_FLAG;
255 tnw_2->schmidt_vec = NULL;
269 int strip_connections)
274 if (NULL != (*nwp)->schmidt_vec) {
275 ret = _tnt_tnarr_free((*nwp)->schmidt_vec);
278 free((*nwp)->schmidt_vec);
279 (*nwp)->schmidt_vec = NULL;
283 ret = _tnt_network_to_nodegroup(nwp, strip_connections);
void tntNetworkFree(tntNetwork *nwp)
tntNetwork tntNetworkCreate(void)
tntNetwork tntNetworkConjCopy(tntNetwork nw)
tntNetwork tntNetworkSplit(tntNetwork nw, tntNode tnFirst_1, tntLegLabel leg_start_1, tntNode tnLast_1, tntLegLabel leg_end_1, tntNode tnFirst_2, tntLegLabel leg_start_2, tntNode tnLast_2, tntLegLabel leg_end_2, unsigned numSplit_1, tntNode *tnSplit_1, unsigned numSplit_2, tntNode *tnSplit_2)
tntNode tntNetworkMinSite(tntNode V, tntNetwork *nwMV, unsigned NM, tntNode(*eig_contract)(tntNode, tntNetwork), void(*eig_prep)(tntNode, tntNetwork), tntComplex *eigval)
tntNetwork tntNetworkCopy(tntNetwork nw)
void tntNetworkToNodeGroup(tntNetwork *nwp, int strip_connections)