FrontISTR  5.7.1
Large-scale structural analysis program with finit element method
hecmw_result_f.f90
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 !-------------------------------------------------------------------------------
6 
8  use hecmw_util
9  use hecmw_etype
10  implicit none
11 
12  private
13  public :: hecmwst_result_data
14  public :: hecmw_result_dtype_node
15  public :: hecmw_result_dtype_elem
18  public :: hecmw_result_copy_c2f
19  public :: hecmw_result_copy_f2c
20  public :: hecmw_result_init
21  public :: hecmw_result_add
25  public :: hecmw_result_finalize
26  public :: hecmw_result_free
29  private :: put_node_component
30  private :: put_elem_component
31  private :: refine_result
32  private :: get_node_component
33  private :: get_elem_component
34 
35  type hecmwst_result_data
36  integer(kind=kint) :: ng_component
37  integer(kind=kint) :: nn_component
38  integer(kind=kint) :: ne_component
39  integer(kind=kint),pointer :: ng_dof(:)
40  integer(kind=kint),pointer :: nn_dof(:)
41  integer(kind=kint),pointer :: ne_dof(:)
42  character(len=HECMW_NAME_LEN),pointer :: global_label(:)
43  character(len=HECMW_NAME_LEN),pointer :: node_label(:)
44  character(len=HECMW_NAME_LEN),pointer :: elem_label(:)
45  real(kind=kreal),pointer :: global_val_item(:)
46  real(kind=kreal),pointer :: node_val_item(:)
47  real(kind=kreal),pointer :: elem_val_item(:)
48  end type hecmwst_result_data
49 
50  ! constants defined in hecmw_result_io.h
51  integer(kind=kint), parameter :: hecmw_result_dtype_node = 1
52  integer(kind=kint), parameter :: hecmw_result_dtype_elem = 2
53  integer(kind=kint), parameter :: hecmw_result_dtype_global = 3
54 
55  interface
56  subroutine hecmw_result_copy_f2c_set_if_c(sname, vname, src, ierr, len_s, len_v) &
57  bind(c,name='hecmw_result_copy_f2c_set_if')
58  use iso_c_binding
59  type(c_ptr), value :: sname, vname
60  type(c_ptr), value :: src
61  integer(c_int) :: ierr
62  integer(c_int), value :: len_s, len_v
63  end subroutine hecmw_result_copy_f2c_set_if_c
64  subroutine hecmw_result_write_st_init_if(ierr) &
65  bind(c,name='hecmw_result_write_st_init_if')
66  use iso_c_binding
67  integer(c_int) :: ierr
68  end subroutine hecmw_result_write_st_init_if
70  bind(c,name='hecmw_result_write_st_finalize_if')
71  use iso_c_binding
72  integer(c_int) :: ierr
74  subroutine hecmw_result_write_st_by_name_if_c(name_ID, ierr, len) &
75  bind(c,name='hecmw_result_write_st_by_name_if')
76  use iso_c_binding
77  type(c_ptr), value :: name_ID
78  integer(c_int) :: ierr
79  integer(c_int), value :: len
81 
82  subroutine hecmw_result_copy_c2f_set_if_c(sname, vname, dst, ierr, len_s, len_v) &
83  bind(c,name='hecmw_result_copy_c2f_set_if')
84  use iso_c_binding
85  type(c_ptr), value :: sname, vname
86  type(c_ptr), value :: dst
87  integer(c_int) :: ierr
88  integer(c_int), value :: len_s, len_v
89  end subroutine hecmw_result_copy_c2f_set_if_c
90  subroutine hecmw_result_read_by_name_if_c(name_ID, i_step, n_node, n_elem, ierr, len) &
91  bind(c,name='hecmw_result_read_by_name_if')
92  use iso_c_binding
93  type(c_ptr), value :: name_id
94  integer(c_int) :: i_step, n_node, n_elem, ierr
95  integer(c_int), value :: len
96  end subroutine hecmw_result_read_by_name_if_c
97  subroutine hecmw_result_read_finalize_if(ierr) &
98  bind(c,name='hecmw_result_read_finalize_if')
99  use iso_c_binding
100  integer(c_int) :: ierr
101  end subroutine hecmw_result_read_finalize_if
102  end interface
103 
104 contains
105 
106  subroutine hecmw_result_copy_f2c_set_if(sname, vname, src, ierr)
107  use iso_c_binding
108  character(len=*), target :: sname,vname
109  type(*), dimension(..), target :: src
110  integer(c_int) :: ierr
111  call hecmw_result_copy_f2c_set_if_c(c_loc(sname), c_loc(vname), c_loc(src), ierr, len(sname), len(vname))
112  end subroutine hecmw_result_copy_f2c_set_if
113 
114  subroutine hecmw_result_write_st_by_name_if(name_ID, ierr)
115  use iso_c_binding
116  character(len=*), target :: name_ID
117  integer(c_int) :: ierr
118  call hecmw_result_write_st_by_name_if_c(c_loc(name_id), ierr, len(name_id))
119  end subroutine hecmw_result_write_st_by_name_if
120 
121  subroutine hecmw_result_copy_c2f_set_if(sname, vname, dst, ierr)
122  use iso_c_binding
123  character(len=*), target :: sname,vname
124  type(*), dimension(..), target :: dst
125  integer(c_int) :: ierr
126  call hecmw_result_copy_c2f_set_if_c(c_loc(sname), c_loc(vname), c_loc(dst), ierr, len(sname), len(vname))
127  end subroutine hecmw_result_copy_c2f_set_if
128 
129  subroutine hecmw_result_read_by_name_if(name_ID, i_step, n_node, n_elem, ierr)
130  use iso_c_binding
131  character(len=*), target :: name_ID
132  integer(c_int) :: i_step, n_node, n_elem, ierr
133  call hecmw_result_read_by_name_if_c(c_loc(name_id), i_step, n_node, n_elem, ierr, len(name_id))
134  end subroutine hecmw_result_read_by_name_if
135 
136 
137 
138  !C=============================================================================
139  !C nullify pointer
140  !C=============================================================================
141 
143  type( hecmwst_result_data ) :: p
144  nullify( p%ng_dof )
145  nullify( p%nn_dof )
146  nullify( p%ne_dof )
147  nullify( p%global_label )
148  nullify( p%node_label )
149  nullify( p%elem_label )
150  nullify( p%global_val_item )
151  nullify( p%node_val_item )
152  nullify( p%elem_val_item )
153  end subroutine hecmw_nullify_result_data
154 
155  !C=============================================================================
156  !C Write result data to file
157  !C=============================================================================
158 
159  subroutine hecmw_result_init(hecMESH, i_step, header, comment)
160  type(hecmwst_local_mesh):: hecmesh
161  integer(kind=kint) :: nnode, nelem, i_step, ierr
162  character(len=HECMW_HEADER_LEN) :: header
163  character(len=HECMW_MSG_LEN) :: comment
164 
165  nnode = hecmesh%n_node
166  nelem = hecmesh%n_elem
167 
168  call hecmw_result_init_if(nnode, nelem, hecmesh%global_node_ID, hecmesh%global_elem_ID, &
169  hecmesh%n_elem_type, hecmesh%elem_type_index, hecmesh%elem_type_item, &
170  i_step, header, comment, ierr)
171 
172  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
173  end subroutine hecmw_result_init
174 
175 
176  subroutine hecmw_result_add(dtype, n_dof, label, data)
177  integer(kind=kint) :: dtype, n_dof, ierr
178  character(len=HECMW_NAME_LEN) :: label
179  real(kind=kreal) :: data(:)
180 
181  call hecmw_result_add_if(dtype, n_dof, label, data, ierr)
182 
183  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
184  end subroutine hecmw_result_add
185 
186 
187  subroutine hecmw_result_write_by_name(name_ID)
188  integer(kind=kint) :: ierr
189  character(len=HECMW_NAME_LEN) :: name_id
190 
191  call hecmw_result_write_by_name_if(name_id, ierr)
192  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
193  end subroutine hecmw_result_write_by_name
194 
195 
197  integer(kind=kint) :: ierr
198 
199  call hecmw_result_finalize_if(ierr)
200  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
201  end subroutine hecmw_result_finalize
202 
203 
204  subroutine hecmw_result_write_st_by_name(name_ID, result_data)
205  integer(kind=kint) :: ierr
206  type(hecmwst_result_data):: result_data
207  character(len=HECMW_NAME_LEN):: name_id
208 
210  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
211  call hecmw_result_copy_f2c(result_data, ierr)
212  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
213  call hecmw_result_write_st_by_name_if(name_id, ierr)
214  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
216  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
217  end subroutine hecmw_result_write_st_by_name
218 
219 
220  subroutine hecmw_result_write_by_addfname(name_ID, addfname)
221  integer(kind=kint) :: ierr
222  character(len=HECMW_NAME_LEN) :: name_id, addfname
223 
224  call hecmw_result_write_by_addfname_if(name_id, addfname, ierr)
225  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
226  end subroutine hecmw_result_write_by_addfname
227 
228 
229  subroutine hecmw_result_copy_f2c( result_data, ierr )
230  type(hecmwst_result_data), intent(in) :: result_data
231  integer(kind=kint), intent(inout) :: ierr
232 
233  call put_global_component( result_data, ierr )
234  if( ierr /= 0 ) return
235  call put_node_component( result_data, ierr )
236  if( ierr /= 0 ) return
237  call put_elem_component( result_data, ierr )
238  if( ierr /= 0 ) return
239  end subroutine hecmw_result_copy_f2c
240 
241 
242  subroutine put_global_component( result_data, ierr )
243  type(hecmwst_result_data), intent(in) :: result_data
244  integer(kind=kint), intent(inout) :: ierr
245  character(len=HECMW_NAME_LEN) :: sname,vname
246 
247  sname = "hecmwST_result_data"
248 
249  vname = "ng_component"
250  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%ng_component, ierr )
251  if( ierr /= 0 ) return
252 
253  if( result_data%ng_component /= 0 ) then
254  vname = "ng_dof"
255  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%ng_dof, ierr )
256  if( ierr /= 0 ) return
257 
258  vname = "global_label"
259  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%global_label, ierr )
260  if( ierr /= 0 ) return
261 
262  vname = "global_val_item"
263  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%global_val_item, ierr )
264  if( ierr /= 0 ) return
265  endif
266  end subroutine put_global_component
267 
268  subroutine put_node_component( result_data, ierr )
269  type(hecmwst_result_data), intent(in) :: result_data
270  integer(kind=kint), intent(inout) :: ierr
271  character(len=HECMW_NAME_LEN) :: sname,vname
272 
273  sname = "hecmwST_result_data"
274 
275  vname = "nn_component"
276  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%nn_component, ierr )
277  if( ierr /= 0 ) return
278 
279  if( result_data%nn_component /= 0 ) then
280  vname = "nn_dof"
281  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%nn_dof, ierr )
282  if( ierr /= 0 ) return
283 
284  vname = "node_label"
285  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%node_label, ierr )
286  if( ierr /= 0 ) return
287 
288  vname = "node_val_item"
289  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%node_val_item, ierr )
290  if( ierr /= 0 ) return
291  endif
292  end subroutine put_node_component
293 
294  subroutine put_elem_component( result_data, ierr )
295  type(hecmwst_result_data), intent(in) :: result_data
296  integer(kind=kint), intent(inout) :: ierr
297  character(len=HECMW_NAME_LEN) :: sname,vname
298 
299  sname = "hecmwST_result_data"
300 
301  vname = "ne_component"
302  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%ne_component, ierr )
303  if( ierr /= 0 ) return
304 
305  if( result_data%ne_component /= 0 ) then
306  vname = "ne_dof"
307  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%ne_dof, ierr )
308  if( ierr /= 0 ) return
309 
310  vname = "elem_label"
311  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%elem_label, ierr )
312  if( ierr /= 0 ) return
313 
314  vname = "elem_val_item"
315  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%elem_val_item, ierr )
316  if( ierr /= 0 ) return
317  endif
318  end subroutine put_elem_component
319 
320  !C=============================================================================
321  !C Read result data from file
322  !C=============================================================================
323 
324  subroutine hecmw_result_checkfile_by_name(name_ID, i_step, ierr)
325  character(len=HECMW_NAME_LEN), intent(in) :: name_id
326  integer(kind=kint), intent(in) :: i_step
327  integer(kind=kint), intent(out) :: ierr
328 
329  call hecmw_result_checkfile_by_name_if(name_id, i_step, ierr)
330  end subroutine hecmw_result_checkfile_by_name
331 
332 
333  subroutine hecmw_result_read_by_name(hecMESH, name_ID, i_step, result)
334  type(hecmwst_local_mesh), intent(in) :: hecmesh
335  character(len=HECMW_NAME_LEN), intent(in) :: name_id
336  integer(kind=kint), intent(in) :: i_step
337  type(hecmwst_result_data), intent(inout) :: result
338  integer(kind=kint) :: n_node, n_elem, ierr
339 
340  call hecmw_result_read_by_name_if(name_id, i_step, n_node, n_elem, ierr)
341  if(ierr /=0) call hecmw_abort(hecmw_comm_get_comm())
342 
343  call hecmw_result_copy_c2f(result, n_node, n_elem, ierr)
344  if(ierr /=0) call hecmw_abort(hecmw_comm_get_comm())
345 
347  if(ierr /=0) call hecmw_abort(hecmw_comm_get_comm())
348 
349  call refine_result(hecmesh, n_node, result, ierr)
350  if(ierr /=0) call hecmw_abort(hecmw_comm_get_comm())
351  end subroutine hecmw_result_read_by_name
352 
353 
354  subroutine refine_result(hecMESH, n_node, result, ierr)
355  type(hecmwst_local_mesh), intent(in) :: hecmesh
356  integer(kind=kint), intent(in) :: n_node
357  type(hecmwst_result_data), intent(inout) :: result
358  integer(kind=kint), intent(out) :: ierr
359  real(kind=kreal), pointer :: tmp_val(:)
360  integer(kind=kint) :: iref, i, j, k, is, ie, js, je, i0
361  integer(kind=kint) :: jj, j0, nn_comp_tot, nn, n_node_ref
362  ierr = 0
363  if(n_node == hecmesh%n_node) return
364  if(n_node > hecmesh%n_node) then
365  write(*,*) 'ERROR: result needs to be coarsened; not implemented yet'
366  ierr = 1
367  return
368  else
369  !write(0,*) 'DEBUG: result needs to be refined'
370  nn_comp_tot = 0
371  do i = 1, result%nn_component
372  nn_comp_tot = nn_comp_tot + result%nn_dof(i)
373  enddo
374  do iref = 1, hecmesh%n_refine
375  is = hecmesh%refine_origin%index(iref-1)
376  ie = hecmesh%refine_origin%index(iref)
377  n_node_ref = ie - is
378  if(n_node >= n_node_ref) cycle
379  !write(0,*) 'DEBUG: start refining result; step=',iref
380  allocate(tmp_val(n_node_ref * nn_comp_tot))
381  tmp_val = 0.d0
382  do i = 1, n_node_ref
383  js = hecmesh%refine_origin%item_index(is+i-1)
384  je = hecmesh%refine_origin%item_index(is+i)
385  nn = je - js
386  i0 = (i-1)*nn_comp_tot
387  do j = js+1, je
388  jj = hecmesh%refine_origin%item_item(j)
389  j0 = (jj-1)*nn_comp_tot
390  do k = 1, nn_comp_tot
391  tmp_val(i0+k) = tmp_val(i0+k) + result%node_val_item(j0+k) / nn
392  enddo
393  enddo
394  enddo
395  deallocate(result%node_val_item)
396  result%node_val_item => tmp_val
397  !write(0,*) 'DEBUG: end refining result; step=',iref
398  enddo
399  !write(0,*) 'DEBUG: refining result done'
400  endif
401  end subroutine refine_result
402 
403 
404  subroutine hecmw_result_copy_c2f(result, n_node, n_elem, ierr)
405  integer(kind=kint) :: n_node, n_elem, ierr
406  type(hecmwst_result_data) :: result
407 
408  call get_global_component(result, n_node, ierr)
409  if(ierr /= 0) return
410  call get_node_component(result, n_node, ierr)
411  if(ierr /= 0) return
412  call get_elem_component(result, n_elem, ierr)
413  if(ierr /= 0) return
414  end subroutine hecmw_result_copy_c2f
415 
416 
417  subroutine get_global_component(result, n_global, ierr)
418  integer(kind=kint) :: n_global, ierr
419  type(hecmwst_result_data) :: result
420  character(len=HECMW_NAME_LEN) :: sname,vname
421 
422  sname = 'hecmwST_result_data'
423 
424  vname = 'ng_component'
425  call hecmw_result_copy_c2f_set_if(sname, vname, result%ng_component, ierr)
426  if(ierr /= 0) return
427 
428  if(result%ng_component > 0) then
429  vname = 'ng_dof'
430  allocate(result%ng_dof(result%ng_component))
431  call hecmw_result_copy_c2f_set_if(sname, vname, result%ng_dof, ierr)
432  if(ierr /= 0) return
433 
434  vname = 'global_label'
435  allocate(result%global_label(result%ng_component))
436  call hecmw_result_copy_c2f_set_if(sname, vname, result%global_label, ierr)
437  if(ierr /= 0) return
438 
439  vname = 'global_val_item'
440  allocate(result%global_val_item(sum(result%ng_dof)*n_global))
441  call hecmw_result_copy_c2f_set_if(sname, vname, result%global_val_item, ierr)
442  if(ierr /= 0) return
443  endif
444  end subroutine get_global_component
445 
446 
447  subroutine get_node_component(result, n_node, ierr)
448  integer(kind=kint) :: n_node, ierr
449  type(hecmwst_result_data) :: result
450  character(len=HECMW_NAME_LEN) :: sname,vname
451 
452  sname = 'hecmwST_result_data'
453 
454  vname = 'nn_component'
455  call hecmw_result_copy_c2f_set_if(sname, vname, result%nn_component, ierr)
456  if(ierr /= 0) return
457 
458  if(result%nn_component > 0) then
459  vname = 'nn_dof'
460  allocate(result%nn_dof(result%nn_component))
461  call hecmw_result_copy_c2f_set_if(sname, vname, result%nn_dof, ierr)
462  if(ierr /= 0) return
463 
464  vname = 'node_label'
465  allocate(result%node_label(result%nn_component))
466  call hecmw_result_copy_c2f_set_if(sname, vname, result%node_label, ierr)
467  if(ierr /= 0) return
468 
469  vname = 'node_val_item'
470  allocate(result%node_val_item(sum(result%nn_dof)*n_node))
471  call hecmw_result_copy_c2f_set_if(sname, vname, result%node_val_item, ierr)
472  if(ierr /= 0) return
473  endif
474  end subroutine get_node_component
475 
476 
477  subroutine get_elem_component(result, n_elem, ierr)
478  integer(kind=kint) :: n_elem, ierr
479  type(hecmwst_result_data) :: result
480  character(len=HECMW_NAME_LEN) :: sname,vname
481 
482  sname = 'hecmwST_result_data'
483 
484  vname = 'ne_component'
485  call hecmw_result_copy_c2f_set_if(sname, vname, result%ne_component, ierr)
486  if(ierr /= 0) return
487 
488  if(result%ne_component > 0) then
489  vname = 'ne_dof'
490  allocate(result%ne_dof(result%ne_component))
491  call hecmw_result_copy_c2f_set_if(sname, vname, result%ne_dof, ierr)
492  if(ierr /= 0) return
493 
494  vname = 'elem_label'
495  allocate(result%elem_label(result%ne_component))
496  call hecmw_result_copy_c2f_set_if(sname, vname, result%elem_label, ierr)
497  if(ierr /= 0) return
498 
499  vname = 'elem_val_item'
500  allocate(result%elem_val_item(sum(result%ne_dof)*n_elem))
501  call hecmw_result_copy_c2f_set_if(sname, vname, result%elem_val_item, ierr)
502  if(ierr /= 0) return
503  endif
504  end subroutine get_elem_component
505 
506 
507  subroutine hecmw_result_free( result_data )
508  type(hecmwst_result_data), intent(inout) :: result_data
509  integer(kind=kint) :: ierr
510 
511  ierr = 0
512 
513  if( associated( result_data%ng_dof ) ) then
514  deallocate( result_data%ng_dof, stat=ierr )
515  if( ierr /= 0 ) then
516  print *, "Error: Deallocation error"
518  endif
519  endif
520 
521  if( associated( result_data%global_label ) ) then
522  deallocate( result_data%global_label, stat=ierr )
523  if( ierr /= 0 ) then
524  print *, "Error: Deallocation error"
526  endif
527  endif
528 
529  if( associated( result_data%global_val_item ) ) then
530  deallocate( result_data%global_val_item, stat=ierr )
531  if( ierr /= 0 ) then
532  print *, "Error: Deallocation error"
534  endif
535  endif
536 
537  if( associated( result_data%nn_dof ) ) then
538  deallocate( result_data%nn_dof, stat=ierr )
539  if( ierr /= 0 ) then
540  print *, "Error: Deallocation error"
542  endif
543  endif
544 
545  if( associated( result_data%node_label ) ) then
546  deallocate( result_data%node_label, stat=ierr )
547  if( ierr /= 0 ) then
548  print *, "Error: Deallocation error"
550  endif
551  endif
552 
553  if( associated( result_data%node_val_item ) ) then
554  deallocate( result_data%node_val_item, stat=ierr )
555  if( ierr /= 0 ) then
556  print *, "Error: Deallocation error"
558  endif
559  endif
560 
561  if( associated( result_data%ne_dof ) ) then
562  deallocate( result_data%ne_dof, stat=ierr )
563  if ( ierr /= 0 ) then
564  print *, "Error: Deallocation error"
566  endif
567  endif
568 
569  if( associated( result_data%elem_label ) ) then
570  deallocate( result_data%elem_label, stat=ierr )
571  if( ierr /= 0 ) then
572  print *, "Error: Deallocation error"
574  endif
575  endif
576 
577  if( associated( result_data%elem_val_item ) ) then
578  deallocate( result_data%elem_val_item, stat=ierr )
579  if( ierr /= 0 ) then
580  print *, "Error: Deallocation error"
582  endif
583  endif
584  end subroutine hecmw_result_free
585 
586 end module hecmw_result
void hecmw_result_write_by_addfname_if(char *name_ID, char *addfname, int *err, int len1, int len2)
Definition: hecmw_result.c:365
void hecmw_result_init_if(int *n_node, int *n_elem, int *nodeID, int *elemID, int *n_elem_type, int *elem_type_index, int *elem_type_item, int *i_step, char *header, char *comment, int *err, int len)
Definition: hecmw_result.c:244
void hecmw_result_write_by_name_if(char *name_ID, int *err, int len)
Definition: hecmw_result.c:337
void hecmw_result_checkfile_by_name_if(char *name_ID, int *i_step, int *err, int len)
Definition: hecmw_result.c:401
void hecmw_result_finalize_if(int *err)
Definition: hecmw_result.c:292
void hecmw_result_add_if(int *dtype, int *n_dof, char *label, double *ptr, int *err, int len)
Definition: hecmw_result.c:306
void hecmw_result_copy_c2f_set_if(char *struct_name, char *var_name, void *dst, int *err, int len_struct, int len_var)
void hecmw_result_read_by_name_if(char *name_ID, int *i_step, int *n_node, int *n_elem, int *err, int len)
void hecmw_result_write_st_by_name_if(char *name_ID, int *err, int len)
void hecmw_result_copy_f2c_set_if(char *struct_name, char *var_name, void *src, int *err, int slen, int vlen)
I/O and Utility.
I/O and Utility.
subroutine, public hecmw_result_checkfile_by_name(name_ID, i_step, ierr)
subroutine, public hecmw_result_write_by_addfname(name_ID, addfname)
subroutine, public hecmw_result_read_by_name(hecMESH, name_ID, i_step, result)
subroutine, public hecmw_result_copy_f2c(result_data, ierr)
subroutine, public hecmw_nullify_result_data(P)
subroutine, public hecmw_result_add(dtype, n_dof, label, data)
subroutine, public hecmw_result_finalize()
subroutine, public hecmw_result_copy_c2f(result, n_node, n_elem, ierr)
integer(kind=kint), parameter, public hecmw_result_dtype_global
subroutine, public hecmw_result_write_st_by_name(name_ID, result_data)
subroutine, public hecmw_result_init(hecMESH, i_step, header, comment)
subroutine, public hecmw_result_write_by_name(name_ID)
integer(kind=kint), parameter, public hecmw_result_dtype_node
subroutine, public hecmw_result_free(result_data)
integer(kind=kint), parameter, public hecmw_result_dtype_elem
I/O and Utility.
Definition: hecmw_util_f.F90:7
integer(kind=kint) function hecmw_comm_get_comm()
integer(kind=4), parameter kreal
subroutine hecmw_abort(comm)