FrontISTR  5.7.0
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  character(len=HECMW_NAME_LEN) :: sname,vname
56 
57 contains
58 
59  !C=============================================================================
60  !C nullify pointer
61  !C=============================================================================
62 
63  subroutine hecmw_nullify_result_data( P )
64  type( hecmwst_result_data ) :: p
65  nullify( p%ng_dof )
66  nullify( p%nn_dof )
67  nullify( p%ne_dof )
68  nullify( p%global_label )
69  nullify( p%node_label )
70  nullify( p%elem_label )
71  nullify( p%global_val_item )
72  nullify( p%node_val_item )
73  nullify( p%elem_val_item )
74  end subroutine hecmw_nullify_result_data
75 
76  !C=============================================================================
77  !C Write result data to file
78  !C=============================================================================
79 
80  subroutine hecmw_result_init(hecMESH, i_step, header, comment)
81  type(hecmwst_local_mesh):: hecmesh
82  integer(kind=kint) :: nnode, nelem, i_step, ierr
83  character(len=HECMW_HEADER_LEN) :: header
84  character(len=HECMW_MSG_LEN) :: comment
85 
86  nnode = hecmesh%n_node
87  nelem = hecmesh%n_elem
88 
89  call hecmw_result_init_if(nnode, nelem, hecmesh%global_node_ID, hecmesh%global_elem_ID, &
90  hecmesh%n_elem_type, hecmesh%elem_type_index, hecmesh%elem_type_item, &
91  i_step, header, comment, ierr)
92 
93  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
94  end subroutine hecmw_result_init
95 
96 
97  subroutine hecmw_result_add(dtype, n_dof, label, data)
98  integer(kind=kint) :: dtype, n_dof, ierr
99  character(len=HECMW_NAME_LEN) :: label
100  real(kind=kreal) :: data(:)
101 
102  call hecmw_result_add_if(dtype, n_dof, label, data, ierr)
103 
104  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
105  end subroutine hecmw_result_add
106 
107 
108  subroutine hecmw_result_write_by_name(name_ID)
109  integer(kind=kint) :: ierr
110  character(len=HECMW_NAME_LEN) :: name_id
111 
112  call hecmw_result_write_by_name_if(name_id, ierr)
113  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
114  end subroutine hecmw_result_write_by_name
115 
116 
117  subroutine hecmw_result_finalize()
118  integer(kind=kint) :: ierr
119 
120  call hecmw_result_finalize_if(ierr)
121  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
122  end subroutine hecmw_result_finalize
123 
124 
125  subroutine hecmw_result_write_st_by_name(name_ID, result_data)
126  integer(kind=kint) :: ierr
127  type(hecmwst_result_data):: result_data
128  character(len=HECMW_NAME_LEN):: name_id
129 
131  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
132  call hecmw_result_copy_f2c(result_data, ierr)
133  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
134  call hecmw_result_write_st_by_name_if(name_id, ierr)
135  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
137  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
138  end subroutine hecmw_result_write_st_by_name
139 
140 
141  subroutine hecmw_result_write_by_addfname(name_ID, addfname)
142  integer(kind=kint) :: ierr
143  character(len=HECMW_NAME_LEN) :: name_id, addfname
144 
145  call hecmw_result_write_by_addfname_if(name_id, addfname, ierr)
146  if(ierr /= 0) call hecmw_abort(hecmw_comm_get_comm())
147  end subroutine hecmw_result_write_by_addfname
148 
149 
150  subroutine hecmw_result_copy_f2c( result_data, ierr )
151  type(hecmwst_result_data), intent(in) :: result_data
152  integer(kind=kint), intent(inout) :: ierr
153 
154  call put_global_component( result_data, ierr )
155  if( ierr /= 0 ) return
156  call put_node_component( result_data, ierr )
157  if( ierr /= 0 ) return
158  call put_elem_component( result_data, ierr )
159  if( ierr /= 0 ) return
160  end subroutine hecmw_result_copy_f2c
161 
162 
163  subroutine put_global_component( result_data, ierr )
164  type(hecmwst_result_data), intent(in) :: result_data
165  integer(kind=kint), intent(inout) :: ierr
166 
167  sname = "hecmwST_result_data"
168 
169  vname = "ng_component"
170  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%ng_component, ierr )
171  if( ierr /= 0 ) return
172 
173  if( result_data%ng_component /= 0 ) then
174  vname = "ng_dof"
175  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%ng_dof, ierr )
176  if( ierr /= 0 ) return
177 
178  vname = "global_label"
179  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%global_label, ierr )
180  if( ierr /= 0 ) return
181 
182  vname = "global_val_item"
183  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%global_val_item, ierr )
184  if( ierr /= 0 ) return
185  endif
186  end subroutine put_global_component
187 
188  subroutine put_node_component( result_data, ierr )
189  type(hecmwst_result_data), intent(in) :: result_data
190  integer(kind=kint), intent(inout) :: ierr
191 
192  sname = "hecmwST_result_data"
193 
194  vname = "nn_component"
195  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%nn_component, ierr )
196  if( ierr /= 0 ) return
197 
198  if( result_data%nn_component /= 0 ) then
199  vname = "nn_dof"
200  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%nn_dof, ierr )
201  if( ierr /= 0 ) return
202 
203  vname = "node_label"
204  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%node_label, ierr )
205  if( ierr /= 0 ) return
206 
207  vname = "node_val_item"
208  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%node_val_item, ierr )
209  if( ierr /= 0 ) return
210  endif
211  end subroutine put_node_component
212 
213  subroutine put_elem_component( result_data, ierr )
214  type(hecmwst_result_data), intent(in) :: result_data
215  integer(kind=kint), intent(inout) :: ierr
216 
217  sname = "hecmwST_result_data"
218 
219  vname = "ne_component"
220  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%ne_component, ierr )
221  if( ierr /= 0 ) return
222 
223  if( result_data%ne_component /= 0 ) then
224  vname = "ne_dof"
225  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%ne_dof, ierr )
226  if( ierr /= 0 ) return
227 
228  vname = "elem_label"
229  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%elem_label, ierr )
230  if( ierr /= 0 ) return
231 
232  vname = "elem_val_item"
233  call hecmw_result_copy_f2c_set_if( sname, vname, result_data%elem_val_item, ierr )
234  if( ierr /= 0 ) return
235  endif
236  end subroutine put_elem_component
237 
238  !C=============================================================================
239  !C Read result data from file
240  !C=============================================================================
241 
242  subroutine hecmw_result_checkfile_by_name(name_ID, i_step, ierr)
243  character(len=HECMW_NAME_LEN), intent(in) :: name_id
244  integer(kind=kint), intent(in) :: i_step
245  integer(kind=kint), intent(out) :: ierr
246 
247  call hecmw_result_checkfile_by_name_if(name_id, i_step, ierr)
248  end subroutine hecmw_result_checkfile_by_name
249 
250 
251  subroutine hecmw_result_read_by_name(hecMESH, name_ID, i_step, result)
252  type(hecmwst_local_mesh), intent(in) :: hecmesh
253  character(len=HECMW_NAME_LEN), intent(in) :: name_id
254  integer(kind=kint), intent(in) :: i_step
255  type(hecmwst_result_data), intent(inout) :: result
256  integer(kind=kint) :: n_node, n_elem, ierr
257 
258  call hecmw_result_read_by_name_if(name_id, i_step, n_node, n_elem, ierr)
259  if(ierr /=0) call hecmw_abort(hecmw_comm_get_comm())
260 
261  call hecmw_result_copy_c2f(result, n_node, n_elem, ierr)
262  if(ierr /=0) call hecmw_abort(hecmw_comm_get_comm())
263 
265  if(ierr /=0) call hecmw_abort(hecmw_comm_get_comm())
266 
267  call refine_result(hecmesh, n_node, result, ierr)
268  if(ierr /=0) call hecmw_abort(hecmw_comm_get_comm())
269  end subroutine hecmw_result_read_by_name
270 
271 
272  subroutine refine_result(hecMESH, n_node, result, ierr)
273  type(hecmwst_local_mesh), intent(in) :: hecmesh
274  integer(kind=kint), intent(in) :: n_node
275  type(hecmwst_result_data), intent(inout) :: result
276  integer(kind=kint), intent(out) :: ierr
277  real(kind=kreal), pointer :: tmp_val(:)
278  integer(kind=kint) :: iref, i, j, k, is, ie, js, je, i0
279  integer(kind=kint) :: jj, j0, nn_comp_tot, nn, n_node_ref
280  ierr = 0
281  if(n_node == hecmesh%n_node) return
282  if(n_node > hecmesh%n_node) then
283  write(*,*) 'ERROR: result needs to be coarsened; not implemented yet'
284  ierr = 1
285  return
286  else
287  !write(0,*) 'DEBUG: result needs to be refined'
288  nn_comp_tot = 0
289  do i = 1, result%nn_component
290  nn_comp_tot = nn_comp_tot + result%nn_dof(i)
291  enddo
292  do iref = 1, hecmesh%n_refine
293  is = hecmesh%refine_origin%index(iref-1)
294  ie = hecmesh%refine_origin%index(iref)
295  n_node_ref = ie - is
296  if(n_node >= n_node_ref) cycle
297  !write(0,*) 'DEBUG: start refining result; step=',iref
298  allocate(tmp_val(n_node_ref * nn_comp_tot))
299  tmp_val = 0.d0
300  do i = 1, n_node_ref
301  js = hecmesh%refine_origin%item_index(is+i-1)
302  je = hecmesh%refine_origin%item_index(is+i)
303  nn = je - js
304  i0 = (i-1)*nn_comp_tot
305  do j = js+1, je
306  jj = hecmesh%refine_origin%item_item(j)
307  j0 = (jj-1)*nn_comp_tot
308  do k = 1, nn_comp_tot
309  tmp_val(i0+k) = tmp_val(i0+k) + result%node_val_item(j0+k) / nn
310  enddo
311  enddo
312  enddo
313  deallocate(result%node_val_item)
314  result%node_val_item => tmp_val
315  !write(0,*) 'DEBUG: end refining result; step=',iref
316  enddo
317  !write(0,*) 'DEBUG: refining result done'
318  endif
319  end subroutine refine_result
320 
321 
322  subroutine hecmw_result_copy_c2f(result, n_node, n_elem, ierr)
323  integer(kind=kint) :: n_node, n_elem, ierr
324  type(hecmwst_result_data) :: result
325 
326  call get_global_component(result, n_node, ierr)
327  if(ierr /= 0) return
328  call get_node_component(result, n_node, ierr)
329  if(ierr /= 0) return
330  call get_elem_component(result, n_elem, ierr)
331  if(ierr /= 0) return
332  end subroutine hecmw_result_copy_c2f
333 
334 
335  subroutine get_global_component(result, n_global, ierr)
336  integer(kind=kint) :: n_global, ierr
337  type(hecmwst_result_data) :: result
338 
339  sname = 'hecmwST_result_data'
340 
341  vname = 'ng_component'
342  call hecmw_result_copy_c2f_set_if(sname, vname, result%ng_component, ierr)
343  if(ierr /= 0) return
344 
345  if(result%ng_component > 0) then
346  vname = 'ng_dof'
347  allocate(result%ng_dof(result%ng_component))
348  call hecmw_result_copy_c2f_set_if(sname, vname, result%ng_dof, ierr)
349  if(ierr /= 0) return
350 
351  vname = 'global_label'
352  allocate(result%global_label(result%ng_component))
353  call hecmw_result_copy_c2f_set_if(sname, vname, result%global_label, ierr)
354  if(ierr /= 0) return
355 
356  vname = 'global_val_item'
357  allocate(result%global_val_item(sum(result%ng_dof)*n_global))
358  call hecmw_result_copy_c2f_set_if(sname, vname, result%global_val_item, ierr)
359  if(ierr /= 0) return
360  endif
361  end subroutine get_global_component
362 
363 
364  subroutine get_node_component(result, n_node, ierr)
365  integer(kind=kint) :: n_node, ierr
366  type(hecmwst_result_data) :: result
367 
368  sname = 'hecmwST_result_data'
369 
370  vname = 'nn_component'
371  call hecmw_result_copy_c2f_set_if(sname, vname, result%nn_component, ierr)
372  if(ierr /= 0) return
373 
374  if(result%nn_component > 0) then
375  vname = 'nn_dof'
376  allocate(result%nn_dof(result%nn_component))
377  call hecmw_result_copy_c2f_set_if(sname, vname, result%nn_dof, ierr)
378  if(ierr /= 0) return
379 
380  vname = 'node_label'
381  allocate(result%node_label(result%nn_component))
382  call hecmw_result_copy_c2f_set_if(sname, vname, result%node_label, ierr)
383  if(ierr /= 0) return
384 
385  vname = 'node_val_item'
386  allocate(result%node_val_item(sum(result%nn_dof)*n_node))
387  call hecmw_result_copy_c2f_set_if(sname, vname, result%node_val_item, ierr)
388  if(ierr /= 0) return
389  endif
390  end subroutine get_node_component
391 
392 
393  subroutine get_elem_component(result, n_elem, ierr)
394  integer(kind=kint) :: n_elem, ierr
395  type(hecmwst_result_data) :: result
396 
397  sname = 'hecmwST_result_data'
398 
399  vname = 'ne_component'
400  call hecmw_result_copy_c2f_set_if(sname, vname, result%ne_component, ierr)
401  if(ierr /= 0) return
402 
403  if(result%ne_component > 0) then
404  vname = 'ne_dof'
405  allocate(result%ne_dof(result%ne_component))
406  call hecmw_result_copy_c2f_set_if(sname, vname, result%ne_dof, ierr)
407  if(ierr /= 0) return
408 
409  vname = 'elem_label'
410  allocate(result%elem_label(result%ne_component))
411  call hecmw_result_copy_c2f_set_if(sname, vname, result%elem_label, ierr)
412  if(ierr /= 0) return
413 
414  vname = 'elem_val_item'
415  allocate(result%elem_val_item(sum(result%ne_dof)*n_elem))
416  call hecmw_result_copy_c2f_set_if(sname, vname, result%elem_val_item, ierr)
417  if(ierr /= 0) return
418  endif
419  end subroutine get_elem_component
420 
421 
422  subroutine hecmw_result_free( result_data )
423  type(hecmwst_result_data), intent(inout) :: result_data
424  integer(kind=kint) :: ierr
425 
426  ierr = 0
427 
428  if( associated( result_data%ng_dof ) ) then
429  deallocate( result_data%ng_dof, stat=ierr )
430  if( ierr /= 0 ) then
431  print *, "Error: Deallocation error"
433  endif
434  endif
435 
436  if( associated( result_data%global_label ) ) then
437  deallocate( result_data%global_label, stat=ierr )
438  if( ierr /= 0 ) then
439  print *, "Error: Deallocation error"
441  endif
442  endif
443 
444  if( associated( result_data%global_val_item ) ) then
445  deallocate( result_data%global_val_item, stat=ierr )
446  if( ierr /= 0 ) then
447  print *, "Error: Deallocation error"
449  endif
450  endif
451 
452  if( associated( result_data%nn_dof ) ) then
453  deallocate( result_data%nn_dof, stat=ierr )
454  if( ierr /= 0 ) then
455  print *, "Error: Deallocation error"
457  endif
458  endif
459 
460  if( associated( result_data%node_label ) ) then
461  deallocate( result_data%node_label, stat=ierr )
462  if( ierr /= 0 ) then
463  print *, "Error: Deallocation error"
465  endif
466  endif
467 
468  if( associated( result_data%node_val_item ) ) then
469  deallocate( result_data%node_val_item, stat=ierr )
470  if( ierr /= 0 ) then
471  print *, "Error: Deallocation error"
473  endif
474  endif
475 
476  if( associated( result_data%ne_dof ) ) then
477  deallocate( result_data%ne_dof, stat=ierr )
478  if ( ierr /= 0 ) then
479  print *, "Error: Deallocation error"
481  endif
482  endif
483 
484  if( associated( result_data%elem_label ) ) then
485  deallocate( result_data%elem_label, stat=ierr )
486  if( ierr /= 0 ) then
487  print *, "Error: Deallocation error"
489  endif
490  endif
491 
492  if( associated( result_data%elem_val_item ) ) then
493  deallocate( result_data%elem_val_item, stat=ierr )
494  if( ierr /= 0 ) then
495  print *, "Error: Deallocation error"
497  endif
498  endif
499  end subroutine hecmw_result_free
500 
501 end module hecmw_result
hecmw_result::hecmw_result_checkfile_by_name
subroutine, public hecmw_result_checkfile_by_name(name_ID, i_step, ierr)
Definition: hecmw_result_f.f90:243
hecmw_result::hecmw_result_finalize
subroutine, public hecmw_result_finalize()
Definition: hecmw_result_f.f90:118
hecmw_result::hecmw_result_read_by_name
subroutine, public hecmw_result_read_by_name(hecMESH, name_ID, i_step, result)
Definition: hecmw_result_f.f90:252
hecmw_result_write_by_addfname_if
void hecmw_result_write_by_addfname_if(char *name_ID, char *addfname, int *err, int len1, int len2)
Definition: hecmw_result.c:365
hecmw_result::hecmw_result_dtype_global
integer(kind=kint), parameter, public hecmw_result_dtype_global
Definition: hecmw_result_f.f90:53
hecmw_util::hecmw_abort
subroutine hecmw_abort(comm)
Definition: hecmw_util_f.F90:534
hecmw_result_write_st_finalize_if
void hecmw_result_write_st_finalize_if(int *err)
Definition: hecmw_result_copy_f2c.c:339
hecmw_result_finalize_if
void hecmw_result_finalize_if(int *err)
Definition: hecmw_result.c:292
hecmw_result_add_if
void hecmw_result_add_if(int *dtype, int *n_dof, char *label, double *ptr, int *err, int len)
Definition: hecmw_result.c:306
hecmw_result_write_st_by_name_if
void hecmw_result_write_st_by_name_if(char *name_ID, int *err, int len)
Definition: hecmw_result_copy_f2c.c:359
hecmw_result_write_by_name_if
void hecmw_result_write_by_name_if(char *name_ID, int *err, int len)
Definition: hecmw_result.c:337
hecmw_result::hecmw_result_add
subroutine, public hecmw_result_add(dtype, n_dof, label, data)
Definition: hecmw_result_f.f90:98
hecmw_result::hecmw_result_write_st_by_name
subroutine, public hecmw_result_write_st_by_name(name_ID, result_data)
Definition: hecmw_result_f.f90:126
hecmw_result::hecmw_result_init
subroutine, public hecmw_result_init(hecMESH, i_step, header, comment)
Definition: hecmw_result_f.f90:81
hecmw_util
I/O and Utility.
Definition: hecmw_util_f.F90:7
hecmw_util::hecmwst_local_mesh
Definition: hecmw_util_f.F90:234
hecmw_result::hecmw_result_copy_f2c
subroutine, public hecmw_result_copy_f2c(result_data, ierr)
Definition: hecmw_result_f.f90:151
hecmw_result_read_finalize_if
void hecmw_result_read_finalize_if(int *err)
Definition: hecmw_result_copy_c2f.c:343
hecmw_result_copy_c2f_set_if
void hecmw_result_copy_c2f_set_if(char *struct_name, char *var_name, void *dst, int *err, int len_struct, int len_var)
Definition: hecmw_result_copy_c2f.c:227
hecmw_result_checkfile_by_name_if
void hecmw_result_checkfile_by_name_if(char *name_ID, int *i_step, int *err, int len)
Definition: hecmw_result.c:401
hecmw_result::hecmw_result_write_by_addfname
subroutine, public hecmw_result_write_by_addfname(name_ID, addfname)
Definition: hecmw_result_f.f90:142
hecmw_result_write_st_init_if
void hecmw_result_write_st_init_if(int *err)
Definition: hecmw_result_copy_f2c.c:312
hecmw_util::kreal
integer(kind=4), parameter kreal
Definition: hecmw_util_f.F90:16
hecmw_result::hecmw_nullify_result_data
subroutine, public hecmw_nullify_result_data(P)
Definition: hecmw_result_f.f90:64
hecmw_result::hecmw_result_write_by_name
subroutine, public hecmw_result_write_by_name(name_ID)
Definition: hecmw_result_f.f90:109
hecmw_result::hecmw_result_dtype_node
integer(kind=kint), parameter, public hecmw_result_dtype_node
Definition: hecmw_result_f.f90:51
hecmw_etype
I/O and Utility.
Definition: hecmw_etype_f.f90:7
hecmw_result_copy_f2c_set_if
void hecmw_result_copy_f2c_set_if(char *struct_name, char *var_name, void *src, int *err, int slen, int vlen)
Definition: hecmw_result_copy_f2c.c:246
hecmw_result_init_if
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
hecmw_result::hecmw_result_dtype_elem
integer(kind=kint), parameter, public hecmw_result_dtype_elem
Definition: hecmw_result_f.f90:52
hecmw_result
I/O and Utility.
Definition: hecmw_result_f.f90:7
hecmw_result_read_by_name_if
void hecmw_result_read_by_name_if(char *name_ID, int *i_step, int *n_node, int *n_elem, int *err, int len)
Definition: hecmw_result_copy_c2f.c:300
hecmw_result::hecmw_result_copy_c2f
subroutine, public hecmw_result_copy_c2f(result, n_node, n_elem, ierr)
Definition: hecmw_result_f.f90:323
hecmw_util::hecmw_comm_get_comm
integer(kind=kint) function hecmw_comm_get_comm()
Definition: hecmw_util_f.F90:571
hecmw_result::hecmw_result_free
subroutine, public hecmw_result_free(result_data)
Definition: hecmw_result_f.f90:423