10 include
'fstr_ctrl_util_f.inc'
14 character(len=HECMW_NAME_LEN),
pointer :: s(:)
18 integer(kind=kint),
private :: grp_type
19 integer(kind=kint),
pointer,
private :: n_grp
20 integer(kind=kint),
pointer,
private :: grp_index(:)
21 integer(kind=kint),
pointer,
private :: grp_item(:)
26 private :: set_group_pointers
27 private :: append_single_group
36 integer :: i, n, a, i0,i9, m, x, b
49 if( a < i0 .or. a > i9 )
return
65 if( a >= iachar(
'a') .and. a <= iachar(
'z'))
then
66 s(i:i) = achar(a - 32)
73 character(*) :: s1, s2
75 integer :: i, n, a1, a2
79 if( n /= len_trim(s2))
return
96 character(len=256) :: msg
101 call hecmw_abort( hecmw_comm_get_comm())
112 call hecmw_abort( hecmw_comm_get_comm())
119 subroutine set_group_pointers( hecMESH, grp_type_name )
120 type (hecmwST_local_mesh),
target :: hecMESH
121 character(len=*) :: grp_type_name
123 if( grp_type_name ==
'node_grp' )
then
125 n_grp => hecmesh%node_group%n_grp
126 grp_name%s => hecmesh%node_group%grp_name
127 grp_index => hecmesh%node_group%grp_index
128 grp_item => hecmesh%node_group%grp_item
129 else if( grp_type_name ==
'elem_grp' )
then
131 n_grp => hecmesh%elem_group%n_grp
132 grp_name%s => hecmesh%elem_group%grp_name
133 grp_index => hecmesh%elem_group%grp_index
134 grp_item => hecmesh%elem_group%grp_item
135 else if( grp_type_name ==
'surf_grp' )
then
137 n_grp => hecmesh%surf_group%n_grp
138 grp_name%s => hecmesh%surf_group%grp_name
139 grp_index => hecmesh%surf_group%grp_index
140 grp_item => hecmesh%surf_group%grp_item
142 stop
'assert in set_group_pointers'
144 end subroutine set_group_pointers
147 type (hecmwST_local_mesh),
target :: hecMESH
148 character(len=*) :: grp_type_name
150 if( grp_type_name ==
'node_grp' )
then
152 hecmesh%node_group%grp_name => grp_name%s
153 hecmesh%node_group%grp_index => grp_index
154 hecmesh%node_group%grp_item => grp_item
155 else if( grp_type_name ==
'elem_grp' )
then
157 hecmesh%elem_group%grp_name => grp_name%s
158 hecmesh%elem_group%grp_index => grp_index
159 hecmesh%elem_group%grp_item => grp_item
160 else if( grp_type_name ==
'surf_grp' )
then
162 hecmesh%surf_group%grp_name => grp_name%s
163 hecmesh%surf_group%grp_index => grp_index
164 hecmesh%surf_group%grp_item => grp_item
166 stop
'assert in set_group_pointers'
172 type (hecmwst_local_mesh),
target :: hecmesh
173 integer(kind=kint) :: list(:)
174 integer(kind=kint) :: n, i, j, cache
183 do i=cache, hecmesh%n_node
184 if( hecmesh%global_node_ID(i) == list(j))
then
194 if( hecmesh%global_node_ID(i) == list(j))
then
211 type (hecmwst_local_mesh),
target :: hecmesh
212 integer(kind=kint),
pointer :: list(:)
213 integer(kind=kint) :: n, i, j
220 do i=1, hecmesh%n_elem
221 if( hecmesh%global_elem_ID(i) == list(j))
then
234 function append_single_group( hecMESH, grp_type_name, no_count, no_list )
236 type (hecmwst_local_mesh),
target :: hecmesh
237 character(len=*) :: grp_type_name
238 integer(kind=kint) :: no_count
239 integer(kind=kint),
pointer :: no_list(:)
240 integer(kind=kint):: append_single_group
241 integer(kind=kint) :: old_grp_number, new_grp_number
242 integer(kind=kint) :: old_item_number, new_item_number
243 integer(kind=kint) :: i,j,k, exist_n
244 integer(kind=kint),
save :: grp_count = 1
245 character(50) :: grp_name_s
248 call set_group_pointers( hecmesh, grp_type_name )
249 if( grp_type_name ==
'node_grp')
then
251 else if( grp_type_name ==
'elem_grp')
then
255 old_grp_number = n_grp
256 new_grp_number = old_grp_number + no_count
258 old_item_number = grp_index(n_grp)
259 new_item_number = old_item_number + exist_n
265 n_grp = new_grp_number
267 j = old_grp_number + 1
268 k = old_item_number + 1
270 write( grp_name_s,
'(a,i0,a,i0)')
'FSTR_', grp_count,
'_', i
271 grp_name%s(j) = grp_name_s
272 if( no_list(i) >= 0)
then
273 grp_item(k) = no_list(i)
274 grp_index(j) = grp_index(j-1)+1
277 grp_index(j) = grp_index(j-1)
281 grp_count = grp_count + 1
283 append_single_group = exist_n
284 end function append_single_group
286 subroutine append_new_group(hecMESH, grp_type_name, name, count, list, grp_id)
288 type(hecmwst_local_mesh),
pointer :: hecMESH
289 character(len=*),
intent(in) :: grp_type_name
290 character(len=HECMW_NAME_LEN),
intent(in) :: name
291 integer(kind=kint),
intent(in) :: count
292 integer(kind=kint),
intent(in) :: list(:)
293 integer(kind=kint),
intent(out) :: grp_id
294 integer(kind=kint) :: id, old_grp_number, new_grp_number, old_item_number, new_item_number, k
296 call set_group_pointers( hecmesh, grp_type_name )
299 write(*,*)
'### Error: Group already exists: ', name
304 old_grp_number = n_grp
305 new_grp_number = old_grp_number + 1
307 old_item_number = grp_index(n_grp)
308 new_item_number = old_item_number + count
314 n_grp = new_grp_number
315 grp_id = new_grp_number
316 grp_name%s(grp_id) = name
318 grp_item(old_item_number + k) = list(k)
320 grp_index(grp_id) = grp_index(grp_id-1) + count
326 type(hecmwst_local_mesh),
pointer :: hecMESH
327 integer(kind=kint),
intent(in) :: sgrp_id
328 integer(kind=kint),
intent(out) :: ngrp_id
329 integer(kind=kint) :: is, ie, nnode, i, ic, isurf, ic_type, stype, nn, j0, j, new_nnode
330 integer(kind=kint) :: snode(20)
331 integer(kind=kint),
allocatable :: node(:)
332 character(len=HECMW_NAME_LEN) :: grp_name
333 is= hecmesh%surf_group%grp_index(sgrp_id-1) + 1
334 ie= hecmesh%surf_group%grp_index(sgrp_id )
338 ic = hecmesh%surf_group%grp_item(2*i-1)
339 isurf = hecmesh%surf_group%grp_item(2*i)
340 ic_type = hecmesh%elem_type(ic)
341 call getsubface( ic_type, isurf, stype, snode )
342 nnode = nnode + getnumberofnodes( stype )
345 allocate( node(nnode) )
348 ic = hecmesh%surf_group%grp_item(2*i-1)
349 isurf = hecmesh%surf_group%grp_item(2*i)
350 ic_type = hecmesh%elem_type(ic)
351 call getsubface( ic_type, isurf, stype, snode )
352 nn = getnumberofnodes( stype )
353 j0 = hecmesh%elem_node_index(ic-1)
355 node(nnode+j) = hecmesh%elem_node_item(j0+snode(j))
363 write( grp_name,
'(a,a)')
'FSTR_S2N_',trim(hecmesh%surf_group%grp_name(sgrp_id))
364 call append_new_group(hecmesh,
'node_grp', grp_name, new_nnode, node, ngrp_id)
370 type(hecmwst_local_mesh),
pointer :: hecMESH
371 integer(kind=kint),
intent(in) :: ngrp_id1, ngrp_id2
372 integer(kind=kint) :: nnode1, nnode2, nnode, is, i, nisect, ngrp_id
373 integer(kind=kint),
allocatable :: node(:), isect(:)
374 character(len=HECMW_NAME_LEN) :: grp_name
375 nnode1 = hecmesh%node_group%grp_index(ngrp_id1) - hecmesh%node_group%grp_index(ngrp_id1-1)
376 nnode2 = hecmesh%node_group%grp_index(ngrp_id2) - hecmesh%node_group%grp_index(ngrp_id2-1)
377 nnode = nnode1 + nnode2
378 allocate( node(nnode) )
379 is= hecmesh%node_group%grp_index(ngrp_id1-1)
381 node(i) = hecmesh%node_group%grp_item(is+i)
383 is= hecmesh%node_group%grp_index(ngrp_id2-1)
385 node(nnode1+i) = hecmesh%node_group%grp_item(is+i)
388 allocate( isect(nnode) )
391 if( node(i) == node(i+1) )
then
393 isect(nisect) = node(i)
396 write( grp_name,
'(a,a,a,a)') &
397 'FSTR_ISCT_',trim(hecmesh%node_group%grp_name(ngrp_id1)),
'_AND_',trim(hecmesh%node_group%grp_name(ngrp_id2))
398 call append_new_group(hecmesh,
'node_grp', grp_name, nisect, isect, ngrp_id)
412 type (hecmwst_local_mesh),
target :: hecmesh
413 character(len=*) :: grp_type_name
414 character(len=*) :: name
415 integer(kind=kint) :: i
417 call set_group_pointers( hecmesh, grp_type_name )
435 function get_grp_id( hecMESH, grp_type_name, name )
438 type (hecmwst_local_mesh),
target :: hecmesh
439 character(len=*) :: grp_type_name
440 character(len=*) :: name
441 integer(kind=kint) :: i
443 call set_group_pointers( hecmesh, grp_type_name )
463 function get_grp_member( hecMESH, grp_type_name, name, member1, member2 )
466 type (hecmwst_local_mesh),
target :: hecmesh
467 character(len=*) :: grp_type_name
468 character(len=*) :: name
469 integer(kind=kint),
pointer :: member1(:)
470 integer(kind=kint),
pointer,
optional :: member2(:)
471 integer(kind=kint) :: i, j, k, sn, en
474 if( grp_type_name ==
'surf_grp' .and. (.not.
present( member2 )))
then
475 stop
'assert in get_grp_member: not present member2 '
478 call set_group_pointers( hecmesh, grp_type_name )
482 sn = grp_index(i-1) + 1
485 if( grp_type == 3 )
then
487 member1(k) = grp_item(2*j-1)
488 member2(k) = grp_item(2*j)
493 member1(k) = grp_item(j)
518 type (hecmwst_local_mesh),
target :: hecmesh
519 character(len=*) :: type_name
520 character(len=*) :: name
521 integer(kind=kint) :: local_id
522 integer(kind=kint) :: i, n, no, fg
523 integer(kind=kint),
pointer :: global_item(:)
530 if( type_name ==
'node' )
then
533 global_item => hecmesh%global_node_ID
534 else if( type_name ==
'element' )
then
537 global_item => hecmesh%global_elem_ID
539 stop
'assert in get_local_member_index: unknown type_name'
543 if( no == global_item(i))
then
560 type (hecmwst_local_mesh),
target :: hecmesh
562 character(len=*) :: type_name
563 character(len=*) :: name
564 integer(kind=kint) :: local_id, idx
565 integer(kind=kint) :: n, no, fg
572 if( type_name ==
'node' )
then
574 n = hecmesh%nn_internal
581 stop
'assert in get_sorted_local_member_index: unknown type_name'
601 integer(kind=kint),
intent(in) :: array(:)
602 integer(kind=kint),
intent(in) :: istart, iend
603 integer(kind=kint),
intent(in) :: val
604 integer(kind=kint),
intent(out) :: idx
605 integer(kind=kint) :: center, left, right, pivot
609 if (left > right)
then
613 center = (left + right) / 2
614 pivot = array(center)
615 if (val < pivot)
then
618 else if (pivot < val)
then
630 integer(kind=kint),
intent(inout) :: array(:)
631 integer(kind=kint),
intent(in) :: istart, iend
632 integer(kind=kint) :: pivot, center, left, right, tmp
633 if (istart >= iend)
return
634 center = (istart + iend) / 2
635 pivot = array(center)
639 do while (array(left) < pivot)
642 do while (pivot < array(right))
645 if (left >= right)
exit
647 array(left) = array(right)
659 integer(kind=kint),
intent(inout) :: array(:)
660 integer(kind=kint),
intent(in) :: len
661 integer(kind=kint),
intent(out) :: newlen
662 integer(kind=kint) :: i, ndup
665 if (array(i) == array(i - 1 - ndup))
then
667 else if (ndup > 0)
then
668 array(i - ndup) = array(i)
678 type (hecmwST_local_mesh) :: hecMESH
679 character(len=*) :: header_name
680 character(HECMW_NAME_LEN) :: grp_id_name(:)
681 integer(kind=kint),
pointer :: grp_ID(:)
682 integer(kind=kint) :: n
683 integer(kind=kint) :: i, id
684 character(len=256) :: msg
688 do id = 1, hecmesh%node_group%n_grp
689 if(
fstr_streqr(hecmesh%node_group%grp_name(id),grp_id_name(i)))
then
694 if( grp_id(i) == -1 )
then
695 write(msg,*)
'### Error: ', header_name,
' : Node group "',&
696 grp_id_name(i),
'" does not exist.'
704 type (hecmwST_local_mesh) :: hecMESH
705 character(len=*) :: header_name
706 character(HECMW_NAME_LEN) :: grp_id_name(:)
707 integer(kind=kint) :: grp_ID(:)
708 integer(kind=kint) :: n
709 integer(kind=kint) :: i, id
710 character(len=256) :: msg
714 do id = 1, hecmesh%elem_group%n_grp
715 if (
fstr_streqr(hecmesh%elem_group%grp_name(id), grp_id_name(i)))
then
720 if( grp_id(i) == -1 )
then
721 write(msg,*)
'### Error: ', header_name,
' : Node group "',&
722 grp_id_name(i),
'" does not exist.'
735 type (hecmwST_local_mesh),
target :: hecMESH
736 character(len=*) :: header_name
737 integer(kind=kint) :: n
738 character(len=HECMW_NAME_LEN) :: grp_id_name(:)
739 integer(kind=kint) :: grp_ID(:)
741 integer(kind=kint) :: i, id
742 integer(kind=kint) :: no, no_count, exist_n
743 integer(kind=kint),
pointer :: no_list(:)
744 character(HECMW_NAME_LEN) :: name
745 character(len=256) :: msg
747 allocate( no_list( n ))
751 no_count = no_count + 1
752 no_list(no_count) = no
753 grp_id(i) = hecmesh%node_group%n_grp + no_count
756 do id = 1, hecmesh%node_group%n_grp
757 if (
fstr_streqr(hecmesh%node_group%grp_name(id), grp_id_name(i)))
then
762 if( grp_id(i) == -1 )
then
763 write(msg,*)
'### Error: ', header_name,
' : Node group "',grp_id_name(i),
'" does not exist.'
769 if( no_count > 0 )
then
771 exist_n = append_single_group( hecmesh, name, no_count, no_list )
784 deallocate( no_list )
794 type (hecmwST_local_mesh),
target :: hecMESH
795 character(len=*) :: header_name
796 integer(kind=kint) :: n
797 character(len=HECMW_NAME_LEN) :: grp_id_name(:)
798 integer(kind=kint) :: grp_ID(:)
799 integer(kind=kint) :: grp_TYPE(:)
801 integer(kind=kint) :: i, id
802 integer(kind=kint) :: no, no_count, exist_n
803 integer(kind=kint),
pointer :: no_list(:)
804 character(HECMW_NAME_LEN) :: name
805 character(len=256) :: msg
807 allocate( no_list( n ))
811 no_count = no_count + 1
812 no_list(no_count) = no
813 grp_id(i) = hecmesh%node_group%n_grp + no_count
818 do id = 1, hecmesh%node_group%n_grp
819 if (
fstr_streqr(hecmesh%node_group%grp_name(id), grp_id_name(i)))
then
826 if (grp_id(i) == -1)
then
827 do id = 1, hecmesh%surf_group%n_grp
828 if (
fstr_streqr(hecmesh%surf_group%grp_name(id), grp_id_name(i)))
then
837 if( grp_id(i) == -1 )
then
838 write(msg,*)
'### Error: ', header_name,
' : Node group "',grp_id_name(i),
'" does not exist.'
843 if( no_count > 0 )
then
845 exist_n = append_single_group( hecmesh, name, no_count, no_list )
848 deallocate( no_list )
854 type (hecmwST_local_mesh),
target :: hecMESH
855 character(len=*) :: header_name
856 integer(kind=kint) :: n
857 character(HECMW_NAME_LEN) :: grp_id_name(:)
858 integer(kind=kint) :: grp_ID(:)
859 integer(kind=kint) :: i, id
860 integer(kind=kint) :: no, no_count, exist_n
861 integer(kind=kint),
pointer :: no_list(:)
862 character(HECMW_NAME_LEN) :: name
863 character(len=256) :: msg
865 allocate( no_list( n ))
869 no_count = no_count + 1
870 no_list(no_count) = no
871 grp_id(i) = hecmesh%elem_group%n_grp + no_count
874 do id = 1, hecmesh%elem_group%n_grp
875 if (
fstr_streqr(hecmesh%elem_group%grp_name(id), grp_id_name(i)))
then
880 if( grp_id(i) == -1 )
then
881 write(msg,*)
'### Error: ', header_name,
' : Element group "',&
882 grp_id_name(i),
'" does not exist.'
888 if( no_count > 0 )
then
890 exist_n = append_single_group( hecmesh, name, no_count, no_list )
891 if( exist_n < no_count )
then
892 write(*,*)
'### Warning: ', header_name,
': following elements are not exist'
893 write(
imsg,*)
'### Warning: ', header_name,
': following elements are not exist'
895 if( no_list(i)<0 )
then
896 write(*,*) -no_list(i)
897 write(
imsg,*) -no_list(i)
903 deallocate( no_list )
910 type (hecmwST_local_mesh),
target :: hecMESH
911 character(len=*) :: header_name
912 integer(kind=kint) :: n
913 character(len=HECMW_NAME_LEN) :: grp_id_name(:)
914 integer(kind=kint) :: grp_ID(:)
915 integer(kind=kint) :: i, id
916 character(len=256) :: msg
920 do id = 1, hecmesh%surf_group%n_grp
921 if (
fstr_streqr(hecmesh%surf_group%grp_name(id), grp_id_name(i)))
then
926 if( grp_id(i) == -1 )
then
927 write(msg,*)
'### Error: ', header_name,
' : Surface group "',grp_id_name(i),
'" does not exist.'
937 type (hecmwST_local_mesh),
target :: hecMESH
938 integer(kind=kint) :: n
939 integer(kind=kint),
save :: casha = 1, cashb = 1
940 character(HECMW_NAME_LEN) :: grp_id_name(:)
941 logical :: fg_surface(:)
942 integer(kind=kint) :: grp_ID(:)
943 integer(kind=kint) :: i, id
944 integer(kind=kint) :: no, no_count, exist_n
945 integer(kind=kint),
pointer :: no_list(:)
946 character(HECMW_NAME_LEN) :: name
947 character(len=256) :: msg
949 allocate( no_list( n ))
952 if( fg_surface(i) )
then
954 if(casha < hecmesh%surf_group%n_grp)
then
955 if(
fstr_streqr(hecmesh%surf_group%grp_name(casha), grp_id_name(i)))
then
961 do id = 1, hecmesh%surf_group%n_grp
962 if(
fstr_streqr(hecmesh%surf_group%grp_name(id), grp_id_name(i)))
then
968 if( grp_id(i) == -1 )
then
969 write(msg,*)
'### Error: !DLOAD : Surface group "',&
970 grp_id_name(i),
'" does not exist.'
975 no_count = no_count + 1
976 no_list(no_count) = no
977 grp_id(i) = hecmesh%elem_group%n_grp + no_count
980 if(cashb < hecmesh%surf_group%n_grp)
then
981 if(
fstr_streqr(hecmesh%surf_group%grp_name(cashb), grp_id_name(i)))
then
987 do id = 1, hecmesh%elem_group%n_grp
988 if(
fstr_streqr(hecmesh%elem_group%grp_name(id), grp_id_name(i)))
then
994 if( grp_id(i) == -1 )
then
995 write(msg,*)
'### Error: !DLOAD : Element group "',&
996 grp_id_name(i),
'" does not exist.'
1003 if( no_count > 0 )
then
1005 exist_n = append_single_group( hecmesh, name, no_count, no_list )
1022 deallocate( no_list )
1030 type( hecmwst_amplitude ),
intent(inout) :: amp
1031 character(len=HECMW_NAME_LEN),
intent(in) :: name
1032 integer(kind=kint),
intent(in) :: type_def
1033 integer(kind=kint),
intent(in) :: type_time
1034 integer(kind=kint),
intent(in) :: type_val
1035 integer(kind=kint),
intent(in) :: np
1036 real(kind=kreal),
intent(in) :: val(:)
1037 real(kind=kreal),
intent(in) :: table(:)
1040 integer(kind=kint) :: n_amp, new_size, old_size, i
1044 write(*,*)
'Error: AMPLITUDE with NAME=',trim(name),
' already exists'
1051 amp%n_amp = new_size
1060 old_size = amp%amp_index( n_amp )
1061 new_size = old_size+np
1065 amp%amp_index(amp%n_amp) = amp%amp_index(amp%n_amp-1)+np
1066 amp%amp_name(amp%n_amp) = name
1067 amp%amp_type_definition(amp%n_amp) = type_def
1068 amp%amp_type_time(amp%n_amp) = type_time
1069 amp%amp_type_value(amp%n_amp) = type_val
1071 amp%amp_val(old_size+i) = val(i)
1072 amp%amp_table(old_size+i) = table(i)
1079 type (hecmwST_local_mesh) :: hecMESH
1080 character(len=*) :: header_name
1081 character(len=HECMW_NAME_LEN)::aname
1082 integer(kind=kint) :: id
1083 character(len=256) :: msg
1086 if( aname .eq.
' ' )
return
1089 write(msg,*)
'### Error: ', header_name,
' : Amplitude group "',&
1090 aname,
'" does not exist.'
1100 type (hecmwST_local_mesh) :: hecMESH
1101 character(len=HECMW_NAME_LEN)::aname
1102 integer(kind=kint) :: id
1104 integer(kind=kint) :: i
1107 if( aname .eq.
' ' )
return
1109 do i = 1, hecmesh%amp%n_amp
1110 if(
fstr_streqr(hecmesh%amp%amp_name(i), aname))
then
1123 type (hecmwst_local_mesh),
target :: hecmesh
1125 integer(kind=kint) :: n
1126 integer(kind=kint) :: i,j, m
1130 call set_group_pointers( hecmesh, grp_name_array%s(i) )
1132 if(
fstr_streqr(grp_name%s(j), grp_name_array%s(i)))
then
1133 m = m + grp_index(j) - grp_index(j-1)
1145 integer(kind=kint),
pointer :: array(:)
1146 integer(kind=kint) :: old_size, new_size,i
1147 integer(kind=kint),
pointer :: temp(:)
1149 if( old_size >= new_size )
then
1153 if(
associated( array ) )
then
1154 allocate(temp(0:old_size-1))
1159 allocate(array(0:new_size-1))
1166 allocate(array(0:new_size-1))
1173 character(len=HECMW_NAME_LEN),
pointer :: array(:)
1174 integer(kind=kint) :: old_size, new_size,i
1175 character(len=HECMW_NAME_LEN),
pointer :: temp(:)
1177 if( old_size >= new_size )
then
1181 if(
associated( array ) )
then
1182 allocate(temp(old_size))
1187 allocate(array(new_size))
1194 allocate(array(new_size))
1201 integer(kind=kint),
pointer :: array(:)
1202 integer(kind=kint) :: old_size, new_size,i
1203 integer(kind=kint),
pointer :: temp(:)
1205 if( old_size >= new_size )
then
1209 if(
associated( array ) )
then
1210 allocate(temp(old_size))
1215 allocate(array(new_size))
1222 allocate(array(new_size))
1229 real(kind=kreal),
pointer :: array(:)
1230 integer(kind=kint) :: old_size, new_size, i
1231 real(kind=kreal),
pointer :: temp(:)
1233 if( old_size >= new_size )
then
1237 if(
associated( array ) )
then
1238 allocate(temp(old_size))
1243 allocate(array(new_size))
1250 allocate(array(new_size))
1258 integer(kind=kint),
pointer :: array(:,:)
1259 integer(kind=kint) :: column, old_size, new_size, i,j
1260 integer(kind=kint),
pointer :: temp(:,:)
1262 if( old_size >= new_size )
then
1266 if(
associated( array ) )
then
1267 allocate(temp(old_size,column))
1270 temp(i,j) = array(i,j)
1274 allocate(array(new_size,column))
1278 array(i,j) = temp(i,j)
1283 allocate(array(new_size, column))
1293 real(kind=kreal),
pointer :: array(:,:)
1294 integer(kind=kint) :: column, old_size, new_size, i,j
1295 real(kind=kreal),
pointer :: temp(:,:)
1297 if( old_size >= new_size )
then
1301 if(
associated( array ) )
then
1302 allocate(temp(old_size,column))
1305 temp(i,j) = array(i,j)
1309 allocate(array(new_size,column))
1313 array(i,j) = temp(i,j)
1318 allocate(array(new_size, column))
1326 integer(kind=kint) :: old_size, new_size, i
1327 character(len=HECMW_NAME_LEN),
pointer :: temp(:)
1329 if( old_size >= new_size )
then
1333 if(
associated( array%s ) )
then
1334 allocate(temp(old_size))
1336 temp(i) = array%s(i)
1339 allocate(array%s(new_size))
1341 array%s(i) = temp(i)
1345 allocate(array%s(new_size))
1351 integer(kind=kint),
pointer :: array(:)
1352 integer(kind=kint),
intent(in) :: old_size
1353 integer(kind=kint),
intent(in) :: nindex
1354 integer(kind=kint) :: i
1355 integer(kind=kint),
pointer :: temp(:)
1357 if( old_size < nindex )
then
1361 if( old_size == nindex )
then
1366 allocate(temp(0:old_size-1))
1367 do i=0, old_size-nindex-1
1371 allocate(array(0:old_size-nindex-1))
1373 do i=0, old_size-nindex-1
1381 integer(kind=kint),
pointer :: array(:)
1382 integer(kind=kint),
intent(in) :: old_size
1383 integer(kind=kint),
intent(in) :: nitem
1384 integer(kind=kint) :: i
1385 integer(kind=kint),
pointer :: temp(:)
1387 if( old_size < nitem )
then
1391 if( old_size == nitem )
then
1396 allocate(temp(old_size))
1397 do i=1, old_size-nitem
1401 allocate(array(old_size-nitem))
1403 do i=1, old_size-nitem
1411 real(kind=kreal),
pointer :: array(:)
1412 integer(kind=kint),
intent(in) :: old_size
1413 integer(kind=kint),
intent(in) :: nitem
1414 integer(kind=kint) :: i
1415 real(kind=kreal),
pointer :: temp(:)
1417 if( old_size < nitem )
then
1421 if( old_size == nitem )
then
1426 allocate(temp(old_size))
1427 do i=1, old_size-nitem
1431 allocate(array(old_size-nitem))
1433 do i=1, old_size-nitem
1443 integer(kind=kint),
pointer :: array(:)
1444 integer(kind=kint) :: n;
1446 if(
associated( array ))
deallocate(array)
1447 allocate( array(n));
1452 real(kind=kreal),
pointer :: array(:)
1453 integer(kind=kint) :: n;
1455 if(
associated( array ))
deallocate(array)
1456 allocate( array(n));
1468 integer(kind=kint) :: ctrl
1469 type (hecmwST_local_mesh) :: hecMESH
1470 integer(kind=kint) :: rcode
1471 character(HECMW_FILENAME_LEN) :: vis_filename =
'hecmw_vis.ini'
1475 if(rcode == 0)
return
1477 if(hecmesh%my_rank == 0)
then
1481 call hecmw_barrier( hecmesh )
1483 inquire(file = vis_filename, exist = is_exit)
1485 if(.not. is_exit)
then
1492 integer(kind=kint) :: ctrl
1493 integer(kind=kint) :: rcode
1494 integer(kind=kint) :: i, start_n, end_n
1495 character(HECMW_FILENAME_LEN) :: vis_filename
1496 integer(kind=kint),
parameter :: buffsize = 127
1497 character( buffsize ) :: buff
1498 character( buffsize ) :: head
1499 character( buffsize ) :: msg
1504 open (
ifvs, file = trim(vis_filename), status =
'replace', err = 1000)
1507 if( rcode /= 0 )
exit
1509 if( head ==
'!END')
exit
1510 write(
ifvs,
'(a)') buff
1516 1000
write(msg,*)
'Error: cannot create file:"', trim(vis_filename),
'" for visualization'