Skip to content

Commit 6bec84c

Browse files
authored
Add files via upload
Changes need for Clang compiler - when there is a global variable with the Clang compiler, it has to be declared only once and referenced as "extern" from other files.
1 parent abfd226 commit 6bec84c

File tree

3 files changed

+209
-191
lines changed

3 files changed

+209
-191
lines changed

ref/block.h

Lines changed: 80 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
//
2525
// ************************************************************************
2626

27+
#ifdef MA_MAIN
28+
#define EXTERN
29+
#else
30+
#define EXTERN extern
31+
#endif
32+
2733
//typedef int num_sz;
2834
typedef long long num_sz;
2935

@@ -44,7 +50,7 @@ typedef struct {
4450
int cen[3];
4551
double ****array;
4652
} block;
47-
block *blocks;
53+
EXTERN block *blocks;
4854

4955
typedef struct {
5056
num_sz number;
@@ -59,81 +65,81 @@ typedef struct {
5965
int child_node[8];
6066
int cen[3];
6167
} parent;
62-
parent *parents;
68+
EXTERN parent *parents;
6369

6470
typedef struct {
6571
num_sz number; // number of block
6672
int n; // position in block array
6773
} sorted_block;
68-
sorted_block *sorted_list;
69-
int *sorted_index;
74+
EXTERN sorted_block *sorted_list;
75+
EXTERN int *sorted_index;
7076

71-
int my_pe;
72-
int num_pes;
77+
EXTERN int my_pe;
78+
EXTERN int num_pes;
7379

74-
int max_num_blocks;
75-
int num_refine;
76-
int uniform_refine;
77-
int x_block_size, y_block_size, z_block_size;
78-
int num_vars;
79-
int comm_vars;
80-
int init_block_x, init_block_y, init_block_z;
81-
int reorder;
82-
int npx, npy, npz;
83-
int inbalance;
84-
int refine_freq;
85-
int report_diffusion;
86-
int error_tol;
87-
int num_tsteps;
88-
int use_time;
89-
double end_time;
90-
int stages_per_ts;
91-
int checksum_freq;
92-
int stencil;
93-
int report_perf;
94-
int plot_freq;
95-
int num_objects;
96-
int lb_opt;
97-
int block_change;
98-
int code;
99-
int permute;
100-
int nonblocking;
101-
int refine_ghost;
102-
int change_dir;
103-
int group_blocks;
104-
int limit_move;
105-
int send_faces;
106-
int use_rcb;
80+
EXTERN int max_num_blocks;
81+
EXTERN int num_refine;
82+
EXTERN int uniform_refine;
83+
EXTERN int x_block_size, y_block_size, z_block_size;
84+
EXTERN int num_vars;
85+
EXTERN int comm_vars;
86+
EXTERN int init_block_x, init_block_y, init_block_z;
87+
EXTERN int reorder;
88+
EXTERN int npx, npy, npz;
89+
EXTERN int inbalance;
90+
EXTERN int refine_freq;
91+
EXTERN int report_diffusion;
92+
EXTERN int error_tol;
93+
EXTERN int num_tsteps;
94+
EXTERN int use_time;
95+
EXTERN double end_time;
96+
EXTERN int stages_per_ts;
97+
EXTERN int checksum_freq;
98+
EXTERN int stencil;
99+
EXTERN int report_perf;
100+
EXTERN int plot_freq;
101+
EXTERN int num_objects;
102+
EXTERN int lb_opt;
103+
EXTERN int block_change;
104+
EXTERN int code;
105+
EXTERN int permute;
106+
EXTERN int nonblocking;
107+
EXTERN int refine_ghost;
108+
EXTERN int change_dir;
109+
EXTERN int group_blocks;
110+
EXTERN int limit_move;
111+
EXTERN int send_faces;
112+
EXTERN int use_rcb;
107113

108-
int first;
109-
int *dirs;
110-
int num_cells;
111-
int mat;
112-
int max_num_parents;
113-
int num_parents;
114-
int max_active_parent;
115-
int cur_max_level;
116-
num_sz *num_blocks;
117-
num_sz *local_num_blocks;
118-
num_sz *block_start;
119-
int num_active;
120-
int max_active_block;
121-
num_sz global_active;
122-
int x_block_half, y_block_half, z_block_half;
123-
double tol;
124-
double *grid_sum;
125-
num_sz *p8;
126-
int *p2;
127-
int mesh_size[3];
128-
int max_mesh_size;
129-
int *from, *to;
130-
int msg_len[3][4];
131-
int local_max_b;
132-
int global_max_b;
133-
double *a0, a1;
134-
double total_fp_divs;
135-
double total_fp_adds;
136-
double total_fp_muls;
114+
EXTERN int first;
115+
EXTERN int *dirs;
116+
EXTERN int num_cells;
117+
EXTERN int mat;
118+
EXTERN int max_num_parents;
119+
EXTERN int num_parents;
120+
EXTERN int max_active_parent;
121+
EXTERN int cur_max_level;
122+
EXTERN num_sz *num_blocks;
123+
EXTERN num_sz *local_num_blocks;
124+
EXTERN num_sz *block_start;
125+
EXTERN int num_active;
126+
EXTERN int max_active_block;
127+
EXTERN num_sz global_active;
128+
EXTERN int x_block_half, y_block_half, z_block_half;
129+
EXTERN double tol;
130+
EXTERN double *grid_sum;
131+
EXTERN num_sz *p8;
132+
EXTERN int *p2;
133+
EXTERN int mesh_size[3];
134+
EXTERN int max_mesh_size;
135+
EXTERN int *from, *to;
136+
EXTERN int msg_len[3][4];
137+
EXTERN int local_max_b;
138+
EXTERN int global_max_b;
139+
EXTERN double *a0, a1;
140+
EXTERN double total_fp_divs;
141+
EXTERN double total_fp_adds;
142+
EXTERN double total_fp_muls;
137143

138144
typedef struct {
139145
int type;
@@ -146,24 +152,24 @@ typedef struct {
146152
double orig_size[3];
147153
double inc[3];
148154
} object;
149-
object *objects;
155+
EXTERN object *objects;
150156

151-
int num_dots;
152-
int max_num_dots;
153-
int max_active_dot;
157+
EXTERN int num_dots;
158+
EXTERN int max_num_dots;
159+
EXTERN int max_active_dot;
154160
typedef struct {
155161
num_sz number;
156162
int n;
157163
int proc;
158164
int new_proc;
159165
int cen[3];
160166
} dot;
161-
dot *dots;
167+
EXTERN dot *dots;
162168
typedef struct {
163169
num_sz number;
164170
num_sz num_prime;
165171
int n;
166172
int proc;
167173
int new_proc;
168174
} spot;
169-
spot *spots;
175+
EXTERN spot *spots;

ref/comm.h

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,32 +24,39 @@
2424
//
2525
// ************************************************************************
2626

27+
#ifdef MA_MAIN
28+
#define EXTERN
29+
#else
30+
#define EXTERN extern
31+
#endif
32+
2733
/* comm partner variables */
28-
double *send_buff, *recv_buff; /* use in comm and for balancing blocks */
34+
EXTERN double *send_buff, *recv_buff; // use in comm and for balancing blocks
2935

30-
int s_buf_size, r_buf_size;
36+
EXTERN int s_buf_size, r_buf_size;
3137

32-
int num_comm_partners[3], // number of comm partners in each direction
33-
*comm_partner[3], // list of comm partners in each direction
34-
max_comm_part[3], // lengths of comm partners arrays
35-
*send_size[3], // send sizes for each comm partner
36-
*recv_size[3], // recv sizes for each comm partner
37-
*comm_index[3], // index into comm_block, _face_case, and offsets
38-
*comm_num[3], // number of blocks for each comm partner
39-
*comm_block[3], // array containing local block number for comm
40-
*comm_face_case[3], // array containing face cases for comm
41-
*comm_pos[3], // position for center of sending face
42-
*comm_pos1[3], // perpendicular position of sending face
43-
*comm_send_off[3], // offset into send buffer (global, convert to local)
44-
*comm_recv_off[3], // offset into recv buffer
45-
num_cases[3], // amount used in above six arrays
46-
max_num_cases[3], // length of above six arrays
47-
s_buf_num[3], // total amount being sent in each direction
48-
r_buf_num[3]; // total amount being received in each direction
38+
EXTERN int num_comm_partners[3], // number of comm partners in each direction
39+
*comm_partner[3], // list of comm partners in each direction
40+
max_comm_part[3], // lengths of comm partners arrays
41+
*send_size[3], // send sizes for each comm partner
42+
*recv_size[3], // recv sizes for each comm partner
43+
*comm_index[3], // index: comm_block, _face_case, and offsets
44+
*comm_num[3], // number of blocks for each comm partner
45+
*comm_block[3], // array containing local block num for comm
46+
*comm_face_case[3], // array containing face cases for comm
47+
*comm_pos[3], // position for center of sending face
48+
*comm_pos1[3], // perpendicular position of sending face
49+
*comm_send_off[3], // offset into send buffer
50+
// (global, convert to local)
51+
*comm_recv_off[3], // offset into recv buffer
52+
num_cases[3], // amount used in above six arrays
53+
max_num_cases[3], // length of above six arrays
54+
s_buf_num[3], // total amount being sent in each direction
55+
r_buf_num[3]; // total amount being received in each dir
4956

50-
MPI_Request *request, *s_req;
57+
EXTERN MPI_Request *request, *s_req;
5158

52-
int max_num_req;
59+
EXTERN int max_num_req;
5360

5461
// for comm_parent - this is a non-symetric communication
5562

@@ -58,18 +65,17 @@ typedef struct {
5865
int *comm_part; // core to communicate with
5966
int *comm_num; // number to communicate to each core
6067
int *index; // offset into next two arrays
61-
num_sz *comm_b; // block number to communicate from
62-
num_sz *comm_p; // parent number of block (for sorting)
68+
num_sz *comm_b; // block number to communicate from
69+
num_sz *comm_p; // parent number of block (for sorting)
6370
int *comm_c; // child number of block
6471
int max_part; // max communication partners
6572
int num_cases; // number to communicate
6673
int max_cases; // max number to communicate
6774
} par_comm;
68-
par_comm par_b, par_p, par_p1;
75+
EXTERN par_comm par_b, par_p, par_p1;
6976

70-
int *bin,
71-
*gbin;
77+
EXTERN int *bin, *gbin;
7278

73-
MPI_Comm *comms;
74-
int *me;
75-
int *np;
79+
EXTERN MPI_Comm *comms;
80+
EXTERN int *me;
81+
EXTERN int *np;

0 commit comments

Comments
 (0)