FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
hecmw_dist.c
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2019 FrontISTR Commons
3  * This software is released under the MIT License, see LICENSE.txt
4  *****************************************************************************/
5 
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <errno.h>
9 #include "hecmw_dist.h"
10 #include "hecmw_util.h"
11 #include "hecmw_struct.h"
12 
14  const char *name) {
15  static int i;
16 
17  if (mat == NULL) return -1;
18 
19  if (name == NULL) return -1;
20 
21  if (i < mat->n_mat) {
22  if (strcmp(mat->mat_name[i], name) == 0) {
23  i++;
24  return i;
25  }
26  }
27 
28  for (i = 0; i < mat->n_mat; i++) {
29  if (strcmp(mat->mat_name[i], name) == 0) {
30  i++;
31  return i;
32  }
33  }
34 
35  return -1;
36 }
37 
39  const char *name) {
40  static int i;
41 
42  if (ngrp == NULL) return -1;
43 
44  if (name == NULL) return -1;
45 
46  if (i < ngrp->n_grp) {
47  if (strcmp(ngrp->grp_name[i], name) == 0) {
48  i++;
49  return i;
50  }
51  }
52 
53  for (i = 0; i < ngrp->n_grp; i++) {
54  if (strcmp(ngrp->grp_name[i], name) == 0) {
55  i++;
56  return i;
57  }
58  }
59 
60  return -1;
61 }
62 
64  const char *name) {
65  static int i = 0;
66 
67  if (egrp == NULL) return -1;
68 
69  if (name == NULL) return -1;
70 
71  if (i < egrp->n_grp) {
72  if (strcmp(egrp->grp_name[i], name) == 0) {
73  i++;
74  return i;
75  }
76  }
77 
78  for (i = 0; i < egrp->n_grp; i++) {
79  if (strcmp(egrp->grp_name[i], name) == 0) {
80  i++;
81  return i;
82  }
83  }
84 
85  return -1;
86 }
87 
89  const char *name) {
90  static int i;
91 
92  if (sgrp == NULL) return -1;
93 
94  if (name == NULL) return -1;
95 
96  if (i < sgrp->n_grp) {
97  if (strcmp(sgrp->grp_name[i], name) == 0) {
98  i++;
99  return i;
100  }
101  }
102 
103  for (i = 0; i < sgrp->n_grp; i++) {
104  if (strcmp(sgrp->grp_name[i], name) == 0) {
105  i++;
106  return i;
107  }
108  }
109 
110  return -1;
111 }
112 
113 int HECMW_dist_gid2lid_node(const struct hecmwST_local_mesh *mesh, int gid) {
114  static int i;
115 
116  if (mesh == NULL) return -1;
117 
118  if (i < mesh->n_node) {
119  if (mesh->global_node_ID[i] == gid) {
120  i++;
121  return i;
122  }
123  }
124 
125  for (i = 0; i < mesh->n_node; i++) {
126  if (mesh->global_node_ID[i] == gid) {
127  i++;
128  return i;
129  }
130  }
131 
132  return -1;
133 }
134 
135 int HECMW_dist_gid2lid_elem(const struct hecmwST_local_mesh *mesh, int gid) {
136  static int i;
137 
138  if (mesh == NULL) return -1;
139 
140  if (i < mesh->n_elem) {
141  if (mesh->global_elem_ID[i] == gid) {
142  i++;
143  return i;
144  }
145  }
146 
147  for (i = 0; i < mesh->n_elem; i++) {
148  if (mesh->global_elem_ID[i] == gid) {
149  i++;
150  return i;
151  }
152  }
153 
154  return -1;
155 }
hecmwST_local_mesh::global_node_ID
int * global_node_ID
Definition: hecmw_struct.h:168
hecmwST_node_grp::n_grp
int n_grp
Definition: hecmw_struct.h:76
HECMW_dist_gid2lid_node
int HECMW_dist_gid2lid_node(const struct hecmwST_local_mesh *mesh, int gid)
Definition: hecmw_dist.c:113
mesh
struct hecmwST_local_mesh * mesh
Definition: hecmw_repart.h:71
hecmw_dist.h
hecmwST_local_mesh
Definition: hecmw_struct.h:139
HECMW_dist_get_ngrp_id
int HECMW_dist_get_ngrp_id(const struct hecmwST_node_grp *ngrp, const char *name)
Definition: hecmw_dist.c:38
hecmwST_local_mesh::n_elem
int n_elem
Definition: hecmw_struct.h:184
HECMW_dist_get_sgrp_id
int HECMW_dist_get_sgrp_id(const struct hecmwST_surf_grp *sgrp, const char *name)
Definition: hecmw_dist.c:88
hecmwST_local_mesh::n_node
int n_node
Definition: hecmw_struct.h:161
hecmw_struct.h
hecmwST_elem_grp
Definition: hecmw_struct.h:92
hecmwST_surf_grp::n_grp
int n_grp
Definition: hecmw_struct.h:107
HECMW_dist_gid2lid_elem
int HECMW_dist_gid2lid_elem(const struct hecmwST_local_mesh *mesh, int gid)
Definition: hecmw_dist.c:135
hecmwST_elem_grp::grp_name
char ** grp_name
Definition: hecmw_struct.h:94
HECMW_dist_get_egrp_id
int HECMW_dist_get_egrp_id(const struct hecmwST_elem_grp *egrp, const char *name)
Definition: hecmw_dist.c:63
hecmwST_material::n_mat
int n_mat
Definition: hecmw_struct.h:36
hecmwST_node_grp
Definition: hecmw_struct.h:75
hecmwST_material::mat_name
char ** mat_name
Definition: hecmw_struct.h:40
hecmwST_surf_grp
Definition: hecmw_struct.h:106
hecmwST_elem_grp::n_grp
int n_grp
Definition: hecmw_struct.h:93
hecmwST_node_grp::grp_name
char ** grp_name
Definition: hecmw_struct.h:77
NULL
#define NULL
Definition: hecmw_io_nastran.c:30
hecmwST_material
Definition: hecmw_struct.h:35
hecmwST_surf_grp::grp_name
char ** grp_name
Definition: hecmw_struct.h:108
HECMW_dist_get_mat_id
int HECMW_dist_get_mat_id(const struct hecmwST_material *mat, const char *name)
Definition: hecmw_dist.c:13
hecmwST_local_mesh::global_elem_ID
int * global_elem_ID
Definition: hecmw_struct.h:190
hecmw_util.h