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(:)
223 integer(kind=kint),
pointer :: index(:)
224 integer(kind=kint),
pointer :: item_index(:)
225 integer(kind=kint),
pointer :: item_item(:)
239 character(HECMW_FILENAME_LEN) :: gridfile
240 character(HECMW_FILENAME_LEN),
pointer :: files(:)
241 character(HECMW_HEADER_LEN) :: header
242 integer(kind=kint) :: hecmw_flag_adapt
243 integer(kind=kint) :: hecmw_flag_initcon
244 integer(kind=kint) :: hecmw_n_file
245 integer(kind=kint) :: hecmw_flag_parttype
246 integer(kind=kint) :: hecmw_flag_partdepth
247 integer(kind=kint) :: hecmw_flag_version
248 integer(kind=kint) :: hecmw_flag_partcontact
253 integer(kind=kint) :: n_node
254 integer(kind=kint) :: n_node_gross
256 integer(kind=kint) :: nn_middle
257 integer(kind=kint) :: nn_internal
258 integer(kind=kint) :: n_dof
259 integer(kind=kint) :: n_dof_grp
260 integer(kind=kint) :: n_dof_tot
262 integer(kind=kint),
pointer :: node_id(:)
263 integer(kind=kint),
pointer :: global_node_id(:)
264 integer(kind=kint),
pointer :: node_val_index(:)
265 real(kind=
kreal),
pointer :: node_val_item(:)
266 integer(kind=kint),
pointer :: node_dof_index(:)
267 integer(kind=kint),
pointer :: node_dof_item(:)
268 integer(kind=kint),
pointer :: node_init_val_index(:)
269 real(kind=
kreal),
pointer :: node_init_val_item(:)
270 integer(kind=kint),
pointer :: node_internal_list(:)
274 integer(kind=kint) :: n_elem
275 integer(kind=kint) :: n_elem_gross
276 integer(kind=kint) :: ne_internal
277 integer(kind=kint) :: n_elem_type
278 integer(kind=kint) :: n_elem_mat_id
279 integer(kind=kint),
pointer :: elem_type_index(:)
280 integer(kind=kint),
pointer :: elem_type_item(:)
281 integer(kind=kint),
pointer :: elem_type(:)
282 integer(kind=kint),
pointer :: section_id(:)
283 integer(kind=kint),
pointer :: elem_mat_id_index(:)
284 integer(kind=kint),
pointer :: elem_mat_id_item(:)
285 integer(kind=kint),
pointer :: elem_node_index(:)
286 integer(kind=kint),
pointer :: elem_node_item(:)
287 integer(kind=kint),
pointer :: elem_id(:)
288 integer(kind=kint),
pointer :: global_elem_id(:)
289 integer(kind=kint),
pointer :: elem_internal_list(:)
290 integer(kind=kint),
pointer :: elem_mat_int_index(:)
291 real(kind=
kreal),
pointer :: elem_mat_int_val(:)
292 integer(kind=kint),
pointer :: elem_val_index(:)
293 real(kind=
kreal),
pointer :: elem_val_item(:)
300 integer(kind=kint) :: zero
301 integer(kind=kint) :: mpi_comm
302 integer(kind=kint) :: petot
303 integer(kind=kint) :: pesmptot
304 integer(kind=kint) :: my_rank
305 integer(kind=kint) :: errnof
306 integer(kind=kint) :: n_subdomain
307 integer(kind=kint) :: n_neighbor_pe
308 integer(kind=kint),
pointer :: neighbor_pe(:)
309 integer(kind=kint),
pointer :: import_index(:)
310 integer(kind=kint),
pointer :: import_item(:)
311 integer(kind=kint),
pointer :: export_index(:)
312 integer(kind=kint),
pointer :: export_item(:)
313 integer(kind=kint),
pointer :: shared_index(:)
314 integer(kind=kint),
pointer :: shared_item(:)
319 integer(kind=kint) :: coarse_grid_level
320 integer(kind=kint) :: n_adapt
321 integer(kind=kint),
pointer :: when_i_was_refined_node(:)
322 integer(kind=kint),
pointer :: when_i_was_refined_elem(:)
323 integer(kind=kint),
pointer :: adapt_parent_type(:)
324 integer(kind=kint),
pointer :: adapt_type (:)
325 integer(kind=kint),
pointer :: adapt_level(:)
326 integer(kind=kint),
pointer :: adapt_parent(:)
327 integer(kind=kint),
pointer :: adapt_children_index(:)
328 integer(kind=kint),
pointer :: adapt_children_item(:)
330 integer(kind=kint) :: nn_array, ne_array, nx_array
331 integer(kind=kint) :: n_adapt_edge, n_adapt_edge_global
332 integer(kind=kint) :: n_adapt_act_node, n_adapt_act_edge
333 integer(kind=kint) :: n_adapt_act_elem, n_adapt_act_elem_cur
334 integer(kind=kint) :: n_adapt_elem_341, n_adapt_elem_351
335 integer(kind=kint) :: n_adapt_elem_341_cur, n_adapt_elem_351_cur
336 integer(kind=kint) :: n_adapt_act_elem_341, n_adapt_act_elem_351
338 integer(kind=kint) :: n_adapt_node_cur, nn_adapt_internal_cur
339 integer(kind=kint) :: n_adapt_node_old, nn_adapt_internal_old
340 integer(kind=kint) :: n_adapt_elem_cur, n_adapt_elem_old
342 integer(kind=kint),
pointer :: adapt_edge_node(:), adapt_mid_edge (:)
343 integer(kind=kint),
pointer :: adapt_iemb (:), adapt_edge_home(:)
344 integer(kind=kint),
pointer :: adapt_act_edge (:)
346 integer(kind=kint),
pointer :: &
347 & adapt_import_edge_index(:), adapt_import_edge_item (:),&
348 & adapt_export_edge_index(:), adapt_export_edge_item (:),&
349 & adapt_import_elem_index(:), adapt_import_elem_item (:),&
350 & adapt_export_elem_index(:), adapt_export_elem_item (:),&
351 & adapt_import_new_index (:), adapt_import_new_item (:),&
352 & adapt_export_new_index (:), adapt_export_new_item (:)
353 integer(kind=kint),
pointer :: rev_neighbor_pe(:)
354 integer(kind=kint),
pointer :: adapt_act_elem_341(:)
355 integer(kind=kint),
pointer :: adapt_act_elem_351(:)
356 integer(kind=kint),
pointer :: adapt_oldtonew_node(:), adapt_newtoold_node(:)
357 integer(kind=kint),
pointer :: adapt_oldtonew_elem(:), adapt_newtoold_elem(:)
358 integer(kind=kint),
pointer :: adapt_iwk(:), adapt_children_local(:)
363 integer(kind=kint) :: n_refine
364 integer(kind=kint),
pointer :: node_old2new(:)
365 integer(kind=kint),
pointer :: node_new2old(:)
366 integer(kind=kint),
pointer :: elem_old2new(:)
367 integer(kind=kint),
pointer :: elem_new2old(:)
368 integer(kind=kint),
pointer :: n_node_refine_hist(:)
402 integer(kind=kint) :: zero
403 integer(kind=kint) :: hecmw_comm
404 integer(kind=kint) :: petot
405 integer(kind=kint) :: pesmptot
406 integer(kind=kint) :: my_rank
407 integer(kind=kint) :: errnof
408 integer(kind=kint) :: n_subdomain
409 integer(kind=kint) :: n_neighbor_pe
410 integer(kind=kint),
dimension(:),
pointer :: neighbor_pe
411 integer(kind=kint),
dimension(:),
pointer :: import_index
412 integer(kind=kint),
dimension(:),
pointer :: import_item
413 integer(kind=kint),
dimension(:),
pointer :: export_index
414 integer(kind=kint),
dimension(:),
pointer :: export_item
415 integer(kind=kint),
dimension(:),
pointer :: shared_index
416 integer(kind=kint),
dimension(:),
pointer :: shared_item
420 integer(kind=kint) :: i
421 integer(kind=kint) :: j
422 real(kind=
kreal),
dimension(3,3) :: val
428 integer(kind=kint) :: num_lagrange = 0
429 integer(kind=kint) :: numl_lagrange = 0
430 integer(kind=kint) :: numu_lagrange = 0
432 integer(kind=kint),
pointer :: indexl_lagrange(:) => null()
433 integer(kind=kint),
pointer :: indexu_lagrange(:) => null()
435 integer(kind=kint),
pointer :: iteml_lagrange(:) => null()
436 integer(kind=kint),
pointer :: itemu_lagrange(:) => null()
438 real(kind=
kreal),
pointer :: al_lagrange(:) => null()
439 real(kind=
kreal),
pointer :: au_lagrange(:) => null()
441 real(kind=
kreal),
pointer :: lagrange(:) => null()
445 integer(kind=kint) :: n, np, npl, npu, ndof
446 real(kind=
kreal),
pointer :: d(:), b(:), x(:), alu(:)
447 real(kind=
kreal),
pointer :: al(:), au(:)
448 integer(kind=kint),
pointer :: indexl(:), indexu(:)
449 integer(kind=kint),
pointer :: iteml(:), itemu(:)
450 integer(kind=kint ),
dimension(100) :: iarray
451 real (kind=
kreal),
dimension(100) :: rarray
452 logical :: symmetric = .true.
464 character(len=HECMW_FILENAME_LEN):: ctrlfile =
"hecmw_ctrl.dat"
477 character(len=HECMW_FILENAME_LEN):: ctrlfile
478 integer(kind=kint) :: ierr
482 call mpi_comm_size (mpi_comm_world, hecmw_petot, ierr)
483 call mpi_comm_rank (mpi_comm_world, hecmw_rank, ierr)
484 call mpi_comm_dup (mpi_comm_world, hecmw_comm, ierr)
485 call mpi_comm_group(mpi_comm_world, hecmw_group, ierr)
516 integer(kind=kint) :: ierr
521 call mpi_finalize(ierr)
534 integer(kind=kint) :: comm, errorcode, ierror
537 call mpi_abort(comm, errorcode, ierror)
571 integer(kind=kint) :: comm
582 integer(kind=kint) :: rank
593 integer(kind=kint) :: comm_size
595 comm_size = hecmw_petot
603 nullify( p%sect_type )
604 nullify( p%sect_opt )
605 nullify( p%sect_mat_ID_index )
606 nullify( p%sect_mat_ID_item )
607 nullify( p%sect_I_index )
608 nullify( p%sect_I_item )
609 nullify( p%sect_R_index )
610 nullify( p%sect_R_item )
615 nullify( p%mat_name )
616 nullify( p%mat_item_index )
617 nullify( p%mat_subitem_index )
618 nullify( p%mat_table_index )
620 nullify( p%mat_temp )
625 nullify( p%mpc_index )
626 nullify( p%mpc_item )
629 nullify( p%mpc_const )
634 integer(kind=kint),
intent(in) :: n_mpc
635 integer(kind=kint),
intent(in) :: n_item
638 allocate( mpc%mpc_index(0:n_mpc) )
639 allocate( mpc%mpc_item(n_item) )
640 allocate( mpc%mpc_dof(n_item) )
641 allocate( mpc%mpc_val(n_item) )
646 if(
associated(p%mpc_index) )
deallocate( p%mpc_index )
647 if(
associated(p%mpc_item) )
deallocate( p%mpc_item )
648 if(
associated(p%mpc_dof) )
deallocate( p%mpc_dof )
649 if(
associated(p%mpc_val) )
deallocate( p%mpc_val )
654 nullify( p%amp_name )
655 nullify( p%amp_type_definition )
656 nullify( p%amp_type_time )
657 nullify( p%amp_type_value )
658 nullify( p%amp_index )
660 nullify( p%amp_table )
665 nullify( p%grp_name )
666 nullify( p%grp_index )
667 nullify( p%grp_item )
668 nullify( p%bc_grp_ID )
669 nullify( p%bc_grp_type )
670 nullify( p%bc_grp_index )
671 nullify( p%bc_grp_dof )
672 nullify( p%bc_grp_val )
677 nullify( p%grp_name )
678 nullify( p%grp_index )
679 nullify( p%grp_item )
680 nullify( p%bc_grp_ID )
681 nullify( p%bc_grp_type )
682 nullify( p%bc_grp_index )
683 nullify( p%bc_grp_val )
688 nullify( p%grp_name )
689 nullify( p%grp_index )
690 nullify( p%grp_item )
691 nullify( p%bc_grp_ID )
692 nullify( p%bc_grp_type )
693 nullify( p%bc_grp_index )
694 nullify( p%bc_grp_val )
701 nullify( p%slave_grp_id )
702 nullify( p%slave_orisgrp_id )
703 nullify( p%master_grp_id )
709 nullify( p%item_index )
710 nullify( p%item_item )
718 nullify( p%global_node_ID )
719 nullify( p%node_val_index )
720 nullify( p%node_val_item )
721 nullify( p%node_dof_index )
722 nullify( p%node_dof_item )
723 nullify( p%node_init_val_index )
724 nullify( p%node_init_val_item )
725 nullify( p%node_internal_list )
726 nullify( p%elem_type_index )
727 nullify( p%elem_type_item )
728 nullify( p%elem_type )
729 nullify( p%section_ID )
730 nullify( p%elem_mat_ID_index )
731 nullify( p%elem_mat_ID_item )
732 nullify( p%elem_node_index )
733 nullify( p%elem_node_item )
735 nullify( p%global_elem_ID )
736 nullify( p%elem_internal_list )
737 nullify( p%elem_mat_int_index )
738 nullify( p%elem_mat_int_val )
739 nullify( p%elem_val_index )
740 nullify( p%elem_val_item )
741 nullify( p%neighbor_pe )
742 nullify( p%import_index )
743 nullify( p%import_item )
744 nullify( p%export_index )
745 nullify( p%export_item )
746 nullify( p%shared_index )
747 nullify( p%shared_item )
748 nullify( p%when_i_was_refined_node )
749 nullify( p%when_i_was_refined_elem )
750 nullify( p%adapt_parent_type )
751 nullify( p%adapt_type )
752 nullify( p%adapt_level )
753 nullify( p%adapt_parent )
754 nullify( p%adapt_children_index )
755 nullify( p%adapt_children_item )
756 nullify( p%adapt_edge_node )
757 nullify( p%adapt_mid_edge )
758 nullify( p%adapt_iemb )
759 nullify( p%adapt_edge_home )
760 nullify( p%adapt_act_edge )
761 nullify( p%adapt_import_edge_index )
762 nullify( p%adapt_import_edge_item )
763 nullify( p%adapt_export_edge_index )
764 nullify( p%adapt_export_edge_item )
765 nullify( p%adapt_import_elem_index )
766 nullify( p%adapt_import_elem_item )
767 nullify( p%adapt_export_elem_index )
768 nullify( p%adapt_export_elem_item )
769 nullify( p%adapt_import_new_index )
770 nullify( p%adapt_import_new_item )
771 nullify( p%adapt_export_new_index )
772 nullify( p%adapt_export_new_item )
773 nullify( p%rev_neighbor_pe )
774 nullify( p%adapt_act_elem_341 )
775 nullify( p%adapt_act_elem_351 )
776 nullify( p%adapt_OLDtoNEW_node )
777 nullify( p%adapt_NEWtoOLD_node )
778 nullify( p%adapt_OLDtoNEW_elem )
779 nullify( p%adapt_NEWtoOLD_elem )
780 nullify( p%adapt_IWK )
781 nullify( p%adapt_children_local )
782 nullify( p%node_old2new )
783 nullify( p%node_new2old )
784 nullify( p%elem_old2new )
785 nullify( p%elem_new2old )
786 nullify( p%n_node_refine_hist )
803 nullify( p%neighbor_pe )
804 nullify( p%import_index )
805 nullify( p%import_item )
806 nullify( p%export_index )
807 nullify( p%export_item )
808 nullify( p%shared_index )
809 nullify( p%shared_item )
827 character(len=*),
intent(in) :: fname
830 integer :: i, nf, nBlock
832 nblock = p%NDOF * p%NDOF
833 open( unit=nf, file=fname)
834 write( nf, * ) p%N,p%NP,p%NPL,p%NPU,p%NDOF
837 write( nf,* ) p%indexL(i), p%indexU(i)
841 write( nf,* ) p%itemL(i)
843 do i=1,nblock * p%NPL
844 write( nf,* ) p%AL(i)
848 write( nf,* ) p%itemU(i)
850 do i=1,nblock * p%NPU
851 write( nf,* ) p%AU(i)
855 write( nf, * ) p%D(i)
859 write( nf, * ) p%B(i)
866 character(len=*),
intent(in) :: fname
869 integer :: i, nf, nBlock, istat
871 open( unit=nf, file=fname, status=
'old', iostat= istat)
873 print *,
"cannot open file ",fname
876 read( nf, * ) p%N,p%NP,p%NPL,p%NPU,p%NDOF
877 nblock = p%NDOF * p%NDOF
880 allocate( p%indexL(0:p%NP), p%indexU(0:p%NP) )
881 allocate( p%itemL(p%NPL), p%itemU(p%NPU) )
882 allocate( p%AL(p%NPL*nblock), p%AU(p%NPU*nblock) )
883 allocate( p%D(p%NP*nblock) )
884 allocate( p%B(p%NDOF*p%NP) )
887 read( nf,* ) p%indexL(i), p%indexU(i)
891 read( nf,* ) p%itemL(i)
893 do i=1,nblock * p%NPL
898 read( nf,* ) p%itemU(i)
900 do i=1,nblock * p%NPU
916 type (hecmwST_matrix ) :: hecMATorig
917 type (hecmwST_matrix ),
pointer :: hecMAT
921 hecmat%B => hecmatorig%B
922 hecmat%X => hecmatorig%X
923 hecmat%D => hecmatorig%D
924 hecmat%AL => hecmatorig%AL
925 hecmat%AU => hecmatorig%AU
926 hecmat%indexL => hecmatorig%indexL
927 hecmat%indexU => hecmatorig%indexU
928 hecmat%itemL => hecmatorig%itemL
929 hecmat%itemU => hecmatorig%itemU
930 hecmat%N = hecmatorig%N
931 hecmat%NP = hecmatorig%NP
932 hecmat%NPL = hecmatorig%NPL
933 hecmat%NPU = hecmatorig%NPU
934 hecmat%NDOF = hecmatorig%NDOF
935 hecmat%Iarray = hecmatorig%Iarray
936 hecmat%Rarray = hecmatorig%Rarray
940 type (hecmwST_matrix ) :: hecMATorig
941 type (hecmwST_matrix ),
pointer :: hecMAT
942 integer(kind=kint) NDOF,NDOF2,N,NP,NPL,NPU
947 ndof = hecmatorig%NDOF
957 allocate(hecmat%B(ndof*np))
958 allocate(hecmat%X(ndof*np))
959 allocate(hecmat%D(ndof2*np))
960 allocate(hecmat%AU(ndof2*npu))
961 allocate(hecmat%AL(ndof2*npl))
962 allocate(hecmat%indexL(0:np), hecmat%indexU(0:np), hecmat%itemL(npl), hecmat%itemU(npu))
963 hecmat%B = hecmatorig%B
964 hecmat%X = hecmatorig%X
965 hecmat%D = hecmatorig%D
966 hecmat%AU = hecmatorig%AU
967 hecmat%AL = hecmatorig%AL
968 hecmat%indexL = hecmatorig%indexL
969 hecmat%indexU = hecmatorig%indexU
970 hecmat%itemL = hecmatorig%itemL
971 hecmat%itemU = hecmatorig%itemU
972 hecmat%Iarray = hecmatorig%Iarray
973 hecmat%Rarray = hecmatorig%Rarray
977 type (hecmwST_matrix ) :: hecMATorig
978 type (hecmwST_matrix ),
pointer :: hecMAT
979 integer(kind=kint) NDOF,NDOF2,oNDOF,oNDOF2,i,j,k
982 ondof = hecmatorig%NDOF
987 allocate(hecmat%B(ndof*hecmatorig%NP))
988 allocate(hecmat%X(ndof*hecmatorig%NP))
989 allocate(hecmat%D(ndof2*hecmatorig%NP))
990 allocate(hecmat%AL(ndof2*hecmatorig%NPL))
991 allocate(hecmat%AU(ndof2*hecmatorig%NPU))
992 hecmat%indexL => hecmatorig%indexL
993 hecmat%indexU => hecmatorig%indexU
994 hecmat%itemL => hecmatorig%itemL
995 hecmat%itemU => hecmatorig%itemU
996 hecmat%N = hecmatorig%N
997 hecmat%NP = hecmatorig%NP
998 hecmat%NPL = hecmatorig%NPL
999 hecmat%NPU = hecmatorig%NPU
1001 hecmat%Iarray = hecmatorig%Iarray
1002 hecmat%Rarray = hecmatorig%Rarray
1004 do i = 1, hecmatorig%NP
1007 if (j<=ondof .and. k<=ondof)
then
1008 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%D(ondof2*(i-1) + (j-1)*ondof + k)
1011 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k)=1
1013 hecmat%D(ndof2*(i-1) + (j-1)*ndof + k)=0
1018 hecmat%B(ndof*(i-1) + j) = hecmatorig%B(ondof*(i-1) + j)
1020 hecmat%B(ndof*(i-1) + j)=0
1024 do i = 1, hecmatorig%NPL
1027 if (j<=ondof .and. k<=ondof)
then
1028 hecmat%AL(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%AL(ondof2*(i-1) + (j-1)*ondof + k)
1030 hecmat%AL(ndof2*(i-1) + (j-1)*ndof + k) = 0
1035 do i = 1, hecmatorig%NPU
1038 if (j<=ondof .and. k<=ondof)
then
1039 hecmat%AU(ndof2*(i-1) + (j-1)*ndof + k) = hecmatorig%AU(ondof2*(i-1) + (j-1)*ondof + k)
1041 hecmat%AU(ndof2*(i-1) + (j-1)*ndof + k) = 0
1048 type (hecmwST_matrix ) :: hecMATorig
1049 type (hecmwST_matrix ),
pointer :: hecMAT
1050 integer(kind=kint) NDOF,NDOF2,oNDOF,i,j
1052 ondof = hecmatorig%NDOF
1053 do i = 1, hecmatorig%NP
1055 hecmatorig%X(ondof*(i-1) + j) = hecmat%X(ndof*(i-1) + j)
1058 hecmatorig%Iarray = hecmat%Iarray
1059 hecmatorig%Rarray = hecmat%Rarray
1060 deallocate(hecmat%B)
1061 deallocate(hecmat%D)
1062 deallocate(hecmat%X)
1063 deallocate(hecmat%AL)
1064 deallocate(hecmat%AU)