17 character(len=100) :: sname,vname
24 integer(kind=kint) :: ierr
27 call put_flags(mesh, ierr)
30 call put_etc(mesh, ierr)
33 call put_node(mesh, ierr)
36 call put_elem(mesh, ierr)
39 call put_comm(mesh, ierr)
42 call put_adapt(mesh, ierr)
45 call put_refine(mesh, ierr)
48 call put_sect(mesh%section, ierr)
51 call put_mat(mesh%material, ierr)
54 call put_mpc(mesh%mpc, ierr)
57 call put_amp(mesh%amp, ierr)
60 call put_ngrp(mesh%node_group, ierr)
63 call put_egrp(mesh%elem_group, ierr)
66 call put_sgrp(mesh%surf_group, ierr)
69 call put_contact_pair(mesh%contact_pair, ierr)
74 subroutine put_flags(mesh, ierr)
75 integer(kind=kint) :: ierr
78 sname =
'hecmwST_local_mesh'
80 vname =
'hecmw_flag_adapt'
84 vname =
'hecmw_flag_initcon'
88 vname =
'hecmw_flag_parttype'
92 vname =
'hecmw_flag_partdepth'
96 vname =
'hecmw_flag_version'
100 vname =
'hecmw_flag_partcontact'
103 end subroutine put_flags
106 subroutine put_etc(mesh, ierr)
107 integer(kind=kint) :: ierr
110 sname =
'hecmwST_local_mesh'
116 vname =
'hecmw_n_file'
120 if(mesh%hecmw_n_file > 0)
then
133 end subroutine put_etc
136 subroutine put_node(mesh, ierr)
137 integer(kind=kint) :: ierr
140 sname =
'hecmwST_local_mesh'
145 vname =
'n_node_gross'
153 vname =
'nn_internal'
157 if((mesh%hecmw_flag_parttype == 0 .OR. mesh%hecmw_flag_parttype == 2) .AND. mesh%nn_internal > 0)
then
158 vname =
'node_internal_list'
163 if(mesh%n_node_gross > 0)
then
168 vname =
'global_node_ID'
189 if(mesh%n_dof_grp > 0)
then
190 vname =
'node_dof_index'
194 vname =
'node_dof_item'
199 if(mesh%n_node_gross > 0)
then
200 vname =
'node_val_index'
201 if(
associated(mesh%node_val_index))
then
206 vname =
'node_val_item'
207 if(
associated(mesh%node_val_item))
then
208 if(mesh%node_val_index(mesh%n_node_gross) > 0)
then
214 vname =
'node_init_val_index'
215 if(
associated(mesh%node_init_val_index))
then
220 vname =
'node_init_val_item'
221 if(
associated(mesh%node_init_val_item))
then
222 if(mesh%node_init_val_index(mesh%n_node_gross) > 0)
then
228 end subroutine put_node
231 subroutine put_elem(mesh, ierr)
232 integer(kind=kint) :: ierr
235 sname =
'hecmwST_local_mesh'
241 vname =
'n_elem_gross'
245 vname =
'ne_internal'
249 if((mesh%hecmw_flag_parttype == 0 .OR. mesh%hecmw_flag_parttype == 1) .AND. mesh%ne_internal > 0)
then
250 vname =
'elem_internal_list'
255 if(mesh%n_elem_gross > 0)
then
260 vname =
'global_elem_ID'
269 vname =
'n_elem_type'
273 if(mesh%n_elem_type > 0)
then
274 vname =
'elem_type_index'
278 vname =
'elem_type_item'
283 if(mesh%n_elem_gross > 0)
then
284 vname =
'elem_node_index'
288 vname =
'elem_node_item'
289 if(mesh%elem_node_index(mesh%n_elem_gross) > 0)
then
299 if(mesh%n_elem_gross > 0)
then
300 vname =
'elem_mat_ID_index'
304 if(mesh%elem_mat_ID_index(mesh%n_elem_gross) > 0)
then
305 vname =
'elem_mat_ID_item'
311 vname =
'n_elem_mat_ID'
315 if(mesh%n_elem_gross > 0)
then
316 vname =
'elem_mat_int_index'
317 if(
associated(mesh%elem_mat_int_index))
then
322 vname =
'elem_mat_int_val'
323 if(
associated(mesh%elem_mat_int_val))
then
324 if(mesh%elem_mat_int_index(mesh%n_elem_gross) > 0)
then
331 if(mesh%n_elem_gross > 0)
then
332 vname =
'elem_val_index'
333 if(
associated(mesh%elem_val_index))
then
338 vname =
'elem_val_item'
339 if(
associated(mesh%elem_val_item))
then
340 if(mesh%elem_val_index(mesh%n_elem_gross) > 0)
then
346 end subroutine put_elem
349 subroutine put_comm(mesh, ierr)
350 integer(kind=kint) :: ierr
354 sname =
'hecmwST_local_mesh'
380 vname =
'n_subdomain'
384 vname =
'n_neighbor_pe'
388 if(mesh%n_neighbor_pe > 0)
then
389 vname =
'neighbor_pe'
393 vname =
'import_index'
397 if(mesh%import_index(mesh%n_neighbor_pe) > 0)
then
398 vname =
'import_item'
403 vname =
'export_index'
407 if(mesh%export_index(mesh%n_neighbor_pe) > 0)
then
408 vname =
'export_item'
413 vname =
'shared_index'
417 if(mesh%shared_index(mesh%n_neighbor_pe) > 0)
then
418 vname =
'shared_item'
423 end subroutine put_comm
426 subroutine put_adapt(mesh, ierr)
427 integer(kind=kint) :: ierr
430 if(mesh%hecmw_flag_adapt == 0) return;
432 sname =
'hecmwST_local_mesh'
434 vname =
'coarse_grid_level'
442 if(mesh%n_node_gross > 0)
then
443 vname =
'when_i_was_refined_node'
448 if(mesh%n_elem_gross > 0)
then
449 vname =
'when_i_was_refined_elem'
453 vname =
'adapt_parent_type'
461 vname =
'adapt_level'
465 vname =
'adapt_parent'
469 vname =
'adapt_children_index'
473 vname =
'adapt_children_item'
474 if(mesh%adapt_children_index(mesh%n_elem_gross) > 0)
then
479 end subroutine put_adapt
482 subroutine put_refine(mesh, ierr)
483 integer(kind=kint) :: ierr
486 sname =
'hecmwST_local_mesh'
492 if(mesh%n_refine == 0) return;
494 if(mesh%n_node_gross > 0)
then
495 vname =
'node_old2new'
496 if(
associated(mesh%node_old2new))
then
501 vname =
'node_new2old'
502 if(
associated(mesh%node_new2old))
then
508 if(mesh%n_elem_gross > 0)
then
509 vname =
'elem_old2new'
510 if(
associated(mesh%elem_old2new))
then
515 vname =
'elem_new2old'
516 if(
associated(mesh%elem_new2old))
then
522 if(mesh%n_refine > 0)
then
523 vname =
'n_node_refine_hist'
524 if(
associated(mesh%n_node_refine_hist))
then
529 end subroutine put_refine
532 subroutine put_sect(sect, ierr)
533 integer(kind=kint) :: ierr
536 sname =
'hecmwST_section'
542 if(sect%n_sect > 0)
then
551 vname =
'sect_mat_ID_index'
555 if(sect%sect_mat_ID_index(sect%n_sect) > 0)
then
556 vname =
'sect_mat_ID_item'
561 vname =
'sect_I_index'
565 if(sect%sect_I_index(sect%n_sect) > 0)
then
566 vname =
'sect_I_item'
571 vname =
'sect_R_index'
575 if(sect%sect_R_index(sect%n_sect) > 0)
then
576 vname =
'sect_R_item'
581 end subroutine put_sect
584 subroutine put_mat(mat, ierr)
585 integer(kind=kint) :: ierr
587 character(len=HECMW_NAME_LEN),
pointer :: name_p
589 sname =
'hecmwST_material'
599 vname =
'n_mat_subitem'
603 vname =
'n_mat_table'
607 if(mat%n_mat > 0)
then
609 name_p => mat%mat_name(1)
614 if(mat%n_mat > 0)
then
615 vname =
'mat_item_index'
620 if(mat%n_mat_item > 0)
then
621 vname =
'mat_subitem_index'
626 if(mat%n_mat_subitem > 0)
then
627 vname =
'mat_table_index'
632 if(mat%n_mat_table > 0)
then
641 end subroutine put_mat
644 subroutine put_mpc(mpc, ierr)
645 integer(kind=kint) :: ierr
648 sname =
'hecmwST_mpc'
654 if(mpc%n_mpc > 0)
then
659 if(mpc%mpc_index(mpc%n_mpc) > 0)
then
677 end subroutine put_mpc
680 subroutine put_amp(amp, ierr)
681 integer(kind=kint) :: ierr
683 character(len=HECMW_NAME_LEN),
pointer :: name_p
685 sname =
'hecmwST_amplitude'
691 if(amp%n_amp > 0)
then
693 name_p => amp%amp_name(1)
697 vname =
'amp_type_definition'
701 vname =
'amp_type_time'
705 vname =
'amp_type_value'
713 if(amp%amp_index(amp%n_amp) > 0)
then
723 end subroutine put_amp
726 subroutine put_ngrp(grp, ierr)
727 integer(kind=kint) :: ierr
729 character(len=HECMW_NAME_LEN),
pointer :: name_p
731 sname =
'hecmwST_node_grp'
737 if(grp%n_grp > 0)
then
739 name_p => grp%grp_name(1)
748 if(grp%grp_index(grp%n_grp) > 0)
then
758 if(grp%n_bc > 0)
then
760 if(
associated(grp%bc_grp_ID))
then
765 vname =
'bc_grp_type'
766 if(
associated(grp%bc_grp_type))
then
771 vname =
'bc_grp_index'
772 if(
associated(grp%bc_grp_index))
then
778 if(
associated(grp%bc_grp_dof))
then
784 if(
associated(grp%bc_grp_val))
then
789 end subroutine put_ngrp
792 subroutine put_egrp(grp, ierr)
793 integer(kind=kint) :: ierr
795 character(len=HECMW_NAME_LEN),
pointer :: name_p
797 sname =
'hecmwST_elem_grp'
803 if(grp%n_grp > 0)
then
805 name_p => grp%grp_name(1)
814 if(grp%grp_index(grp%n_grp) > 0)
then
824 if(grp%n_bc > 0)
then
826 if(
associated(grp%bc_grp_ID))
then
831 vname =
'bc_grp_type'
832 if(
associated(grp%bc_grp_type))
then
837 vname =
'bc_grp_index'
838 if(
associated(grp%bc_grp_index))
then
844 if(
associated(grp%bc_grp_val))
then
849 end subroutine put_egrp
852 subroutine put_sgrp(grp, ierr)
853 integer(kind=kint) :: ierr
855 character(len=HECMW_NAME_LEN),
pointer :: name_p
857 sname =
'hecmwST_surf_grp'
863 if(grp%n_grp > 0)
then
865 name_p => grp%grp_name(1)
874 if(grp%grp_index(grp%n_grp) > 0)
then
884 if(grp%n_bc > 0)
then
886 if(
associated(grp%bc_grp_ID))
then
891 vname =
'bc_grp_type'
892 if(
associated(grp%bc_grp_type))
then
897 vname =
'bc_grp_index'
898 if(
associated(grp%bc_grp_index))
then
904 if(
associated(grp%bc_grp_val))
then
909 end subroutine put_sgrp
912 subroutine put_contact_pair(cpair, ierr)
913 integer(kind=kint) :: ierr
915 character(len=HECMW_NAME_LEN),
pointer :: name_p
917 sname =
'hecmwST_contact_pair'
923 if(cpair%n_pair > 0)
then
925 name_p => cpair%name(1)
933 vname =
'slave_grp_id'
937 vname =
'slave_orisgrp_id'
941 vname =
'master_grp_id'
945 end subroutine put_contact_pair