12 private :: hecmw_petot,hecmw_rank,hecmw_comm,hecmw_group
15 integer(kind=4),
parameter::
kint = 4
16 integer(kind=4),
parameter::
kreal = 8
40 integer(kind=kint) :: hecmw_petot,hecmw_rank,hecmw_comm,hecmw_group
47 integer(kind=kint) :: n_sect
48 integer(kind=kint),
pointer :: sect_type(:)
49 integer(kind=kint),
pointer :: sect_opt(:)
50 integer(kind=kint),
pointer :: sect_mat_id_index(:)
51 integer(kind=kint),
pointer :: sect_mat_id_item(:)
52 integer(kind=kint),
pointer :: sect_i_index(:)
53 integer(kind=kint),
pointer :: sect_i_item(:)
54 integer(kind=kint),
pointer :: sect_r_index(:)
55 real(kind=
kreal),
pointer :: sect_r_item(:)
56 integer(kind=kint),
pointer :: sect_orien_id(:) => null()
79 integer(kind=kint) :: n_mat
80 integer(kind=kint) :: n_mat_item
81 integer(kind=kint) :: n_mat_subitem
82 integer(kind=kint) :: n_mat_table
83 character(HECMW_NAME_LEN),
pointer :: mat_name(:)
84 integer(kind=kint),
pointer :: mat_item_index(:)
85 integer(kind=kint),
pointer :: mat_subitem_index(:)
86 integer(kind=kint),
pointer :: mat_table_index(:)
87 real(kind=
kreal),
pointer :: mat_val(:)
88 real(kind=
kreal),
pointer :: mat_temp(:)
98 integer(kind=kint) :: n_mpc
99 integer(kind=kint),
pointer :: mpc_index(:)
100 integer(kind=kint),
pointer :: mpc_item(:)
101 integer(kind=kint),
pointer :: mpc_dof(:)
102 real(kind=
kreal),
pointer :: mpc_val(:)
103 real(kind=
kreal),
pointer :: mpc_const(:)
113 integer(kind=kint) :: n_amp
114 character(len=HECMW_NAME_LEN),
pointer :: amp_name(:)
115 integer(kind=kint),
pointer :: amp_type_definition(:)
116 integer(kind=kint),
pointer :: amp_type_time(:)
117 integer(kind=kint),
pointer :: amp_type_value(:)
118 integer(kind=kint),
pointer :: amp_index(:)
119 real(kind=
kreal),
pointer :: amp_val(:)
120 real(kind=
kreal),
pointer :: amp_table(:)
138 integer(kind=kint) :: n_grp
139 integer(kind=kint) :: n_bc
140 character(HECMW_NAME_LEN),
pointer :: grp_name(:)
141 integer(kind=kint),
pointer :: grp_index(:)
142 integer(kind=kint),
pointer :: grp_item(:)
143 integer(kind=kint),
pointer :: bc_grp_id(:)
144 integer(kind=kint),
pointer :: bc_grp_type(:)
145 integer(kind=kint),
pointer :: bc_grp_index(:)
146 integer(kind=kint),
pointer :: bc_grp_dof(:)
147 real(kind=
kreal),
pointer :: bc_grp_val(:)
161 integer(kind=kint) :: n_grp
162 integer(kind=kint) :: n_bc
163 character(HECMW_NAME_LEN),
pointer :: grp_name(:)
164 integer(kind=kint),
pointer :: grp_index(:)
165 integer(kind=kint),
pointer :: grp_item(:)
166 integer(kind=kint),
pointer :: bc_grp_id(:)
167 integer(kind=kint),
pointer :: bc_grp_type(:)
168 integer(kind=kint),
pointer :: bc_grp_index(:)
169 real(kind=
kreal),
pointer :: bc_grp_val(:)
183 integer(kind=kint) :: n_grp
184 integer(kind=kint) :: n_bc
185 character(HECMW_NAME_LEN),
pointer:: grp_name(:)
186 integer(kind=kint),
pointer :: grp_index(:)
187 integer(kind=kint),
pointer :: grp_item(:)
188 integer(kind=kint),
pointer :: bc_grp_id(:)
189 integer(kind=kint),
pointer :: bc_grp_type(:)
190 integer(kind=kint),
pointer :: bc_grp_index(:)
191 real(kind=
kreal),
pointer :: bc_grp_val(:)
205 integer(kind=kint) :: n_pair
206 character(HECMW_NAME_LEN),
pointer:: name(:)
207 integer(kind=kint),
pointer ::
type(:)
208 integer(kind=kint),
pointer :: slave_grp_id(:)
209 integer(kind=kint),
pointer :: master_grp_id(:)
210 integer(kind=kint),
pointer :: slave_orisgrp_id(:)
225 integer(kind=kint),
pointer :: index(:)
226 integer(kind=kint),
pointer :: item_index(:)
227 integer(kind=kint),
pointer :: item_item(:)
241 character(HECMW_FILENAME_LEN) :: gridfile
242 character(HECMW_FILENAME_LEN),
pointer :: files(:)
243 character(HECMW_HEADER_LEN) :: header
244 integer(kind=kint) :: hecmw_flag_adapt
245 integer(kind=kint) :: hecmw_flag_initcon
246 integer(kind=kint) :: hecmw_n_file
247 integer(kind=kint) :: hecmw_flag_parttype
248 integer(kind=kint) :: hecmw_flag_partdepth
249 integer(kind=kint) :: hecmw_flag_version
250 integer(kind=kint) :: hecmw_flag_partcontact
255 integer(kind=kint) :: n_node
256 integer(kind=kint) :: n_node_gross
258 integer(kind=kint) :: nn_middle
259 integer(kind=kint) :: nn_internal
260 integer(kind=kint) :: n_dof
261 integer(kind=kint) :: n_dof_grp
262 integer(kind=kint) :: n_dof_tot
264 integer(kind=kint),
pointer :: node_id(:)
265 integer(kind=kint),
pointer :: global_node_id(:)
266 integer(kind=kint),
pointer :: node_val_index(:)
267 real(kind=
kreal),
pointer :: node_val_item(:)
268 integer(kind=kint),
pointer :: node_dof_index(:)
269 integer(kind=kint),
pointer :: node_dof_item(:)
270 integer(kind=kint),
pointer :: node_init_val_index(:)
271 real(kind=
kreal),
pointer :: node_init_val_item(:)
272 integer(kind=kint),
pointer :: node_internal_list(:)
276 integer(kind=kint) :: n_elem
277 integer(kind=kint) :: n_elem_gross
278 integer(kind=kint) :: ne_internal
279 integer(kind=kint) :: n_elem_type
280 integer(kind=kint) :: n_elem_mat_id
281 integer(kind=kint),
pointer :: elem_type_index(:)
282 integer(kind=kint),
pointer :: elem_type_item(:)
283 integer(kind=kint),
pointer :: elem_type(:)
284 integer(kind=kint),
pointer :: section_id(:)
285 integer(kind=kint),
pointer :: elem_mat_id_index(:)
286 integer(kind=kint),
pointer :: elem_mat_id_item(:)
287 integer(kind=kint),
pointer :: elem_node_index(:)
288 integer(kind=kint),
pointer :: elem_node_item(:)
289 integer(kind=kint),
pointer :: elem_id(:)
290 integer(kind=kint),
pointer :: global_elem_id(:)
291 integer(kind=kint),
pointer :: elem_internal_list(:)
292 integer(kind=kint),
pointer :: elem_mat_int_index(:)
293 real(kind=
kreal),
pointer :: elem_mat_int_val(:)
294 integer(kind=kint),
pointer :: elem_val_index(:)
295 real(kind=
kreal),
pointer :: elem_val_item(:)
302 integer(kind=kint) :: zero
303 integer(kind=kint) :: mpi_comm
304 integer(kind=kint) :: petot
305 integer(kind=kint) :: pesmptot
306 integer(kind=kint) :: my_rank
307 integer(kind=kint) :: errnof
308 integer(kind=kint) :: n_subdomain
309 integer(kind=kint) :: n_neighbor_pe
310 integer(kind=kint),
pointer :: neighbor_pe(:)
311 integer(kind=kint),
pointer :: import_index(:)
312 integer(kind=kint),
pointer :: import_item(:)
313 integer(kind=kint),
pointer :: export_index(:)
314 integer(kind=kint),
pointer :: export_item(:)
315 integer(kind=kint),
pointer :: shared_index(:)
316 integer(kind=kint),
pointer :: shared_item(:)
321 integer(kind=kint) :: coarse_grid_level
322 integer(kind=kint) :: n_adapt
323 integer(kind=kint),
pointer :: when_i_was_refined_node(:)
324 integer(kind=kint),
pointer :: when_i_was_refined_elem(:)
325 integer(kind=kint),
pointer :: adapt_parent_type(:)
326 integer(kind=kint),
pointer :: adapt_type (:)
327 integer(kind=kint),
pointer :: adapt_level(:)
328 integer(kind=kint),
pointer :: adapt_parent(:)
329 integer(kind=kint),
pointer :: adapt_children_index(:)
330 integer(kind=kint),
pointer :: adapt_children_item(:)
332 integer(kind=kint) :: nn_array, ne_array, nx_array
333 integer(kind=kint) :: n_adapt_edge, n_adapt_edge_global
334 integer(kind=kint) :: n_adapt_act_node, n_adapt_act_edge
335 integer(kind=kint) :: n_adapt_act_elem, n_adapt_act_elem_cur
336 integer(kind=kint) :: n_adapt_elem_341, n_adapt_elem_351
337 integer(kind=kint) :: n_adapt_elem_341_cur, n_adapt_elem_351_cur
338 integer(kind=kint) :: n_adapt_act_elem_341, n_adapt_act_elem_351
340 integer(kind=kint) :: n_adapt_node_cur, nn_adapt_internal_cur
341 integer(kind=kint) :: n_adapt_node_old, nn_adapt_internal_old
342 integer(kind=kint) :: n_adapt_elem_cur, n_adapt_elem_old
344 integer(kind=kint),
pointer :: adapt_edge_node(:), adapt_mid_edge (:)
345 integer(kind=kint),
pointer :: adapt_iemb (:), adapt_edge_home(:)
346 integer(kind=kint),
pointer :: adapt_act_edge (:)
348 integer(kind=kint),
pointer :: &
349 & adapt_import_edge_index(:), adapt_import_edge_item (:),&
350 & adapt_export_edge_index(:), adapt_export_edge_item (:),&
351 & adapt_import_elem_index(:), adapt_import_elem_item (:),&
352 & adapt_export_elem_index(:), adapt_export_elem_item (:),&
353 & adapt_import_new_index (:), adapt_import_new_item (:),&
354 & adapt_export_new_index (:), adapt_export_new_item (:)
355 integer(kind=kint),
pointer :: rev_neighbor_pe(:)
356 integer(kind=kint),
pointer :: adapt_act_elem_341(:)
357 integer(kind=kint),
pointer :: adapt_act_elem_351(:)
358 integer(kind=kint),
pointer :: adapt_oldtonew_node(:), adapt_newtoold_node(:)
359 integer(kind=kint),
pointer :: adapt_oldtonew_elem(:), adapt_newtoold_elem(:)
360 integer(kind=kint),
pointer :: adapt_iwk(:), adapt_children_local(:)
365 integer(kind=kint) :: n_refine
366 integer(kind=kint),
pointer :: node_old2new(:)
367 integer(kind=kint),
pointer :: node_new2old(:)
368 integer(kind=kint),
pointer :: elem_old2new(:)
369 integer(kind=kint),
pointer :: elem_new2old(:)
370 integer(kind=kint),
pointer :: n_node_refine_hist(:)
404 integer(kind=kint) :: zero
405 integer(kind=kint) :: hecmw_comm
406 integer(kind=kint) :: petot
407 integer(kind=kint) :: pesmptot
408 integer(kind=kint) :: my_rank
409 integer(kind=kint) :: errnof
410 integer(kind=kint) :: n_subdomain
411 integer(kind=kint) :: n_neighbor_pe
412 integer(kind=kint),
dimension(:),
pointer :: neighbor_pe
413 integer(kind=kint),
dimension(:),
pointer :: import_index
414 integer(kind=kint),
dimension(:),
pointer :: import_item
415 integer(kind=kint),
dimension(:),
pointer :: export_index
416 integer(kind=kint),
dimension(:),
pointer :: export_item
417 integer(kind=kint),
dimension(:),
pointer :: shared_index
418 integer(kind=kint),
dimension(:),
pointer :: shared_item
422 integer(kind=kint) :: i
423 integer(kind=kint) :: j
424 real(kind=
kreal),
dimension(3,3) :: val
430 integer(kind=kint) :: num_lagrange = 0
431 integer(kind=kint) :: numl_lagrange = 0
432 integer(kind=kint) :: numu_lagrange = 0
434 integer(kind=kint),
pointer :: indexl_lagrange(:) => null()
435 integer(kind=kint),
pointer :: indexu_lagrange(:) => null()
437 integer(kind=kint),
pointer :: iteml_lagrange(:) => null()
438 integer(kind=kint),
pointer :: itemu_lagrange(:) => null()
440 real(kind=
kreal),
pointer :: al_lagrange(:) => null()
441 real(kind=
kreal),
pointer :: au_lagrange(:) => null()
443 real(kind=
kreal),
pointer :: lagrange(:) => null()
445 integer(kind=kint),
pointer :: lag_node_table(:) => null()
449 integer(kind=kint) :: n, np, npl, npu, ndof
450 real(kind=
kreal),
pointer :: d(:), b(:), x(:), alu(:)
451 real(kind=
kreal),
pointer :: al(:), au(:)
452 integer(kind=kint),
pointer :: indexl(:), indexu(:)
453 integer(kind=kint),
pointer :: iteml(:), itemu(:)
454 integer(kind=kint ),
dimension(100) :: iarray
455 real (kind=
kreal),
dimension(100) :: rarray
456 logical :: symmetric = .true.
468 character(len=HECMW_FILENAME_LEN):: ctrlfile =
"hecmw_ctrl.dat"
481 character(len=HECMW_FILENAME_LEN):: ctrlfile
482 integer(kind=kint) :: ierr
486 call mpi_comm_size (mpi_comm_world, hecmw_petot, ierr)
487 call mpi_comm_rank (mpi_comm_world, hecmw_rank, ierr)
488 call mpi_comm_dup (mpi_comm_world, hecmw_comm, ierr)
489 call mpi_comm_group(mpi_comm_world, hecmw_group, ierr)
520 integer(kind=kint) :: ierr
525 call mpi_finalize(ierr)
538 integer(kind=kint) :: comm, errorcode, ierror
541 call mpi_abort(comm, errorcode, ierror)
575 integer(kind=kint) :: comm
586 integer(kind=kint) :: rank
597 integer(kind=kint) :: comm_size
599 comm_size = hecmw_petot
607 nullify( p%sect_type )
608 nullify( p%sect_opt )
609 nullify( p%sect_mat_ID_index )
610 nullify( p%sect_mat_ID_item )
611 nullify( p%sect_I_index )
612 nullify( p%sect_I_item )
613 nullify( p%sect_R_index )
614 nullify( p%sect_R_item )
619 nullify( p%mat_name )
620 nullify( p%mat_item_index )
621 nullify( p%mat_subitem_index )
622 nullify( p%mat_table_index )
624 nullify( p%mat_temp )
629 nullify( p%mpc_index )
630 nullify( p%mpc_item )
633 nullify( p%mpc_const )
638 integer(kind=kint),
intent(in) :: n_mpc
639 integer(kind=kint),
intent(in) :: n_item
642 allocate( mpc%mpc_index(0:n_mpc) )
643 allocate( mpc%mpc_item(n_item) )
644 allocate( mpc%mpc_dof(n_item) )
645 allocate( mpc%mpc_val(n_item) )
650 if(
associated(p%mpc_index) )
deallocate( p%mpc_index )
651 if(
associated(p%mpc_item) )
deallocate( p%mpc_item )
652 if(
associated(p%mpc_dof) )
deallocate( p%mpc_dof )
653 if(
associated(p%mpc_val) )
deallocate( p%mpc_val )
658 nullify( p%amp_name )
659 nullify( p%amp_type_definition )
660 nullify( p%amp_type_time )
661 nullify( p%amp_type_value )
662 nullify( p%amp_index )
664 nullify( p%amp_table )
669 nullify( p%grp_name )
670 nullify( p%grp_index )
671 nullify( p%grp_item )
672 nullify( p%bc_grp_ID )
673 nullify( p%bc_grp_type )
674 nullify( p%bc_grp_index )
675 nullify( p%bc_grp_dof )
676 nullify( p%bc_grp_val )
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_val )
692 nullify( p%grp_name )
693 nullify( p%grp_index )
694 nullify( p%grp_item )
695 nullify( p%bc_grp_ID )
696 nullify( p%bc_grp_type )
697 nullify( p%bc_grp_index )
698 nullify( p%bc_grp_val )
705 nullify( p%slave_grp_id )
706 nullify( p%slave_orisgrp_id )
707 nullify( p%master_grp_id )
713 nullify( p%item_index )
714 nullify( p%item_item )
722 nullify( p%global_node_ID )
723 nullify( p%node_val_index )
724 nullify( p%node_val_item )
725 nullify( p%node_dof_index )
726 nullify( p%node_dof_item )
727 nullify( p%node_init_val_index )
728 nullify( p%node_init_val_item )
729 nullify( p%node_internal_list )
730 nullify( p%elem_type_index )
731 nullify( p%elem_type_item )
732 nullify( p%elem_type )
733 nullify( p%section_ID )
734 nullify( p%elem_mat_ID_index )
735 nullify( p%elem_mat_ID_item )
736 nullify( p%elem_node_index )
737 nullify( p%elem_node_item )
739 nullify( p%global_elem_ID )
740 nullify( p%elem_internal_list )
741 nullify( p%elem_mat_int_index )
742 nullify( p%elem_mat_int_val )
743 nullify( p%elem_val_index )
744 nullify( p%elem_val_item )
745 nullify( p%neighbor_pe )
746 nullify( p%import_index )
747 nullify( p%import_item )
748 nullify( p%export_index )
749 nullify( p%export_item )
750 nullify( p%shared_index )
751 nullify( p%shared_item )
752 nullify( p%when_i_was_refined_node )
753 nullify( p%when_i_was_refined_elem )
754 nullify( p%adapt_parent_type )
755 nullify( p%adapt_type )
756 nullify( p%adapt_level )
757 nullify( p%adapt_parent )
758 nullify( p%adapt_children_index )
759 nullify( p%adapt_children_item )
760 nullify( p%adapt_edge_node )
761 nullify( p%adapt_mid_edge )
762 nullify( p%adapt_iemb )
763 nullify( p%adapt_edge_home )
764 nullify( p%adapt_act_edge )
765 nullify( p%adapt_import_edge_index )
766 nullify( p%adapt_import_edge_item )
767 nullify( p%adapt_export_edge_index )
768 nullify( p%adapt_export_edge_item )
769 nullify( p%adapt_import_elem_index )
770 nullify( p%adapt_import_elem_item )
771 nullify( p%adapt_export_elem_index )
772 nullify( p%adapt_export_elem_item )
773 nullify( p%adapt_import_new_index )
774 nullify( p%adapt_import_new_item )
775 nullify( p%adapt_export_new_index )
776 nullify( p%adapt_export_new_item )
777 nullify( p%rev_neighbor_pe )
778 nullify( p%adapt_act_elem_341 )
779 nullify( p%adapt_act_elem_351 )
780 nullify( p%adapt_OLDtoNEW_node )
781 nullify( p%adapt_NEWtoOLD_node )
782 nullify( p%adapt_OLDtoNEW_elem )
783 nullify( p%adapt_NEWtoOLD_elem )
784 nullify( p%adapt_IWK )
785 nullify( p%adapt_children_local )
786 nullify( p%node_old2new )
787 nullify( p%node_new2old )
788 nullify( p%elem_old2new )
789 nullify( p%elem_new2old )
790 nullify( p%n_node_refine_hist )
807 nullify( p%neighbor_pe )
808 nullify( p%import_index )
809 nullify( p%import_item )
810 nullify( p%export_index )
811 nullify( p%export_item )
812 nullify( p%shared_index )
813 nullify( p%shared_item )
831 character(len=*),
intent(in) :: fname
834 integer :: i, nf, nBlock
837 nblock = p%NDOF * p%NDOF
838 open( unit=nf, file=fname, iostat=io_stat)
839 if( io_stat /= 0 )
return
840 write( nf, * ) p%N,p%NP,p%NPL,p%NPU,p%NDOF
843 write( nf,* ) p%indexL(i), p%indexU(i)
847 write( nf,* ) p%itemL(i)
849 do i=1,nblock * p%NPL
850 write( nf,* ) p%AL(i)
854 write( nf,* ) p%itemU(i)
856 do i=1,nblock * p%NPU
857 write( nf,* ) p%AU(i)
861 write( nf, * ) p%D(i)
865 write( nf, * ) p%B(i)
872 character(len=*),
intent(in) :: fname
875 integer :: i, nf, nBlock, istat
877 open( unit=nf, file=fname, status=
'old', iostat= istat)
879 print *,
"cannot open file ",fname
882 read( nf, * ) p%N,p%NP,p%NPL,p%NPU,p%NDOF
883 nblock = p%NDOF * p%NDOF
886 allocate( p%indexL(0:p%NP), p%indexU(0:p%NP) )
887 allocate( p%itemL(p%NPL), p%itemU(p%NPU) )
888 allocate( p%AL(p%NPL*nblock), p%AU(p%NPU*nblock) )
889 allocate( p%D(p%NP*nblock) )
890 allocate( p%B(p%NDOF*p%NP) )
893 read( nf,* ) p%indexL(i), p%indexU(i)
897 read( nf,* ) p%itemL(i)
899 do i=1,nblock * p%NPL
904 read( nf,* ) p%itemU(i)
906 do i=1,nblock * p%NPU
922 type (hecmwST_matrix ) :: hecMATorig
923 type (hecmwST_matrix ),
pointer :: hecMAT
927 hecmat%B => hecmatorig%B
928 hecmat%X => hecmatorig%X
929 hecmat%D => hecmatorig%D
930 hecmat%AL => hecmatorig%AL
931 hecmat%AU => hecmatorig%AU
932 hecmat%indexL => hecmatorig%indexL
933 hecmat%indexU => hecmatorig%indexU
934 hecmat%itemL => hecmatorig%itemL
935 hecmat%itemU => hecmatorig%itemU
936 hecmat%N = hecmatorig%N
937 hecmat%NP = hecmatorig%NP
938 hecmat%NPL = hecmatorig%NPL
939 hecmat%NPU = hecmatorig%NPU
940 hecmat%NDOF = hecmatorig%NDOF
941 hecmat%Iarray = hecmatorig%Iarray
942 hecmat%Rarray = hecmatorig%Rarray
946 type (hecmwST_matrix ) :: hecMATorig
947 type (hecmwST_matrix ),
pointer :: hecMAT
948 integer(kind=kint) NDOF,NDOF2,N,NP,NPL,NPU
953 ndof = hecmatorig%NDOF
963 allocate(hecmat%B(ndof*np))
964 allocate(hecmat%X(ndof*np))
965 allocate(hecmat%D(ndof2*np))
966 allocate(hecmat%AU(ndof2*npu))
967 allocate(hecmat%AL(ndof2*npl))
968 allocate(hecmat%indexL(0:np), hecmat%indexU(0:np), hecmat%itemL(npl), hecmat%itemU(npu))
969 hecmat%B = hecmatorig%B
970 hecmat%X = hecmatorig%X
971 hecmat%D = hecmatorig%D
972 hecmat%AU = hecmatorig%AU
973 hecmat%AL = hecmatorig%AL
974 hecmat%indexL = hecmatorig%indexL
975 hecmat%indexU = hecmatorig%indexU
976 hecmat%itemL = hecmatorig%itemL
977 hecmat%itemU = hecmatorig%itemU
978 hecmat%Iarray = hecmatorig%Iarray
979 hecmat%Rarray = hecmatorig%Rarray
983 type (hecmwST_matrix ) :: hecMATorig
984 type (hecmwST_matrix ),
pointer :: hecMAT
985 integer(kind=kint) NDOF,NDOF2,oNDOF,oNDOF2,i,j,k
988 ondof = hecmatorig%NDOF
993 allocate(hecmat%B(ndof*hecmatorig%NP))
994 allocate(hecmat%X(ndof*hecmatorig%NP))
995 allocate(hecmat%D(ndof2*hecmatorig%NP))
996 allocate(hecmat%AL(ndof2*hecmatorig%NPL))
997 allocate(hecmat%AU(ndof2*hecmatorig%NPU))
998 hecmat%indexL => hecmatorig%indexL
999 hecmat%indexU => hecmatorig%indexU
1000 hecmat%itemL => hecmatorig%itemL
1001 hecmat%itemU => hecmatorig%itemU
1002 hecmat%N = hecmatorig%N
1003 hecmat%NP = hecmatorig%NP
1004 hecmat%NPL = hecmatorig%NPL
1005 hecmat%NPU = hecmatorig%NPU
1007 hecmat%Iarray = hecmatorig%Iarray
1008 hecmat%Rarray = hecmatorig%Rarray
1010 do i = 1, hecmatorig%NP
1013 if (j<=ondof .and. k<=ondof)
then
1014 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%D(ondof2*(i-1) + (j-1)*ondof + k)
1017 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k)=1
1019 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k)=0
1024 hecmat%B(ndof*(i-1) + j) = hecmatorig%B(ondof*(i-1) + j)
1026 hecmat%B(ndof*(i-1) + j)=0
1030 do i = 1, hecmatorig%NPL
1033 if (j<=ondof .and. k<=ondof)
then
1034 hecmat%AL(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%AL(ondof2*(i-1) + (j-1)*ondof + k)
1036 hecmat%AL(ndof2*(i-1) + (j-1)*ndof + k) = 0
1041 do i = 1, hecmatorig%NPU
1044 if (j<=ondof .and. k<=ondof)
then
1045 hecmat%AU(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%AU(ondof2*(i-1) + (j-1)*ondof + k)
1047 hecmat%AU(ndof2*(i-1) + (j-1)*ndof + k) = 0
1054 type (hecmwST_matrix ) :: hecMATorig
1055 type (hecmwST_matrix ),
pointer :: hecMAT
1056 integer(kind=kint) NDOF,NDOF2,oNDOF,i,j
1058 ondof = hecmatorig%NDOF
1059 do i = 1, hecmatorig%NP
1061 hecmatorig%X(ondof*(i-1) + j) = hecmat%X(ndof*(i-1) + j)
1064 hecmatorig%Iarray = hecmat%Iarray
1065 hecmatorig%Rarray = hecmat%Rarray
1066 deallocate(hecmat%B)
1067 deallocate(hecmat%D)
1068 deallocate(hecmat%X)
1069 deallocate(hecmat%AL)
1070 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)
integer(kind=kint), parameter hecmw_sect_type_interface
integer(kind=kint), parameter hecmw_contact_type_node_surf
integer(kind=kint), parameter hecmw_land
integer(kind=kint), parameter hecmw_sect_opt_pstrain
integer(kind=kint), parameter hecmw_sum
integer(kind=kint), parameter hecmw_sect_type_beam
subroutine hecmw_print_matrix(fname, P)
integer(kind=kint), parameter hecmw_flag_partcontact_distribute
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_nullify_material(P)
subroutine hecmw_copy_matrix(hecMATorig, hecMAT)
integer(kind=kint), parameter hecmw_sect_opt_pstress_ri
integer(kind=kint) function hecmw_comm_get_size()
subroutine hecmw_nullify_matrix_comm(P)
subroutine hecmw_nullify_mpc(P)
integer(kind=kint), parameter hecmw_sect_type_shell
integer(kind=kint), parameter hecmw_prod
integer(kind=4), parameter kint
subroutine hecmw_init_ex(ctrlfile)
integer(kind=kint) function hecmw_comm_get_comm()
subroutine hecmw_nullify_contact_pair(P)
integer(kind=kint), parameter hecmw_single_precision
integer(kind=kint), parameter hecmw_max
integer(kind=kint), parameter hecmw_contact_type_node_elem
integer(kind=4), parameter kreal
subroutine hecmw_nullify_surf_grp(P)
integer(kind=kint), parameter hecmw_bcgrptype_flux
integer(kind=kint), parameter hecmw_sect_opt_pstress
integer(kind=kint), parameter hecmw_lor
integer(kind=kint), parameter hecmw_header_len
subroutine hecmw_nullify_node_grp(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()
integer(kind=kint), parameter hecmw_flag_parttype_nodebased
integer(kind=kint), parameter hecmw_min
integer(kind=kint), parameter hecmw_amp_typeval_relative
subroutine hecmw_nullify_refine_origin(P)
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
integer(kind=kint), parameter hecmw_amp_typetime_step
subroutine hecmw_nullify_elem_grp(P)
subroutine hecmw_nullify_matrix(P)
subroutine hecmw_blockmatrix_expand(hecMATorig, hecMAT, NDOF)
integer(kind=kint), parameter hecmw_sect_opt_pstrain_ri
subroutine hecmw_nullify_section(P)
subroutine hecmw_clone_matrix(hecMATorig, hecMAT)
subroutine hecmw_initialize_mpc(mpc, n_mpc, n_item)
subroutine hecmw_nullify_mesh(P)
integer(kind=kint), parameter hecmw_filename_len
integer(kind=kint), parameter hecmw_sect_opt_asymmetry_ri
integer(kind=kint), parameter hecmw_name_len
integer(kind=kint), parameter hecmw_character
subroutine hecmw_abort(comm)
subroutine hecmw_finalize_mpc(P)
subroutine hecmw_nullify_amplitude(P)
integer(kind=kint), parameter hecmw_flag_partcontact_unknown
real(kind=kreal) function hecmw_wtime()
integer(kind=kint), parameter hecmw_amp_typedef_tabular
subroutine hecmw_vector_contract(hecMATorig, hecMAT, NDOF)
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
Structure for Lagrange multiplier-related part of stiffness matrix (Lagrange multiplier-related matri...