12 private :: hecmw_petot,hecmw_rank,hecmw_comm,hecmw_group
15 integer(kind=4),
parameter::
kint = 4
16 integer(kind=4),
parameter::
kreal = 8
49 integer(kind=kint) :: hecmw_petot,hecmw_rank,hecmw_comm,hecmw_group
56 integer(kind=kint) :: n_sect
57 integer(kind=kint),
pointer :: sect_type(:)
58 integer(kind=kint),
pointer :: sect_opt(:)
59 integer(kind=kint),
pointer :: sect_mat_id_index(:)
60 integer(kind=kint),
pointer :: sect_mat_id_item(:)
61 integer(kind=kint),
pointer :: sect_i_index(:)
62 integer(kind=kint),
pointer :: sect_i_item(:)
63 integer(kind=kint),
pointer :: sect_r_index(:)
64 real(kind=
kreal),
pointer :: sect_r_item(:)
65 integer(kind=kint),
pointer :: sect_orien_id(:) => null()
88 integer(kind=kint) :: n_mat
89 integer(kind=kint) :: n_mat_item
90 integer(kind=kint) :: n_mat_subitem
91 integer(kind=kint) :: n_mat_table
92 character(HECMW_NAME_LEN),
pointer :: mat_name(:)
93 integer(kind=kint),
pointer :: mat_item_index(:)
94 integer(kind=kint),
pointer :: mat_subitem_index(:)
95 integer(kind=kint),
pointer :: mat_table_index(:)
96 real(kind=
kreal),
pointer :: mat_val(:)
97 real(kind=
kreal),
pointer :: mat_temp(:)
107 integer(kind=kint) :: n_mpc
108 integer(kind=kint),
pointer :: mpc_index(:)
109 integer(kind=kint),
pointer :: mpc_item(:)
110 integer(kind=kint),
pointer :: mpc_dof(:)
111 real(kind=
kreal),
pointer :: mpc_val(:)
112 real(kind=
kreal),
pointer :: mpc_const(:)
122 integer(kind=kint) :: n_amp
123 character(len=HECMW_NAME_LEN),
pointer :: amp_name(:)
124 integer(kind=kint),
pointer :: amp_type_definition(:)
125 integer(kind=kint),
pointer :: amp_type_time(:)
126 integer(kind=kint),
pointer :: amp_type_value(:)
127 integer(kind=kint),
pointer :: amp_index(:)
128 real(kind=
kreal),
pointer :: amp_val(:)
129 real(kind=
kreal),
pointer :: amp_table(:)
148 integer(kind=kint) :: n_grp
149 integer(kind=kint) :: n_bc
150 character(HECMW_NAME_LEN),
pointer :: grp_name(:)
151 integer(kind=kint),
pointer :: grp_index(:)
152 integer(kind=kint),
pointer :: grp_item(:)
153 integer(kind=kint),
pointer :: bc_grp_id(:)
154 integer(kind=kint),
pointer :: bc_grp_type(:)
155 integer(kind=kint),
pointer :: bc_grp_index(:)
156 integer(kind=kint),
pointer :: bc_grp_dof(:)
157 real(kind=
kreal),
pointer :: bc_grp_val(:)
171 integer(kind=kint) :: n_grp
172 integer(kind=kint) :: n_bc
173 character(HECMW_NAME_LEN),
pointer :: grp_name(:)
174 integer(kind=kint),
pointer :: grp_index(:)
175 integer(kind=kint),
pointer :: grp_item(:)
176 integer(kind=kint),
pointer :: bc_grp_id(:)
177 integer(kind=kint),
pointer :: bc_grp_type(:)
178 integer(kind=kint),
pointer :: bc_grp_index(:)
179 real(kind=
kreal),
pointer :: bc_grp_val(:)
193 integer(kind=kint) :: n_grp
194 integer(kind=kint) :: n_bc
195 character(HECMW_NAME_LEN),
pointer:: grp_name(:)
196 integer(kind=kint),
pointer :: grp_index(:)
197 integer(kind=kint),
pointer :: grp_item(:)
198 integer(kind=kint),
pointer :: bc_grp_id(:)
199 integer(kind=kint),
pointer :: bc_grp_type(:)
200 integer(kind=kint),
pointer :: bc_grp_index(:)
201 real(kind=
kreal),
pointer :: bc_grp_val(:)
215 integer(kind=kint) :: n_pair
216 character(HECMW_NAME_LEN),
pointer:: name(:)
217 integer(kind=kint),
pointer ::
type(:)
218 integer(kind=kint),
pointer :: slave_grp_id(:)
219 integer(kind=kint),
pointer :: master_grp_id(:)
220 integer(kind=kint),
pointer :: slave_orisgrp_id(:)
235 integer(kind=kint),
pointer :: index(:)
236 integer(kind=kint),
pointer :: item_index(:)
237 integer(kind=kint),
pointer :: item_item(:)
251 character(HECMW_FILENAME_LEN) :: gridfile
252 character(HECMW_FILENAME_LEN),
pointer :: files(:)
253 character(HECMW_HEADER_LEN) :: header
254 integer(kind=kint) :: hecmw_flag_adapt
255 integer(kind=kint) :: hecmw_flag_initcon
256 integer(kind=kint) :: hecmw_n_file
257 integer(kind=kint) :: hecmw_flag_parttype
258 integer(kind=kint) :: hecmw_flag_partdepth
259 integer(kind=kint) :: hecmw_flag_version
260 integer(kind=kint) :: hecmw_flag_partcontact
265 integer(kind=kint) :: n_node
266 integer(kind=kint) :: n_node_gross
268 integer(kind=kint) :: nn_middle
269 integer(kind=kint) :: nn_internal
270 integer(kind=kint) :: n_dof
271 integer(kind=kint) :: n_dof_grp
272 integer(kind=kint) :: n_dof_tot
274 integer(kind=kint),
pointer :: node_id(:)
275 integer(kind=kint),
pointer :: global_node_id(:)
276 integer(kind=kint),
pointer :: node_val_index(:)
277 real(kind=
kreal),
pointer :: node_val_item(:)
278 integer(kind=kint),
pointer :: node_dof_index(:)
279 integer(kind=kint),
pointer :: node_dof_item(:)
280 integer(kind=kint),
pointer :: node_init_val_index(:)
281 real(kind=
kreal),
pointer :: node_init_val_item(:)
282 integer(kind=kint),
pointer :: node_internal_list(:)
286 integer(kind=kint) :: n_elem
287 integer(kind=kint) :: n_elem_gross
288 integer(kind=kint) :: ne_internal
289 integer(kind=kint) :: n_elem_type
290 integer(kind=kint) :: n_elem_mat_id
291 integer(kind=kint),
pointer :: elem_type_index(:)
292 integer(kind=kint),
pointer :: elem_type_item(:)
293 integer(kind=kint),
pointer :: elem_type(:)
294 integer(kind=kint),
pointer :: section_id(:)
295 integer(kind=kint),
pointer :: elem_mat_id_index(:)
296 integer(kind=kint),
pointer :: elem_mat_id_item(:)
297 integer(kind=kint),
pointer :: elem_node_index(:)
298 integer(kind=kint),
pointer :: elem_node_item(:)
299 integer(kind=kint),
pointer :: elem_id(:)
300 integer(kind=kint),
pointer :: global_elem_id(:)
301 integer(kind=kint),
pointer :: elem_internal_list(:)
302 integer(kind=kint),
pointer :: elem_mat_int_index(:)
303 real(kind=
kreal),
pointer :: elem_mat_int_val(:)
304 integer(kind=kint),
pointer :: elem_val_index(:)
305 real(kind=
kreal),
pointer :: elem_val_item(:)
312 integer(kind=kint) :: zero
313 integer(kind=kint) :: mpi_comm
314 integer(kind=kint) :: petot
315 integer(kind=kint) :: pesmptot
316 integer(kind=kint) :: my_rank
317 integer(kind=kint) :: errnof
318 integer(kind=kint) :: n_subdomain
319 integer(kind=kint) :: n_neighbor_pe
320 integer(kind=kint),
pointer :: neighbor_pe(:)
321 integer(kind=kint),
pointer :: import_index(:)
322 integer(kind=kint),
pointer :: import_item(:)
323 integer(kind=kint),
pointer :: export_index(:)
324 integer(kind=kint),
pointer :: export_item(:)
325 integer(kind=kint),
pointer :: shared_index(:)
326 integer(kind=kint),
pointer :: shared_item(:)
331 integer(kind=kint) :: coarse_grid_level
332 integer(kind=kint) :: n_adapt
333 integer(kind=kint),
pointer :: when_i_was_refined_node(:)
334 integer(kind=kint),
pointer :: when_i_was_refined_elem(:)
335 integer(kind=kint),
pointer :: adapt_parent_type(:)
336 integer(kind=kint),
pointer :: adapt_type (:)
337 integer(kind=kint),
pointer :: adapt_level(:)
338 integer(kind=kint),
pointer :: adapt_parent(:)
339 integer(kind=kint),
pointer :: adapt_children_index(:)
340 integer(kind=kint),
pointer :: adapt_children_item(:)
342 integer(kind=kint) :: nn_array, ne_array, nx_array
343 integer(kind=kint) :: n_adapt_edge, n_adapt_edge_global
344 integer(kind=kint) :: n_adapt_act_node, n_adapt_act_edge
345 integer(kind=kint) :: n_adapt_act_elem, n_adapt_act_elem_cur
346 integer(kind=kint) :: n_adapt_elem_341, n_adapt_elem_351
347 integer(kind=kint) :: n_adapt_elem_341_cur, n_adapt_elem_351_cur
348 integer(kind=kint) :: n_adapt_act_elem_341, n_adapt_act_elem_351
350 integer(kind=kint) :: n_adapt_node_cur, nn_adapt_internal_cur
351 integer(kind=kint) :: n_adapt_node_old, nn_adapt_internal_old
352 integer(kind=kint) :: n_adapt_elem_cur, n_adapt_elem_old
354 integer(kind=kint),
pointer :: adapt_edge_node(:), adapt_mid_edge (:)
355 integer(kind=kint),
pointer :: adapt_iemb (:), adapt_edge_home(:)
356 integer(kind=kint),
pointer :: adapt_act_edge (:)
358 integer(kind=kint),
pointer :: &
359 & adapt_import_edge_index(:), adapt_import_edge_item (:),&
360 & adapt_export_edge_index(:), adapt_export_edge_item (:),&
361 & adapt_import_elem_index(:), adapt_import_elem_item (:),&
362 & adapt_export_elem_index(:), adapt_export_elem_item (:),&
363 & adapt_import_new_index (:), adapt_import_new_item (:),&
364 & adapt_export_new_index (:), adapt_export_new_item (:)
365 integer(kind=kint),
pointer :: rev_neighbor_pe(:)
366 integer(kind=kint),
pointer :: adapt_act_elem_341(:)
367 integer(kind=kint),
pointer :: adapt_act_elem_351(:)
368 integer(kind=kint),
pointer :: adapt_oldtonew_node(:), adapt_newtoold_node(:)
369 integer(kind=kint),
pointer :: adapt_oldtonew_elem(:), adapt_newtoold_elem(:)
370 integer(kind=kint),
pointer :: adapt_iwk(:), adapt_children_local(:)
375 integer(kind=kint) :: n_refine
376 integer(kind=kint),
pointer :: node_old2new(:)
377 integer(kind=kint),
pointer :: node_new2old(:)
378 integer(kind=kint),
pointer :: elem_old2new(:)
379 integer(kind=kint),
pointer :: elem_new2old(:)
380 integer(kind=kint),
pointer :: n_node_refine_hist(:)
422 integer(kind=kint) :: zero
423 integer(kind=kint) :: hecmw_comm
424 integer(kind=kint) :: petot
425 integer(kind=kint) :: pesmptot
426 integer(kind=kint) :: my_rank
427 integer(kind=kint) :: errnof
428 integer(kind=kint) :: n_subdomain
429 integer(kind=kint) :: n_neighbor_pe
430 integer(kind=kint),
dimension(:),
pointer :: neighbor_pe
431 integer(kind=kint),
dimension(:),
pointer :: import_index
432 integer(kind=kint),
dimension(:),
pointer :: import_item
433 integer(kind=kint),
dimension(:),
pointer :: export_index
434 integer(kind=kint),
dimension(:),
pointer :: export_item
435 integer(kind=kint),
dimension(:),
pointer :: shared_index
436 integer(kind=kint),
dimension(:),
pointer :: shared_item
440 integer(kind=kint) :: i
441 integer(kind=kint) :: j
442 real(kind=
kreal),
dimension(3,3) :: val
448 integer(kind=kint) :: num_lagrange = 0
449 integer(kind=kint) :: numl_lagrange = 0
450 integer(kind=kint) :: numu_lagrange = 0
452 integer(kind=kint),
pointer :: indexl_lagrange(:) => null()
453 integer(kind=kint),
pointer :: indexu_lagrange(:) => null()
455 integer(kind=kint),
pointer :: iteml_lagrange(:) => null()
456 integer(kind=kint),
pointer :: itemu_lagrange(:) => null()
458 real(kind=
kreal),
pointer :: al_lagrange(:) => null()
459 real(kind=
kreal),
pointer :: au_lagrange(:) => null()
460 real(kind=
kreal),
pointer :: d_lagrange(:) => null()
462 real(kind=
kreal),
pointer :: lagrange(:) => null()
464 integer(kind=kint),
pointer :: lag_node_table(:) => null()
468 integer(kind=kint) :: n, np, npl, npu, npa, ndof
469 real(kind=
kreal),
pointer :: d(:), b(:), x(:)
470 real(kind=
kreal),
pointer :: al(:), au(:)
472 integer(kind=kint),
pointer :: indexl(:), indexu(:)
473 integer(kind=kint),
pointer :: indexa(:)
474 integer(kind=kint),
pointer :: iteml(:), itemu(:)
475 integer(kind=kint),
pointer :: itema(:)
476 integer(kind=kint ),
dimension(100) :: iarray
477 real (kind=
kreal),
dimension(100) :: rarray
478 logical :: symmetric = .true.
490 integer(kind=kint),
intent(in) :: flag_partcontact
495 integer(kind=kint),
intent(in) :: flag_partcontact
511 integer(kind=kint),
intent(in) :: nn
512 integer(kind=kint),
intent(in) :: nodlocal(:)
513 integer(kind=kint) :: j
517 if( nodlocal(j) <= hecmesh%nn_internal )
return
530 character(len=HECMW_FILENAME_LEN):: ctrlfile =
"hecmw_ctrl.dat"
535 integer(kind=kint) :: ierr
538 call mpi_comm_size (mpi_comm_world, hecmw_petot, ierr)
539 call mpi_comm_rank (mpi_comm_world, hecmw_rank, ierr)
540 call mpi_comm_dup (mpi_comm_world, hecmw_comm, ierr)
541 call mpi_comm_group(mpi_comm_world, hecmw_group, ierr)
567 character(len=HECMW_FILENAME_LEN):: ctrlfile
568 integer(kind=kint) :: ierr
593 integer(kind=kint) :: ierr
598 call mpi_finalize(ierr)
611 integer(kind=kint) :: comm
612 integer(kind=kint),
intent(in),
optional :: code
613 integer(kind=kint) :: errorcode, ierror
616 if(
present(code) ) errorcode = code
623 call mpi_abort(comm, errorcode, ierror)
657 integer(kind=kint) :: comm
668 integer(kind=kint) :: rank
679 integer(kind=kint) :: comm_size
681 comm_size = hecmw_petot
689 nullify( p%sect_type )
690 nullify( p%sect_opt )
691 nullify( p%sect_mat_ID_index )
692 nullify( p%sect_mat_ID_item )
693 nullify( p%sect_I_index )
694 nullify( p%sect_I_item )
695 nullify( p%sect_R_index )
696 nullify( p%sect_R_item )
701 nullify( p%mat_name )
702 nullify( p%mat_item_index )
703 nullify( p%mat_subitem_index )
704 nullify( p%mat_table_index )
706 nullify( p%mat_temp )
711 nullify( p%mpc_index )
712 nullify( p%mpc_item )
715 nullify( p%mpc_const )
720 integer(kind=kint),
intent(in) :: n_mpc
721 integer(kind=kint),
intent(in) :: n_item
724 allocate( mpc%mpc_index(0:n_mpc) )
725 allocate( mpc%mpc_item(n_item) )
726 allocate( mpc%mpc_dof(n_item) )
727 allocate( mpc%mpc_val(n_item) )
732 if(
associated(p%mpc_index) )
deallocate( p%mpc_index )
733 if(
associated(p%mpc_item) )
deallocate( p%mpc_item )
734 if(
associated(p%mpc_dof) )
deallocate( p%mpc_dof )
735 if(
associated(p%mpc_val) )
deallocate( p%mpc_val )
740 nullify( p%amp_name )
741 nullify( p%amp_type_definition )
742 nullify( p%amp_type_time )
743 nullify( p%amp_type_value )
744 nullify( p%amp_index )
746 nullify( p%amp_table )
751 nullify( p%grp_name )
752 nullify( p%grp_index )
753 nullify( p%grp_item )
754 nullify( p%bc_grp_ID )
755 nullify( p%bc_grp_type )
756 nullify( p%bc_grp_index )
757 nullify( p%bc_grp_dof )
758 nullify( p%bc_grp_val )
763 nullify( p%grp_name )
764 nullify( p%grp_index )
765 nullify( p%grp_item )
766 nullify( p%bc_grp_ID )
767 nullify( p%bc_grp_type )
768 nullify( p%bc_grp_index )
769 nullify( p%bc_grp_val )
774 nullify( p%grp_name )
775 nullify( p%grp_index )
776 nullify( p%grp_item )
777 nullify( p%bc_grp_ID )
778 nullify( p%bc_grp_type )
779 nullify( p%bc_grp_index )
780 nullify( p%bc_grp_val )
787 nullify( p%slave_grp_id )
788 nullify( p%slave_orisgrp_id )
789 nullify( p%master_grp_id )
795 nullify( p%item_index )
796 nullify( p%item_item )
804 nullify( p%global_node_ID )
805 nullify( p%node_val_index )
806 nullify( p%node_val_item )
807 nullify( p%node_dof_index )
808 nullify( p%node_dof_item )
809 nullify( p%node_init_val_index )
810 nullify( p%node_init_val_item )
811 nullify( p%node_internal_list )
812 nullify( p%elem_type_index )
813 nullify( p%elem_type_item )
814 nullify( p%elem_type )
815 nullify( p%section_ID )
816 nullify( p%elem_mat_ID_index )
817 nullify( p%elem_mat_ID_item )
818 nullify( p%elem_node_index )
819 nullify( p%elem_node_item )
821 nullify( p%global_elem_ID )
822 nullify( p%elem_internal_list )
823 nullify( p%elem_mat_int_index )
824 nullify( p%elem_mat_int_val )
825 nullify( p%elem_val_index )
826 nullify( p%elem_val_item )
827 nullify( p%neighbor_pe )
828 nullify( p%import_index )
829 nullify( p%import_item )
830 nullify( p%export_index )
831 nullify( p%export_item )
832 nullify( p%shared_index )
833 nullify( p%shared_item )
834 nullify( p%when_i_was_refined_node )
835 nullify( p%when_i_was_refined_elem )
836 nullify( p%adapt_parent_type )
837 nullify( p%adapt_type )
838 nullify( p%adapt_level )
839 nullify( p%adapt_parent )
840 nullify( p%adapt_children_index )
841 nullify( p%adapt_children_item )
842 nullify( p%adapt_edge_node )
843 nullify( p%adapt_mid_edge )
844 nullify( p%adapt_iemb )
845 nullify( p%adapt_edge_home )
846 nullify( p%adapt_act_edge )
847 nullify( p%adapt_import_edge_index )
848 nullify( p%adapt_import_edge_item )
849 nullify( p%adapt_export_edge_index )
850 nullify( p%adapt_export_edge_item )
851 nullify( p%adapt_import_elem_index )
852 nullify( p%adapt_import_elem_item )
853 nullify( p%adapt_export_elem_index )
854 nullify( p%adapt_export_elem_item )
855 nullify( p%adapt_import_new_index )
856 nullify( p%adapt_import_new_item )
857 nullify( p%adapt_export_new_index )
858 nullify( p%adapt_export_new_item )
859 nullify( p%rev_neighbor_pe )
860 nullify( p%adapt_act_elem_341 )
861 nullify( p%adapt_act_elem_351 )
862 nullify( p%adapt_OLDtoNEW_node )
863 nullify( p%adapt_NEWtoOLD_node )
864 nullify( p%adapt_OLDtoNEW_elem )
865 nullify( p%adapt_NEWtoOLD_elem )
866 nullify( p%adapt_IWK )
867 nullify( p%adapt_children_local )
868 nullify( p%node_old2new )
869 nullify( p%node_new2old )
870 nullify( p%elem_old2new )
871 nullify( p%elem_new2old )
872 nullify( p%n_node_refine_hist )
889 nullify( p%neighbor_pe )
890 nullify( p%import_index )
891 nullify( p%import_item )
892 nullify( p%export_index )
893 nullify( p%export_item )
894 nullify( p%shared_index )
895 nullify( p%shared_item )
915 character(len=*),
intent(in) :: fname
918 integer :: i, nf, nBlock
921 nblock = p%NDOF * p%NDOF
922 open( unit=nf, file=fname, iostat=io_stat)
923 if( io_stat /= 0 )
return
924 write( nf, * ) p%N,p%NP,p%NPL,p%NPU,p%NDOF
927 write( nf,* ) p%indexL(i), p%indexU(i)
931 write( nf,* ) p%itemL(i)
933 do i=1,nblock * p%NPL
934 write( nf,* ) p%AL(i)
938 write( nf,* ) p%itemU(i)
940 do i=1,nblock * p%NPU
941 write( nf,* ) p%AU(i)
945 write( nf, * ) p%D(i)
949 write( nf, * ) p%B(i)
956 character(len=*),
intent(in) :: fname
959 integer :: i, nf, nBlock, istat
961 open( unit=nf, file=fname, status=
'old', iostat= istat)
963 print *,
"cannot open file ",fname
966 read( nf, * ) p%N,p%NP,p%NPL,p%NPU,p%NDOF
967 nblock = p%NDOF * p%NDOF
970 allocate( p%indexL(0:p%NP), p%indexU(0:p%NP) )
971 allocate( p%itemL(p%NPL), p%itemU(p%NPU) )
972 allocate( p%AL(p%NPL*nblock), p%AU(p%NPU*nblock) )
973 allocate( p%D(p%NP*nblock) )
974 allocate( p%B(p%NDOF*p%NP) )
977 read( nf,* ) p%indexL(i), p%indexU(i)
981 read( nf,* ) p%itemL(i)
983 do i=1,nblock * p%NPL
988 read( nf,* ) p%itemU(i)
990 do i=1,nblock * p%NPU
1006 type (hecmwST_matrix ) :: hecMATorig
1007 type (hecmwST_matrix ),
pointer :: hecMAT
1011 hecmat%B => hecmatorig%B
1012 hecmat%X => hecmatorig%X
1013 hecmat%D => hecmatorig%D
1014 hecmat%AL => hecmatorig%AL
1015 hecmat%AU => hecmatorig%AU
1016 hecmat%indexL => hecmatorig%indexL
1017 hecmat%indexU => hecmatorig%indexU
1018 hecmat%itemL => hecmatorig%itemL
1019 hecmat%itemU => hecmatorig%itemU
1020 hecmat%N = hecmatorig%N
1021 hecmat%NP = hecmatorig%NP
1022 hecmat%NPL = hecmatorig%NPL
1023 hecmat%NPU = hecmatorig%NPU
1024 hecmat%NDOF = hecmatorig%NDOF
1025 hecmat%Iarray = hecmatorig%Iarray
1026 hecmat%Rarray = hecmatorig%Rarray
1030 type (hecmwST_matrix ) :: hecMATorig
1031 type (hecmwST_matrix ),
pointer :: hecMAT
1032 integer(kind=kint) NDOF,NDOF2,N,NP,NPL,NPU
1037 ndof = hecmatorig%NDOF
1040 npl = hecmatorig%NPL
1041 npu = hecmatorig%NPU
1047 allocate(hecmat%B(ndof*np))
1048 allocate(hecmat%X(ndof*np))
1049 allocate(hecmat%D(ndof2*np))
1050 allocate(hecmat%AU(ndof2*npu))
1051 allocate(hecmat%AL(ndof2*npl))
1052 allocate(hecmat%indexL(0:np), hecmat%indexU(0:np), hecmat%itemL(npl), hecmat%itemU(npu))
1053 hecmat%B = hecmatorig%B
1054 hecmat%X = hecmatorig%X
1055 hecmat%D = hecmatorig%D
1056 hecmat%AU = hecmatorig%AU
1057 hecmat%AL = hecmatorig%AL
1058 hecmat%indexL = hecmatorig%indexL
1059 hecmat%indexU = hecmatorig%indexU
1060 hecmat%itemL = hecmatorig%itemL
1061 hecmat%itemU = hecmatorig%itemU
1062 hecmat%Iarray = hecmatorig%Iarray
1063 hecmat%Rarray = hecmatorig%Rarray
1067 type (hecmwST_matrix ) :: hecMATorig
1068 type (hecmwST_matrix ),
pointer :: hecMAT
1069 integer(kind=kint) NDOF,NDOF2,oNDOF,oNDOF2,i,j,k
1072 ondof = hecmatorig%NDOF
1073 ondof2 = ondof*ondof
1077 allocate(hecmat%B(ndof*hecmatorig%NP))
1078 allocate(hecmat%X(ndof*hecmatorig%NP))
1079 allocate(hecmat%D(ndof2*hecmatorig%NP))
1080 allocate(hecmat%AL(ndof2*hecmatorig%NPL))
1081 allocate(hecmat%AU(ndof2*hecmatorig%NPU))
1082 hecmat%indexL => hecmatorig%indexL
1083 hecmat%indexU => hecmatorig%indexU
1084 hecmat%itemL => hecmatorig%itemL
1085 hecmat%itemU => hecmatorig%itemU
1086 hecmat%N = hecmatorig%N
1087 hecmat%NP = hecmatorig%NP
1088 hecmat%NPL = hecmatorig%NPL
1089 hecmat%NPU = hecmatorig%NPU
1091 hecmat%Iarray = hecmatorig%Iarray
1092 hecmat%Rarray = hecmatorig%Rarray
1094 do i = 1, hecmatorig%NP
1097 if (j<=ondof .and. k<=ondof)
then
1098 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%D(ondof2*(i-1) + (j-1)*ondof + k)
1101 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k)=1
1103 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k)=0
1108 hecmat%B(ndof*(i-1) + j) = hecmatorig%B(ondof*(i-1) + j)
1110 hecmat%B(ndof*(i-1) + j)=0
1114 do i = 1, hecmatorig%NPL
1117 if (j<=ondof .and. k<=ondof)
then
1118 hecmat%AL(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%AL(ondof2*(i-1) + (j-1)*ondof + k)
1120 hecmat%AL(ndof2*(i-1) + (j-1)*ndof + k) = 0
1125 do i = 1, hecmatorig%NPU
1128 if (j<=ondof .and. k<=ondof)
then
1129 hecmat%AU(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%AU(ondof2*(i-1) + (j-1)*ondof + k)
1131 hecmat%AU(ndof2*(i-1) + (j-1)*ndof + k) = 0
1138 type (hecmwST_matrix ) :: hecMATorig
1139 type (hecmwST_matrix ),
pointer :: hecMAT
1140 integer(kind=kint) NDOF,NDOF2,oNDOF,i,j
1142 ondof = hecmatorig%NDOF
1143 do i = 1, hecmatorig%NP
1145 hecmatorig%X(ondof*(i-1) + j) = hecmat%X(ndof*(i-1) + j)
1148 hecmatorig%Iarray = hecmat%Iarray
1149 hecmatorig%Rarray = hecmat%Rarray
1150 deallocate(hecmat%B)
1151 deallocate(hecmat%D)
1152 deallocate(hecmat%X)
1153 deallocate(hecmat%AL)
1154 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_flag_partcontact_owner_slave
integer(kind=kint), parameter hecmw_sect_type_interface
pure integer(kind=kint) function hecmw_partcontact_get_mode(flag_partcontact)
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_amp_typetime_total
integer(kind=kint), parameter hecmw_flag_partcontact_distribute
subroutine hecmw_init_nocontrol()
integer(kind=kint), parameter hecmw_integer
integer(kind=kint), parameter hecmw_contact_type_surf_surf
subroutine hecmw_abort(comm, code)
integer(kind=kint), parameter hecmw_flag_partcontact_aggregate
subroutine hecmw_comm_init
integer(kind=kint), parameter hecmw_exit_usage
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()
integer(kind=kint), parameter hecmw_exit_input
subroutine hecmw_nullify_matrix_comm(P)
integer(kind=kint), parameter hecmw_exit_model
subroutine hecmw_nullify_mpc(P)
integer(kind=kint), parameter hecmw_sect_type_shell
integer(kind=kint), parameter hecmw_prod
integer(kind=4), parameter kint
integer(kind=kint), parameter hecmw_exit_internal
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
pure logical function hecmw_has_internal_node(hecMESH, nn, nodLOCAL)
integer(kind=kint), parameter hecmw_flag_partcontact_owner_master
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_flag_partcontact_mode_mask
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
pure integer(kind=kint) function hecmw_partcontact_get_owner(flag_partcontact)
integer(kind=kint), parameter hecmw_exit_success
exit status returned to the OS (keep the values below 256)
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_flag_partcontact_owner_mask
integer(kind=kint), parameter hecmw_name_len
integer(kind=kint), parameter hecmw_character
subroutine hecmw_finalize_mpc(P)
subroutine hecmw_nullify_amplitude(P)
integer(kind=kint), parameter hecmw_exit_solver_setup
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_exit_noconv
integer(kind=kint), parameter hecmw_flag_partcontact_simple
Structure for Lagrange multiplier-related part of stiffness matrix (Lagrange multiplier-related matri...