FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
fstr_ctrl_util_f.f90
Go to the documentation of this file.
2  use hecmw
3  implicit none
4 
5  ! external functions implemented in fstr_ctr_util.c
6 
7  interface
8 
9  function fstr_ctrl_rewind( ctrl ) &
10  bind(c,name='fstr_ctrl_rewind')
11  use iso_c_binding
12  integer(c_int) :: fstr_ctrl_rewind
13  integer(c_int) :: ctrl
14  end function fstr_ctrl_rewind
15 
16  subroutine fstr_ctrl_get_err_msg_c( buf, len ) &
17  bind(c,name='fstr_ctrl_get_err_msg')
18  use iso_c_binding
19  type(c_ptr),value :: buf
20  integer(c_int) :: len
21  end subroutine fstr_ctrl_get_err_msg_c
22 
23  function fstr_ctrl_open_c( filename ) &
24  bind(c,name='fstr_ctrl_open')
25  use iso_c_binding
26  integer(c_int) :: fstr_ctrl_open_c
27  type(c_ptr),value :: filename
28  end function fstr_ctrl_open_c
29 
30  function fstr_ctrl_get_rec_number( ctrl ) &
31  bind(c,name='fstr_ctrl_get_rec_number')
32  use iso_c_binding
33  integer(c_int) :: fstr_ctrl_get_rec_number
34  integer(c_int) :: ctrl
35  end function fstr_ctrl_get_rec_number
36 
37  function fstr_ctrl_get_line_c( ctrl, rec_no, buff, buff_size ) &
38  bind(c,name='fstr_ctrl_get_line')
39  use iso_c_binding
40  integer(c_int) :: fstr_ctrl_get_line_c
41  integer(c_int) :: ctrl
42  integer(c_int) :: rec_no
43  type(c_ptr),value :: buff
44  integer(c_int) :: buff_size
45  end function fstr_ctrl_get_line_c
46 
47  function fstr_ctrl_seek_header_c( ctrl, header_name ) &
48  bind(c,name='fstr_ctrl_seek_header')
49  use iso_c_binding
50  integer(c_int) :: fstr_ctrl_seek_header_c
51  integer(c_int) :: ctrl
52  type(c_ptr),value :: header_name
53  end function fstr_ctrl_seek_header_c
54 
55  function fstr_ctrl_seek_next_header( ctrl ) &
56  bind(c,name='fstr_ctrl_seek_next_header')
57  use iso_c_binding
58  integer(c_int) :: fstr_ctrl_seek_next_header
59  integer(c_int) :: ctrl
60  end function fstr_ctrl_seek_next_header
61 
62  function fstr_ctrl_get_c_h_name_c( ctrl, header_name, buf_size ) &
63  bind(c,name='fstr_ctrl_get_c_h_name')
64  use iso_c_binding
65  integer(c_int) :: fstr_ctrl_get_c_h_name_c
66  integer(c_int) :: ctrl
67  type(c_ptr),value :: header_name
68  integer(c_int) :: buf_size
69  end function fstr_ctrl_get_c_h_name_c
70 
71  !!! not used
72  function fstr_ctrl_get_c_h_line_no( ctrl ) &
73  bind(c,name='fstr_ctrl_get_c_h_line_no')
74  use iso_c_binding
75  integer(c_int) :: fstr_ctrl_get_c_h_line_no
76  integer(c_int) :: ctrl
77  end function fstr_ctrl_get_c_h_line_no
78 
79  function fstr_ctrl_get_c_h_pos( ctrl ) &
80  bind(c,name='fstr_ctrl_get_c_h_pos')
81  use iso_c_binding
82  integer(c_int) :: fstr_ctrl_get_c_h_pos
83  integer(c_int) :: ctrl
84  end function fstr_ctrl_get_c_h_pos
85 
86  !!! not used
87  function fstr_ctrl_get_param_c( ctrl, param_name, value_list, type, val ) &
88  bind(c,name='fstr_ctrl_get_param')
89  use iso_c_binding
90  integer(c_int) :: fstr_ctrl_get_param_c
91  integer(c_int) :: ctrl
92  type(c_ptr),value :: param_name, value_list
93  type(c_ptr),value :: type
94  type(c_ptr),value :: val
95  end function fstr_ctrl_get_param_c
96 
97  function fstr_ctrl_get_param_ex_c( ctrl, param_name, value_list, necessity, type, val ) &
98  bind(c,name='fstr_ctrl_get_param_ex')
99  use iso_c_binding
100  integer(c_int) :: fstr_ctrl_get_param_ex_c
101  integer(c_int) :: ctrl
102  type(c_ptr),value :: param_name, value_list
103  integer(c_int) :: necessity
104  type(c_ptr),value :: type
105  type(c_ptr),value :: val
106  end function fstr_ctrl_get_param_ex_c
107 
108  function fstr_ctrl_get_data_line_n( ctrl ) &
109  bind(c,name='fstr_ctrl_get_data_line_n')
110  use iso_c_binding
111  integer(c_int) :: fstr_ctrl_get_data_line_n
112  integer(c_int) :: ctrl
113  end function fstr_ctrl_get_data_line_n
114 
115  !!! not used
116  function fstr_ctrl_get_data_n_in_line_c( ctrl, line_no, delim ) &
117  bind(c,name='fstr_ctrl_get_data_n_in_line')
118  use iso_c_binding
119  integer(c_int) :: fstr_ctrl_get_data_n_in_line_c
120  integer(c_int) :: ctrl, line_no
121  type(c_ptr),value :: delim
122  end function fstr_ctrl_get_data_n_in_line_c
123 
124  !!! not used
126  bind(c,name='fstr_ctrl_get_data_error_pos')
127  use iso_c_binding
128  integer(c_int) :: fstr_ctrl_get_data_error_pos
129  end function fstr_ctrl_get_data_error_pos
130 
132  bind(c,name='fstr_ctrl_get_data_error_line')
133  use iso_c_binding
134  integer(c_int) :: fstr_ctrl_get_data_error_line
135  end function fstr_ctrl_get_data_error_line
136 
137  !!! not used
138  function fstr_ctrl_get_data_c( ctrl, line_no, format, v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) &
139  bind(c,name='fstr_ctrl_get_data_v10')
140  use iso_c_binding
141  integer(c_int) :: fstr_ctrl_get_data_c
142  integer(c_int) :: ctrl
143  integer(c_int) :: line_no
144  type(c_ptr),value :: format
145  type(c_ptr),value :: v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
146  end function fstr_ctrl_get_data_c
147 
148  function fstr_ctrl_get_data_ex_c( ctrl, line_no, format, v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) &
149  bind(c,name='fstr_ctrl_get_data_ex_v10')
150  use iso_c_binding
151  integer(c_int) :: fstr_ctrl_get_data_ex_c
152  integer(c_int) :: ctrl
153  integer(c_int) :: line_no
154  type(c_ptr),value :: format
155  type(c_ptr),value :: v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
156  end function fstr_ctrl_get_data_ex_c
157 
158  function fstr_ctrl_get_data_array_ex_c( ctrl, format, v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) &
159  bind(c,name='fstr_ctrl_get_data_array_ex_v10')
160  use iso_c_binding
161  integer(c_int) :: fstr_ctrl_get_data_array_ex_c
162  integer(c_int) :: ctrl
163  type(c_ptr),value :: format
164  type(c_ptr),value :: v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
165  end function fstr_ctrl_get_data_array_ex_c
166 
167  function fstr_ctrl_close( ctrl ) &
168  bind(c,name='fstr_ctrl_close')
169  use iso_c_binding
170  integer(c_int) :: fstr_ctrl_close
171  integer(c_int) :: ctrl
172  end function fstr_ctrl_close
173 
174  subroutine fstr_ctrl_dump( ctrl ) &
175  bind(c,name='fstr_ctrl_dump')
176  use iso_c_binding
177  integer(c_int) :: ctrl
178  end subroutine fstr_ctrl_dump
179 
180  end interface
181 
182 contains
183 
184  subroutine fstr_ctrl_get_err_msg( buf, len )
185  use iso_c_binding
186  character(len=*),target :: buf
187  integer(c_int) :: len
188  call fstr_ctrl_get_err_msg_c( c_loc(buf), len )
189  end subroutine fstr_ctrl_get_err_msg
190 
191  function fstr_ctrl_open( filename )
192  use iso_c_binding
193  integer(c_int) :: fstr_ctrl_open
194  character(len=*),target :: filename
195  fstr_ctrl_open = fstr_ctrl_open_c( c_loc(filename) )
196  end function fstr_ctrl_open
197 
198  function fstr_ctrl_get_line( ctrl, rec_no, buff, buff_size )
199  use iso_c_binding
200  integer(c_int) :: fstr_ctrl_get_line
201  integer(c_int) :: ctrl
202  integer(c_int) :: rec_no
203  character(len=*),target :: buff
204  integer(c_int) :: buff_size
205  fstr_ctrl_get_line = fstr_ctrl_get_line_c( ctrl, rec_no, c_loc(buff), buff_size )
206  end function fstr_ctrl_get_line
207 
208  function fstr_ctrl_seek_header( ctrl, header_name )
209  use iso_c_binding
210  integer(c_int) :: fstr_ctrl_seek_header
211  integer(c_int) :: ctrl
212  character(len=*),target :: header_name
213  fstr_ctrl_seek_header = fstr_ctrl_seek_header_c( ctrl, c_loc(header_name) )
214  end function fstr_ctrl_seek_header
215 
216  function fstr_ctrl_get_c_h_name( ctrl, header_name, buf_size )
217  use iso_c_binding
218  integer(c_int) :: fstr_ctrl_get_c_h_name
219  integer(c_int) :: ctrl
220  character(len=*),target :: header_name
221  integer(c_int) :: buf_size
222  fstr_ctrl_get_c_h_name = fstr_ctrl_get_c_h_name_c( ctrl, c_loc(header_name), buf_size )
223  end function fstr_ctrl_get_c_h_name
224 
225  function fstr_ctrl_get_param( ctrl, param_name, value_list, type, val )
226  use iso_c_binding
227  integer(c_int) :: fstr_ctrl_get_param
228  integer(c_int) :: ctrl
229  character(len=*),target :: param_name, value_list
230  character(c_char),target :: type
231  type(*),dimension(..),target :: val
232  fstr_ctrl_get_param = fstr_ctrl_get_param_c( ctrl, c_loc(param_name), c_loc(value_list), c_loc(type), c_loc(val) )
233  end function fstr_ctrl_get_param
234 
235  function fstr_ctrl_get_param_ex( ctrl, param_name, value_list, necessity, type, val )
236  use iso_c_binding
237  use hecmw
238  integer(c_int) :: fstr_ctrl_get_param_ex
239  integer(c_int) :: ctrl
240  character(len=*),target :: param_name, value_list
241  integer(c_int) :: necessity
242  character(c_char),target :: type
243  type(*),dimension(..),target :: val
244  fstr_ctrl_get_param_ex = fstr_ctrl_get_param_ex_c( ctrl,c_loc(param_name),c_loc(value_list),necessity,c_loc(type),c_loc(val) )
245  end function fstr_ctrl_get_param_ex
246 
247  function fstr_ctrl_get_data_n_in_line( ctrl, line_no, delim )
248  use iso_c_binding
249  integer(c_int) :: fstr_ctrl_get_data_n_in_line
250  integer(c_int) :: ctrl, line_no
251  character(len=*),target :: delim
252  fstr_ctrl_get_data_n_in_line = fstr_ctrl_get_data_n_in_line_c( ctrl, line_no, c_loc(delim) )
253  end function fstr_ctrl_get_data_n_in_line
254 
255  function fstr_ctrl_get_data( ctrl, line_no, format, v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
256  use iso_c_binding
257  integer(c_int) :: fstr_ctrl_get_data
258  integer(c_int) :: ctrl
259  integer(c_int) :: line_no
260  character(len=*),target :: format
261  type(*),target,optional :: v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
262  type(c_ptr) :: pv(10)
263  pv(:) = c_null_ptr
264  if( present(v1) ) pv(1) = c_loc(v1)
265  if( present(v2) ) pv(2) = c_loc(v2)
266  if( present(v3) ) pv(3) = c_loc(v3)
267  if( present(v4) ) pv(4) = c_loc(v4)
268  if( present(v5) ) pv(5) = c_loc(v5)
269  if( present(v6) ) pv(6) = c_loc(v6)
270  if( present(v7) ) pv(7) = c_loc(v7)
271  if( present(v8) ) pv(8) = c_loc(v8)
272  if( present(v9) ) pv(9) = c_loc(v9)
273  if( present(v10) ) pv(10) = c_loc(v10)
274  fstr_ctrl_get_data = fstr_ctrl_get_data_c( ctrl, line_no, c_loc(format), &
275  pv(1), pv(2), pv(3), pv(4), pv(5), pv(6), pv(7), pv(8), pv(9), pv(10) )
276  end function fstr_ctrl_get_data
277 
278  function fstr_ctrl_get_data_ex( ctrl, line_no, format, v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
279  use iso_c_binding
280  integer(c_int) :: fstr_ctrl_get_data_ex
281  integer(c_int) :: ctrl
282  integer(c_int) :: line_no
283  character(len=*),target :: format
284  type(*),target,optional :: v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
285  type(c_ptr) :: pv(10)
286  pv(:) = c_null_ptr
287  if( present(v1) ) pv(1) = c_loc(v1)
288  if( present(v2) ) pv(2) = c_loc(v2)
289  if( present(v3) ) pv(3) = c_loc(v3)
290  if( present(v4) ) pv(4) = c_loc(v4)
291  if( present(v5) ) pv(5) = c_loc(v5)
292  if( present(v6) ) pv(6) = c_loc(v6)
293  if( present(v7) ) pv(7) = c_loc(v7)
294  if( present(v8) ) pv(8) = c_loc(v8)
295  if( present(v9) ) pv(9) = c_loc(v9)
296  if( present(v10) ) pv(10) = c_loc(v10)
297  fstr_ctrl_get_data_ex = fstr_ctrl_get_data_ex_c( ctrl, line_no, c_loc(format), &
298  pv(1), pv(2), pv(3), pv(4), pv(5), pv(6), pv(7), pv(8), pv(9), pv(10) )
299  end function fstr_ctrl_get_data_ex
300 
301  function fstr_ctrl_get_data_array_ex( ctrl, format, v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
302  use iso_c_binding
303  integer(c_int) :: fstr_ctrl_get_data_array_ex
304  integer(c_int) :: ctrl
305  character(len=*),target :: format
306  type(*),dimension(*),target,optional :: v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
307  type(c_ptr) :: pv(10)
308  pv(:) = c_null_ptr
309  if( present(v1) ) pv(1) = c_loc(v1)
310  if( present(v2) ) pv(2) = c_loc(v2)
311  if( present(v3) ) pv(3) = c_loc(v3)
312  if( present(v4) ) pv(4) = c_loc(v4)
313  if( present(v5) ) pv(5) = c_loc(v5)
314  if( present(v6) ) pv(6) = c_loc(v6)
315  if( present(v7) ) pv(7) = c_loc(v7)
316  if( present(v8) ) pv(8) = c_loc(v8)
317  if( present(v9) ) pv(9) = c_loc(v9)
318  if( present(v10) ) pv(10) = c_loc(v10)
320  pv(1), pv(2), pv(3), pv(4), pv(5), pv(6), pv(7), pv(8), pv(9), pv(10) )
321  end function fstr_ctrl_get_data_array_ex
322 
323 end module fstr_ctrl_util_f
int fstr_ctrl_get_param_ex(int *ctrl, const char *param_name, const char *value_list, int *necessity, char *type, void *val)
int fstr_ctrl_get_data_n_in_line(int *ctrl, int *line_no, const char *delim)
void fstr_ctrl_get_err_msg(char *f_buff, int *len)
int fstr_ctrl_get_line(int *ctrl, int *rec_no, char *buff, int *buff_size)
int fstr_ctrl_get_data_array_ex(int *ctrl, const char *format,...)
int fstr_ctrl_seek_header(int *ctrl, const char *header_name)
int fstr_ctrl_open(char *filename)
int fstr_ctrl_get_data(int *ctrl, int *line_no, const char *format,...)
int fstr_ctrl_get_c_h_name(int *ctrl, char *header_name, int *buff_size)
int fstr_ctrl_get_data_ex(int *ctrl, int *line_no, const char *format,...)
int fstr_ctrl_get_param(int *ctrl, const char *param_name, const char *value_list, char *type, void *val)
Definition: hecmw.f90:6