12 private :: hecmw_petot,hecmw_rank,hecmw_comm,hecmw_group
15 integer(kind=4),
parameter::
kint = 4
16 integer(kind=4),
parameter::
kreal = 8
38 integer(kind=kint) :: hecmw_petot,hecmw_rank,hecmw_comm,hecmw_group
45 integer(kind=kint) :: n_sect
46 integer(kind=kint),
pointer :: sect_type(:)
47 integer(kind=kint),
pointer :: sect_opt(:)
48 integer(kind=kint),
pointer :: sect_mat_id_index(:)
49 integer(kind=kint),
pointer :: sect_mat_id_item(:)
50 integer(kind=kint),
pointer :: sect_i_index(:)
51 integer(kind=kint),
pointer :: sect_i_item(:)
52 integer(kind=kint),
pointer :: sect_r_index(:)
53 real(kind=
kreal),
pointer :: sect_r_item(:)
54 integer(kind=kint),
pointer :: sect_orien_id(:) => null()
77 integer(kind=kint) :: n_mat
78 integer(kind=kint) :: n_mat_item
79 integer(kind=kint) :: n_mat_subitem
80 integer(kind=kint) :: n_mat_table
81 character(HECMW_NAME_LEN),
pointer :: mat_name(:)
82 integer(kind=kint),
pointer :: mat_item_index(:)
83 integer(kind=kint),
pointer :: mat_subitem_index(:)
84 integer(kind=kint),
pointer :: mat_table_index(:)
85 real(kind=
kreal),
pointer :: mat_val(:)
86 real(kind=
kreal),
pointer :: mat_temp(:)
96 integer(kind=kint) :: n_mpc
97 integer(kind=kint),
pointer :: mpc_index(:)
98 integer(kind=kint),
pointer :: mpc_item(:)
99 integer(kind=kint),
pointer :: mpc_dof(:)
100 real(kind=
kreal),
pointer :: mpc_val(:)
101 real(kind=
kreal),
pointer :: mpc_const(:)
111 integer(kind=kint) :: n_amp
112 character(len=HECMW_NAME_LEN),
pointer :: amp_name(:)
113 integer(kind=kint),
pointer :: amp_type_definition(:)
114 integer(kind=kint),
pointer :: amp_type_time(:)
115 integer(kind=kint),
pointer :: amp_type_value(:)
116 integer(kind=kint),
pointer :: amp_index(:)
117 real(kind=
kreal),
pointer :: amp_val(:)
118 real(kind=
kreal),
pointer :: amp_table(:)
136 integer(kind=kint) :: n_grp
137 integer(kind=kint) :: n_bc
138 character(HECMW_NAME_LEN),
pointer :: grp_name(:)
139 integer(kind=kint),
pointer :: grp_index(:)
140 integer(kind=kint),
pointer :: grp_item(:)
141 integer(kind=kint),
pointer :: bc_grp_id(:)
142 integer(kind=kint),
pointer :: bc_grp_type(:)
143 integer(kind=kint),
pointer :: bc_grp_index(:)
144 integer(kind=kint),
pointer :: bc_grp_dof(:)
145 real(kind=
kreal),
pointer :: bc_grp_val(:)
159 integer(kind=kint) :: n_grp
160 integer(kind=kint) :: n_bc
161 character(HECMW_NAME_LEN),
pointer :: grp_name(:)
162 integer(kind=kint),
pointer :: grp_index(:)
163 integer(kind=kint),
pointer :: grp_item(:)
164 integer(kind=kint),
pointer :: bc_grp_id(:)
165 integer(kind=kint),
pointer :: bc_grp_type(:)
166 integer(kind=kint),
pointer :: bc_grp_index(:)
167 real(kind=
kreal),
pointer :: bc_grp_val(:)
181 integer(kind=kint) :: n_grp
182 integer(kind=kint) :: n_bc
183 character(HECMW_NAME_LEN),
pointer:: grp_name(:)
184 integer(kind=kint),
pointer :: grp_index(:)
185 integer(kind=kint),
pointer :: grp_item(:)
186 integer(kind=kint),
pointer :: bc_grp_id(:)
187 integer(kind=kint),
pointer :: bc_grp_type(:)
188 integer(kind=kint),
pointer :: bc_grp_index(:)
189 real(kind=
kreal),
pointer :: bc_grp_val(:)
203 integer(kind=kint) :: n_pair
204 character(HECMW_NAME_LEN),
pointer:: name(:)
205 integer(kind=kint),
pointer ::
type(:)
206 integer(kind=kint),
pointer :: slave_grp_id(:)
207 integer(kind=kint),
pointer :: master_grp_id(:)
208 integer(kind=kint),
pointer :: slave_orisgrp_id(:)
222 integer(kind=kint),
pointer :: index(:)
223 integer(kind=kint),
pointer :: item_index(:)
224 integer(kind=kint),
pointer :: item_item(:)
238 character(HECMW_FILENAME_LEN) :: gridfile
239 character(HECMW_FILENAME_LEN),
pointer :: files(:)
240 character(HECMW_HEADER_LEN) :: header
241 integer(kind=kint) :: hecmw_flag_adapt
242 integer(kind=kint) :: hecmw_flag_initcon
243 integer(kind=kint) :: hecmw_n_file
244 integer(kind=kint) :: hecmw_flag_parttype
245 integer(kind=kint) :: hecmw_flag_partdepth
246 integer(kind=kint) :: hecmw_flag_version
247 integer(kind=kint) :: hecmw_flag_partcontact
252 integer(kind=kint) :: n_node
253 integer(kind=kint) :: n_node_gross
255 integer(kind=kint) :: nn_middle
256 integer(kind=kint) :: nn_internal
257 integer(kind=kint) :: n_dof
258 integer(kind=kint) :: n_dof_grp
259 integer(kind=kint) :: n_dof_tot
261 integer(kind=kint),
pointer :: node_id(:)
262 integer(kind=kint),
pointer :: global_node_id(:)
263 integer(kind=kint),
pointer :: node_val_index(:)
264 real(kind=
kreal),
pointer :: node_val_item(:)
265 integer(kind=kint),
pointer :: node_dof_index(:)
266 integer(kind=kint),
pointer :: node_dof_item(:)
267 integer(kind=kint),
pointer :: node_init_val_index(:)
268 real(kind=
kreal),
pointer :: node_init_val_item(:)
269 integer(kind=kint),
pointer :: node_internal_list(:)
273 integer(kind=kint) :: n_elem
274 integer(kind=kint) :: n_elem_gross
275 integer(kind=kint) :: ne_internal
276 integer(kind=kint) :: n_elem_type
277 integer(kind=kint) :: n_elem_mat_id
278 integer(kind=kint),
pointer :: elem_type_index(:)
279 integer(kind=kint),
pointer :: elem_type_item(:)
280 integer(kind=kint),
pointer :: elem_type(:)
281 integer(kind=kint),
pointer :: section_id(:)
282 integer(kind=kint),
pointer :: elem_mat_id_index(:)
283 integer(kind=kint),
pointer :: elem_mat_id_item(:)
284 integer(kind=kint),
pointer :: elem_node_index(:)
285 integer(kind=kint),
pointer :: elem_node_item(:)
286 integer(kind=kint),
pointer :: elem_id(:)
287 integer(kind=kint),
pointer :: global_elem_id(:)
288 integer(kind=kint),
pointer :: elem_internal_list(:)
289 integer(kind=kint),
pointer :: elem_mat_int_index(:)
290 real(kind=
kreal),
pointer :: elem_mat_int_val(:)
291 integer(kind=kint),
pointer :: elem_val_index(:)
292 real(kind=
kreal),
pointer :: elem_val_item(:)
299 integer(kind=kint) :: zero
300 integer(kind=kint) :: mpi_comm
301 integer(kind=kint) :: petot
302 integer(kind=kint) :: pesmptot
303 integer(kind=kint) :: my_rank
304 integer(kind=kint) :: errnof
305 integer(kind=kint) :: n_subdomain
306 integer(kind=kint) :: n_neighbor_pe
307 integer(kind=kint),
pointer :: neighbor_pe(:)
308 integer(kind=kint),
pointer :: import_index(:)
309 integer(kind=kint),
pointer :: import_item(:)
310 integer(kind=kint),
pointer :: export_index(:)
311 integer(kind=kint),
pointer :: export_item(:)
312 integer(kind=kint),
pointer :: shared_index(:)
313 integer(kind=kint),
pointer :: shared_item(:)
318 integer(kind=kint) :: coarse_grid_level
319 integer(kind=kint) :: n_adapt
320 integer(kind=kint),
pointer :: when_i_was_refined_node(:)
321 integer(kind=kint),
pointer :: when_i_was_refined_elem(:)
322 integer(kind=kint),
pointer :: adapt_parent_type(:)
323 integer(kind=kint),
pointer :: adapt_type (:)
324 integer(kind=kint),
pointer :: adapt_level(:)
325 integer(kind=kint),
pointer :: adapt_parent(:)
326 integer(kind=kint),
pointer :: adapt_children_index(:)
327 integer(kind=kint),
pointer :: adapt_children_item(:)
329 integer(kind=kint) :: nn_array, ne_array, nx_array
330 integer(kind=kint) :: n_adapt_edge, n_adapt_edge_global
331 integer(kind=kint) :: n_adapt_act_node, n_adapt_act_edge
332 integer(kind=kint) :: n_adapt_act_elem, n_adapt_act_elem_cur
333 integer(kind=kint) :: n_adapt_elem_341, n_adapt_elem_351
334 integer(kind=kint) :: n_adapt_elem_341_cur, n_adapt_elem_351_cur
335 integer(kind=kint) :: n_adapt_act_elem_341, n_adapt_act_elem_351
337 integer(kind=kint) :: n_adapt_node_cur, nn_adapt_internal_cur
338 integer(kind=kint) :: n_adapt_node_old, nn_adapt_internal_old
339 integer(kind=kint) :: n_adapt_elem_cur, n_adapt_elem_old
341 integer(kind=kint),
pointer :: adapt_edge_node(:), adapt_mid_edge (:)
342 integer(kind=kint),
pointer :: adapt_iemb (:), adapt_edge_home(:)
343 integer(kind=kint),
pointer :: adapt_act_edge (:)
345 integer(kind=kint),
pointer :: &
346 & adapt_import_edge_index(:), adapt_import_edge_item (:),&
347 & adapt_export_edge_index(:), adapt_export_edge_item (:),&
348 & adapt_import_elem_index(:), adapt_import_elem_item (:),&
349 & adapt_export_elem_index(:), adapt_export_elem_item (:),&
350 & adapt_import_new_index (:), adapt_import_new_item (:),&
351 & adapt_export_new_index (:), adapt_export_new_item (:)
352 integer(kind=kint),
pointer :: rev_neighbor_pe(:)
353 integer(kind=kint),
pointer :: adapt_act_elem_341(:)
354 integer(kind=kint),
pointer :: adapt_act_elem_351(:)
355 integer(kind=kint),
pointer :: adapt_oldtonew_node(:), adapt_newtoold_node(:)
356 integer(kind=kint),
pointer :: adapt_oldtonew_elem(:), adapt_newtoold_elem(:)
357 integer(kind=kint),
pointer :: adapt_iwk(:), adapt_children_local(:)
362 integer(kind=kint) :: n_refine
363 integer(kind=kint),
pointer :: node_old2new(:)
364 integer(kind=kint),
pointer :: node_new2old(:)
365 integer(kind=kint),
pointer :: elem_old2new(:)
366 integer(kind=kint),
pointer :: elem_new2old(:)
367 integer(kind=kint),
pointer :: n_node_refine_hist(:)
401 integer(kind=kint) :: zero
402 integer(kind=kint) :: hecmw_comm
403 integer(kind=kint) :: petot
404 integer(kind=kint) :: pesmptot
405 integer(kind=kint) :: my_rank
406 integer(kind=kint) :: errnof
407 integer(kind=kint) :: n_subdomain
408 integer(kind=kint) :: n_neighbor_pe
409 integer(kind=kint),
dimension(:),
pointer :: neighbor_pe
410 integer(kind=kint),
dimension(:),
pointer :: import_index
411 integer(kind=kint),
dimension(:),
pointer :: import_item
412 integer(kind=kint),
dimension(:),
pointer :: export_index
413 integer(kind=kint),
dimension(:),
pointer :: export_item
414 integer(kind=kint),
dimension(:),
pointer :: shared_index
415 integer(kind=kint),
dimension(:),
pointer :: shared_item
419 integer(kind=kint) :: i
420 integer(kind=kint) :: j
421 real(kind=
kreal),
dimension(3,3) :: val
425 integer(kind=kint) :: n_val
426 integer(kind=kint) :: max_val
430 integer(kind=kint) :: max_row
431 integer(kind=kint) :: max_col
435 integer(kind=kint) :: n, np, npl, npu, ndof, npcl, npcu
442 real(kind=
kreal),
pointer :: d(:), b(:), x(:), alu(:)
443 real(kind=
kreal),
pointer :: al(:), au(:), cal(:), cau(:)
446 integer(kind=kint),
pointer :: indexl(:), indexu(:), indexcl(:), indexcu(:)
447 integer(kind=kint),
pointer :: iteml(:), itemu(:), itemcl(:), itemcu(:)
463 integer(kind=kint ),
dimension(100) :: iarray
464 real (kind=
kreal),
dimension(100) :: rarray
465 logical :: symmetric = .true.
480 character(len=HECMW_FILENAME_LEN):: ctrlfile =
"hecmw_ctrl.dat"
493 character(len=HECMW_FILENAME_LEN):: ctrlfile
494 integer(kind=kint) :: ierr
498 call mpi_comm_size (mpi_comm_world, hecmw_petot, ierr)
499 call mpi_comm_rank (mpi_comm_world, hecmw_rank, ierr)
500 call mpi_comm_dup (mpi_comm_world, hecmw_comm, ierr)
501 call mpi_comm_group(mpi_comm_world, hecmw_group, ierr)
532 integer(kind=kint) :: ierr
537 call mpi_finalize(ierr)
550 integer(kind=kint) :: comm, errorcode, ierror
553 call mpi_abort(comm, errorcode, ierror)
587 integer(kind=kint) :: comm
598 integer(kind=kint) :: rank
609 integer(kind=kint) :: comm_size
611 comm_size = hecmw_petot
619 nullify( p%sect_type )
620 nullify( p%sect_opt )
621 nullify( p%sect_mat_ID_index )
622 nullify( p%sect_mat_ID_item )
623 nullify( p%sect_I_index )
624 nullify( p%sect_I_item )
625 nullify( p%sect_R_index )
626 nullify( p%sect_R_item )
631 nullify( p%mat_name )
632 nullify( p%mat_item_index )
633 nullify( p%mat_subitem_index )
634 nullify( p%mat_table_index )
636 nullify( p%mat_temp )
641 nullify( p%mpc_index )
642 nullify( p%mpc_item )
645 nullify( p%mpc_const )
650 integer(kind=kint),
intent(in) :: n_mpc
651 integer(kind=kint),
intent(in) :: n_item
654 allocate( mpc%mpc_index(0:n_mpc) )
655 allocate( mpc%mpc_item(n_item) )
656 allocate( mpc%mpc_dof(n_item) )
657 allocate( mpc%mpc_val(n_item) )
662 if(
associated(p%mpc_index) )
deallocate( p%mpc_index )
663 if(
associated(p%mpc_item) )
deallocate( p%mpc_item )
664 if(
associated(p%mpc_dof) )
deallocate( p%mpc_dof )
665 if(
associated(p%mpc_val) )
deallocate( p%mpc_val )
670 nullify( p%amp_name )
671 nullify( p%amp_type_definition )
672 nullify( p%amp_type_time )
673 nullify( p%amp_type_value )
674 nullify( p%amp_index )
676 nullify( p%amp_table )
681 nullify( p%grp_name )
682 nullify( p%grp_index )
683 nullify( p%grp_item )
684 nullify( p%bc_grp_ID )
685 nullify( p%bc_grp_type )
686 nullify( p%bc_grp_index )
687 nullify( p%bc_grp_dof )
688 nullify( p%bc_grp_val )
693 nullify( p%grp_name )
694 nullify( p%grp_index )
695 nullify( p%grp_item )
696 nullify( p%bc_grp_ID )
697 nullify( p%bc_grp_type )
698 nullify( p%bc_grp_index )
699 nullify( p%bc_grp_val )
704 nullify( p%grp_name )
705 nullify( p%grp_index )
706 nullify( p%grp_item )
707 nullify( p%bc_grp_ID )
708 nullify( p%bc_grp_type )
709 nullify( p%bc_grp_index )
710 nullify( p%bc_grp_val )
717 nullify( p%slave_grp_id )
718 nullify( p%slave_orisgrp_id )
719 nullify( p%master_grp_id )
725 nullify( p%item_index )
726 nullify( p%item_item )
734 nullify( p%global_node_ID )
735 nullify( p%node_val_index )
736 nullify( p%node_val_item )
737 nullify( p%node_dof_index )
738 nullify( p%node_dof_item )
739 nullify( p%node_init_val_index )
740 nullify( p%node_init_val_item )
741 nullify( p%node_internal_list )
742 nullify( p%elem_type_index )
743 nullify( p%elem_type_item )
744 nullify( p%elem_type )
745 nullify( p%section_ID )
746 nullify( p%elem_mat_ID_index )
747 nullify( p%elem_mat_ID_item )
748 nullify( p%elem_node_index )
749 nullify( p%elem_node_item )
751 nullify( p%global_elem_ID )
752 nullify( p%elem_internal_list )
753 nullify( p%elem_mat_int_index )
754 nullify( p%elem_mat_int_val )
755 nullify( p%elem_val_index )
756 nullify( p%elem_val_item )
757 nullify( p%neighbor_pe )
758 nullify( p%import_index )
759 nullify( p%import_item )
760 nullify( p%export_index )
761 nullify( p%export_item )
762 nullify( p%shared_index )
763 nullify( p%shared_item )
764 nullify( p%when_i_was_refined_node )
765 nullify( p%when_i_was_refined_elem )
766 nullify( p%adapt_parent_type )
767 nullify( p%adapt_type )
768 nullify( p%adapt_level )
769 nullify( p%adapt_parent )
770 nullify( p%adapt_children_index )
771 nullify( p%adapt_children_item )
772 nullify( p%adapt_edge_node )
773 nullify( p%adapt_mid_edge )
774 nullify( p%adapt_iemb )
775 nullify( p%adapt_edge_home )
776 nullify( p%adapt_act_edge )
777 nullify( p%adapt_import_edge_index )
778 nullify( p%adapt_import_edge_item )
779 nullify( p%adapt_export_edge_index )
780 nullify( p%adapt_export_edge_item )
781 nullify( p%adapt_import_elem_index )
782 nullify( p%adapt_import_elem_item )
783 nullify( p%adapt_export_elem_index )
784 nullify( p%adapt_export_elem_item )
785 nullify( p%adapt_import_new_index )
786 nullify( p%adapt_import_new_item )
787 nullify( p%adapt_export_new_index )
788 nullify( p%adapt_export_new_item )
789 nullify( p%rev_neighbor_pe )
790 nullify( p%adapt_act_elem_341 )
791 nullify( p%adapt_act_elem_351 )
792 nullify( p%adapt_OLDtoNEW_node )
793 nullify( p%adapt_NEWtoOLD_node )
794 nullify( p%adapt_OLDtoNEW_elem )
795 nullify( p%adapt_NEWtoOLD_elem )
796 nullify( p%adapt_IWK )
797 nullify( p%adapt_children_local )
798 nullify( p%node_old2new )
799 nullify( p%node_new2old )
800 nullify( p%elem_old2new )
801 nullify( p%elem_new2old )
802 nullify( p%n_node_refine_hist )
819 nullify( p%neighbor_pe )
820 nullify( p%import_index )
821 nullify( p%import_item )
822 nullify( p%export_index )
823 nullify( p%export_item )
824 nullify( p%shared_index )
825 nullify( p%shared_item )
889 character(len=*),
intent(in) :: fname
892 integer :: i, nf, nBlock
894 nblock = p%NDOF * p%NDOF
895 open( unit=nf, file=fname)
896 write( nf, * ) p%N,p%NP,p%NPL,p%NPU,p%NDOF
899 write( nf,* ) p%indexL(i), p%indexU(i)
903 write( nf,* ) p%itemL(i)
905 do i=1,nblock * p%NPL
906 write( nf,* ) p%AL(i)
910 write( nf,* ) p%itemU(i)
912 do i=1,nblock * p%NPU
913 write( nf,* ) p%AU(i)
917 write( nf, * ) p%D(i)
921 write( nf, * ) p%B(i)
925 write( nf, * ) p%cmat%n_val, p%cmat%max_val, p%cmat%max_row, &
926 p%cmat%max_col, p%cmat%checked, p%cmat%sorted
928 write( nf, * ) p%cmat%pair(i)%i,p%cmat%pair(i)%j
929 write( nf, * ) p%cmat%pair(i)%val(1,1), p%cmat%pair(i)%val(1,2), p%cmat%pair(i)%val(1,3)
930 write( nf, * ) p%cmat%pair(i)%val(2,1), p%cmat%pair(i)%val(2,2), p%cmat%pair(i)%val(2,3)
931 write( nf, * ) p%cmat%pair(i)%val(3,1), p%cmat%pair(i)%val(3,2), p%cmat%pair(i)%val(3,3)
938 character(len=*),
intent(in) :: fname
941 integer :: i, nf, nBlock, istat
943 open( unit=nf, file=fname, status=
'old', iostat= istat)
945 print *,
"cannot open file ",fname
948 read( nf, * ) p%N,p%NP,p%NPL,p%NPU,p%NDOF
949 nblock = p%NDOF * p%NDOF
952 allocate( p%indexL(0:p%NP), p%indexU(0:p%NP) )
953 allocate( p%itemL(p%NPL), p%itemU(p%NPU) )
954 allocate( p%AL(p%NPL*nblock), p%AU(p%NPU*nblock) )
955 allocate( p%D(p%NP*nblock) )
956 allocate( p%B(p%NDOF*p%NP) )
959 read( nf,* ) p%indexL(i), p%indexU(i)
963 read( nf,* ) p%itemL(i)
965 do i=1,nblock * p%NPL
970 read( nf,* ) p%itemU(i)
972 do i=1,nblock * p%NPU
985 read( nf, * ) p%cmat%n_val, p%cmat%max_val, p%cmat%max_row, &
986 p%cmat%max_col, p%cmat%checked, p%cmat%sorted
987 allocate( p%cmat%pair( p%cmat%n_val ) )
989 read( nf, * ) p%cmat%pair(i)%i,p%cmat%pair(i)%j
990 read( nf, * ) p%cmat%pair(i)%val(1,1), p%cmat%pair(i)%val(1,2), p%cmat%pair(i)%val(1,3)
991 read( nf, * ) p%cmat%pair(i)%val(2,1), p%cmat%pair(i)%val(2,2), p%cmat%pair(i)%val(2,3)
992 read( nf, * ) p%cmat%pair(i)%val(3,1), p%cmat%pair(i)%val(3,2), p%cmat%pair(i)%val(3,3)
998 type (hecmwST_matrix ) :: hecMATorig
999 type (hecmwST_matrix ),
pointer :: hecMAT
1003 hecmat%B => hecmatorig%B
1004 hecmat%X => hecmatorig%X
1005 hecmat%D => hecmatorig%D
1006 hecmat%AL => hecmatorig%AL
1007 hecmat%AU => hecmatorig%AU
1008 hecmat%indexL => hecmatorig%indexL
1009 hecmat%indexU => hecmatorig%indexU
1010 hecmat%itemL => hecmatorig%itemL
1011 hecmat%itemU => hecmatorig%itemU
1012 hecmat%N = hecmatorig%N
1013 hecmat%NP = hecmatorig%NP
1014 hecmat%NPL = hecmatorig%NPL
1015 hecmat%NPU = hecmatorig%NPU
1016 hecmat%NDOF = hecmatorig%NDOF
1017 hecmat%Iarray = hecmatorig%Iarray
1018 hecmat%Rarray = hecmatorig%Rarray
1022 type (hecmwST_matrix ) :: hecMATorig
1023 type (hecmwST_matrix ),
pointer :: hecMAT
1024 integer(kind=kint) NDOF,NDOF2,N,NP,NPL,NPU
1029 ndof = hecmatorig%NDOF
1032 npl = hecmatorig%NPL
1033 npu = hecmatorig%NPU
1039 allocate(hecmat%B(ndof*np))
1040 allocate(hecmat%X(ndof*np))
1041 allocate(hecmat%D(ndof2*np))
1042 allocate(hecmat%AU(ndof2*npu))
1043 allocate(hecmat%AL(ndof2*npl))
1044 allocate(hecmat%indexL(0:n), hecmat%indexU(0:n), hecmat%itemL(npl), hecmat%itemU(npu))
1045 hecmat%B = hecmatorig%B
1046 hecmat%X = hecmatorig%X
1047 hecmat%D = hecmatorig%D
1048 hecmat%AU = hecmatorig%AU
1049 hecmat%AL = hecmatorig%AL
1050 hecmat%indexL = hecmatorig%indexL
1051 hecmat%indexU = hecmatorig%indexU
1052 hecmat%itemL = hecmatorig%itemL
1053 hecmat%itemU = hecmatorig%itemU
1054 hecmat%Iarray = hecmatorig%Iarray
1055 hecmat%Rarray = hecmatorig%Rarray
1059 type (hecmwST_matrix ) :: hecMATorig
1060 type (hecmwST_matrix ),
pointer :: hecMAT
1061 integer(kind=kint) NDOF,NDOF2,oNDOF,oNDOF2,i,j,k
1064 ondof = hecmatorig%NDOF
1065 ondof2 = ondof*ondof
1069 allocate(hecmat%B(ndof*hecmatorig%NP))
1070 allocate(hecmat%X(ndof*hecmatorig%NP))
1071 allocate(hecmat%D(ndof2*hecmatorig%NP))
1072 allocate(hecmat%AL(ndof2*hecmatorig%NPL))
1073 allocate(hecmat%AU(ndof2*hecmatorig%NPU))
1074 hecmat%indexL => hecmatorig%indexL
1075 hecmat%indexU => hecmatorig%indexU
1076 hecmat%itemL => hecmatorig%itemL
1077 hecmat%itemU => hecmatorig%itemU
1078 hecmat%N = hecmatorig%N
1079 hecmat%NP = hecmatorig%NP
1080 hecmat%NPL = hecmatorig%NPL
1081 hecmat%NPU = hecmatorig%NPU
1083 hecmat%Iarray = hecmatorig%Iarray
1084 hecmat%Rarray = hecmatorig%Rarray
1086 do i = 1, hecmatorig%NP
1089 if (j<=ondof .and. k<=ondof)
then
1090 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%D(ondof2*(i-1) + (j-1)*ondof + k)
1093 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k)=1
1095 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k)=0
1100 hecmat%B(ndof*(i-1) + j) = hecmatorig%B(ondof*(i-1) + j)
1102 hecmat%B(ndof*(i-1) + j)=0
1106 do i = 1, hecmatorig%NPL
1109 if (j<=ondof .and. k<=ondof)
then
1110 hecmat%AL(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%AL(ondof2*(i-1) + (j-1)*ondof + k)
1112 hecmat%AL(ndof2*(i-1) + (j-1)*ndof + k) = 0
1117 do i = 1, hecmatorig%NPU
1120 if (j<=ondof .and. k<=ondof)
then
1121 hecmat%AU(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%AU(ondof2*(i-1) + (j-1)*ondof + k)
1123 hecmat%AU(ndof2*(i-1) + (j-1)*ndof + k) = 0
1130 type (hecmwST_matrix ) :: hecMATorig
1131 type (hecmwST_matrix ),
pointer :: hecMAT
1132 integer(kind=kint) NDOF,NDOF2,oNDOF,i,j
1134 ondof = hecmatorig%NDOF
1135 do i = 1, hecmatorig%NP
1137 hecmatorig%X(ondof*(i-1) + j) = hecmat%X(ndof*(i-1) + j)
1140 hecmatorig%Iarray = hecmat%Iarray
1141 hecmatorig%Rarray = hecmat%Rarray
1142 deallocate(hecmat%B)
1143 deallocate(hecmat%D)
1144 deallocate(hecmat%X)
1145 deallocate(hecmat%AL)
1146 deallocate(hecmat%AU)
void hecmw_comm_init_if(HECMW_Fint *comm, int *size, int *rank, HECMW_Fint *group)
void hecmw_ctrl_finalize_if(void)
void hecmw_ctrl_init_ex_if(char *ctrlfile, int *err, int len)
double hecmw_wtime_fi(void)
double hecmw_wtick_fi(void)
subroutine hecmw_vector_contract(hecmatorig, hecmat, ndof)
integer(kind=kint), parameter hecmw_sect_type_interface
subroutine hecmw_nullify_mesh(p)
integer(kind=kint), parameter hecmw_contact_type_node_surf
integer(kind=kint), parameter hecmw_sect_opt_pstrain
subroutine hecmw_nullify_matrix_comm(p)
integer(kind=kint), parameter hecmw_sum
integer(kind=kint), parameter hecmw_sect_type_beam
integer(kind=kint), parameter hecmw_flag_partcontact_distribute
subroutine hecmw_nullify_surf_grp(p)
integer(kind=kint), parameter hecmw_integer
integer(kind=kint), parameter hecmw_contact_type_surf_surf
integer(kind=kint), parameter hecmw_flag_partcontact_aggregate
subroutine hecmw_blockmatrix_expand(hecmatorig, hecmat, ndof)
subroutine hecmw_nullify_elem_grp(p)
integer(kind=kint), parameter hecmw_sect_opt_pstress_ri
integer(kind=kint) function hecmw_comm_get_size()
integer(kind=kint), parameter hecmw_sect_type_shell
integer(kind=kint), parameter hecmw_prod
integer(kind=4), parameter kint
subroutine hecmw_print_matrix(fname, p)
subroutine hecmw_init_ex(ctrlfile)
integer(kind=kint) function hecmw_comm_get_comm()
subroutine hecmw_nullify_mpc(p)
integer(kind=kint), parameter hecmw_single_precision
integer(kind=kint), parameter hecmw_max
integer(kind=4), parameter kreal
integer(kind=kint), parameter hecmw_bcgrptype_flux
subroutine hecmw_nullify_amplitude(p)
integer(kind=kint), parameter hecmw_sect_opt_pstress
subroutine hecmw_nullify_material(p)
integer(kind=kint), parameter hecmw_header_len
subroutine hecmw_nullify_section(p)
subroutine hecmw_finalize
integer(kind=kint), parameter hecmw_sect_opt_asymmetry
integer(kind=kint), parameter hecmw_status_size
integer(kind=kint) function hecmw_comm_get_rank()
subroutine hecmw_nullify_refine_origin(p)
subroutine hecmw_nullify_contact_pair(p)
integer(kind=kint), parameter hecmw_flag_parttype_nodebased
integer(kind=kint), parameter hecmw_min
integer(kind=kint), parameter hecmw_amp_typeval_relative
integer(kind=kint), parameter hecmw_bcgrptype_desplacement
real(kind=kreal) function hecmw_wtick()
integer(kind=kint), parameter hecmw_flag_parttype_elembased
integer(kind=kint), parameter hecmw_flag_parttype_unknown
integer(kind=kint), parameter hecmw_msg_len
integer(kind=kint), parameter hecmw_amp_typeval_absolute
subroutine hecmw_nullify_matrix(p)
integer(kind=kint), parameter hecmw_amp_typetime_step
subroutine hecmw_copy_matrix(hecmatorig, hecmat)
subroutine hecmw_nullify_node_grp(p)
integer(kind=kint), parameter hecmw_sect_opt_pstrain_ri
subroutine hecmw_initialize_mpc(mpc, n_mpc, n_item)
integer(kind=kint), parameter hecmw_filename_len
integer(kind=kint), parameter hecmw_sect_opt_asymmetry_ri
subroutine hecmw_nullify_matrix_contact(p)
integer(kind=kint), parameter hecmw_name_len
integer(kind=kint), parameter hecmw_character
subroutine hecmw_abort(comm)
subroutine hecmw_finalize_mpc(p)
subroutine hecmw_clone_matrix(hecmatorig, hecmat)
integer(kind=kint), parameter hecmw_flag_partcontact_unknown
real(kind=kreal) function hecmw_wtime()
integer(kind=kint), parameter hecmw_amp_typedef_tabular
integer(kind=kint), parameter hecmw_double_precision
subroutine hecmw_read_matrix(fname, p)
integer(kind=kint), parameter hecmw_sect_type_solid
integer(kind=kint), parameter hecmw_flag_partcontact_simple