191 ,ig_hexa_gnode_glonum&
192 ,ig_quadp_gnode_glonum&
193 ,ig_quadf_gnode_glonum&
203 ,rg_gll_displacement&
205 ,rg_gll_acceleration&
214 ,ig_quadp_gll_glonum&
215 ,ig_quadf_gll_glonum&
216 ,ig_hexa_material_number&
217 ,ig_quadp_neighbor_hexa&
218 ,ig_quadp_neighbor_hexaface&
223 ,ig_cpu_neighbor_info&
224 ,ig_nneighbor_all_kind&
229 ,lg_output_debug_file
235 integer ,
parameter :: nface=6
236 integer ,
parameter :: nedge=12
237 integer ,
parameter :: nnode=8
239 integer,
allocatable,
dimension(:) :: cpu_neighbor
241 integer :: size_real_t
245 integer :: myunit_debug
247 character(len=255) :: info
259 call read_part_cubit_mesh(trim(cg_prefix)//char(0) &
278 ig_nhexa_inner = ig_nhexa - ig_nhexa_outer
286 if (ig_myrank == 0)
then
287 write(ig_lst_unit,
'(" " ,/,a )')
"boundaries of the entire domain"
288 write(ig_lst_unit,
'(" -->", a,E14.7)')
" xmin = ",rg_mesh_xmin
289 write(ig_lst_unit,
'(" -->", a,E14.7)')
" xmax = ",rg_mesh_xmax
290 write(ig_lst_unit,
'(" -->", a,E14.7)')
" ymin = ",rg_mesh_ymin
291 write(ig_lst_unit,
'(" -->", a,E14.7)')
" ymax = ",rg_mesh_ymax
292 write(ig_lst_unit,
'(" -->", a,E14.7)')
" zmin = ",rg_mesh_zmin
293 write(ig_lst_unit,
'(" -->", a,E14.7)')
" zmax = ",rg_mesh_zmax
301 write(info,
'(a)')
"geometric nodes"
302 call info_all_cpu(ig_mesh_nnode,info)
304 write(info,
'(a)')
" hexahedra"
305 call info_all_cpu(ig_nhexa,info)
307 write(info,
'(a)')
" outer hexahedra"
308 call info_all_cpu(ig_nhexa_outer,info)
310 write(info,
'(a)')
" inner hexahedra"
311 call info_all_cpu(ig_nhexa_inner,info)
313 write(info,
'(a)')
"paraxial quadrangles"
314 call info_all_cpu(ig_nquad_parax,info)
316 write(info,
'(a)')
"free surface quadrangles"
317 call info_all_cpu(ig_nquad_fsurf,info)
333 allocate(tg_cpu_neighbor(ig_ncpu_neighbor),stat=ios)
335 write(info,
'(a)')
"Error in subroutine init_mesh while allocating tg_cpu_neighbor"
336 call error_stop(info)
339 ios =
init_array_int(cpu_neighbor,ig_ncpu_neighbor,
"cpu_neighbor")
341 ios =
init_array_int(ig_cpu_neighbor_info,26*ig_nhexa_outer,3,
"ig_cpu_neighbor_info")
343 ios =
init_array_int(ig_hexa_gnode_glonum,ig_nhexa,ig_hexa_nnode,
"ig_hexa_gnode_glonum")
345 ios =
init_array_int(ig_hexa_gll_glonum,ig_nhexa,ig_ngll,ig_ngll,ig_ngll,
"ig_hexa_gll_glonum")
347 if (ig_nquad_parax > 0)
then
349 ios =
init_array_int(ig_quadp_gnode_glonum,ig_nquad_parax,ig_quad_nnode,
"ig_quadp_gnode_glonum")
351 ios =
init_array_int(ig_quadp_gll_glonum,ig_nquad_parax,ig_ngll,ig_ngll,
"ig_quadp_gll_glonum")
353 ios =
init_array_int(ig_quadp_neighbor_hexa,ig_nquad_parax,
"ig_quadp_neighbor_hexa")
355 ios =
init_array_int(ig_quadp_neighbor_hexaface,ig_nquad_parax,
"ig_quadp_neighbor_hexaface")
359 ios =
init_array_int(ig_quadp_gnode_glonum,1,ig_quad_nnode,
"ig_quadp_gnode_glonum")
361 ios =
init_array_int(ig_quadp_gll_glonum,1,ig_ngll,ig_ngll,
"ig_quadp_gll_glonum")
363 ios =
init_array_int(ig_quadp_neighbor_hexa,1,
"ig_quadp_neighbor_hexa")
365 ios =
init_array_int(ig_quadp_neighbor_hexaface,1,
"ig_quadp_neighbor_hexaface")
369 if (ig_nquad_fsurf > 0)
then
371 ios =
init_array_int(ig_quadf_gnode_glonum,ig_nquad_fsurf,ig_quad_nnode,
"ig_quadf_gnode_glonum")
373 ios =
init_array_int(ig_quadf_gll_glonum,ig_nquad_fsurf,ig_ngll,ig_ngll,
"ig_quadf_gll_glonum")
377 ios =
init_array_int(ig_quadf_gnode_glonum,1,ig_quad_nnode,
"ig_quadf_gnode_glonum")
379 ios =
init_array_int(ig_quadf_gll_glonum,1,ig_ngll,ig_ngll,
"ig_quadf_gll_glonum")
383 ios =
init_array_int(ig_hexa_material_number,ig_nhexa,
"ig_hexa_material_number")
390 if (ig_myrank == 0)
write(ig_lst_unit,
'(" ",/,a)')
"Generating global gll nodes numbering..."
392 call fill_mesh_arrays(ig_ncpu &
395 ,ig_nneighbor_all_kind &
397 ,ig_cpu_neighbor_info &
398 ,ig_hexa_gnode_glonum &
399 ,ig_quadp_gnode_glonum &
400 ,ig_quadf_gnode_glonum &
401 ,ig_hexa_gll_glonum &
402 ,ig_quadp_gll_glonum &
403 ,ig_quadf_gll_glonum &
404 ,ig_quadp_neighbor_hexa &
405 ,ig_quadp_neighbor_hexaface &
406 ,ig_hexa_material_number )
408 if (ig_myrank == 0)
write(ig_lst_unit,
'(a)')
"Done"
415 do icpu = 1,ig_ncpu_neighbor
416 tg_cpu_neighbor(icpu)%icpu = cpu_neighbor(icpu)
418 deallocate(cpu_neighbor)
426 ios =
init_array_real(rg_gll_displacement,ig_ngll_total,ig_ndof,
"rg_gll_displacement")
428 ios =
init_array_real(rg_gll_velocity ,ig_ngll_total,ig_ndof,
"rg_gll_velocity")
430 ios =
init_array_real(rg_gll_acceleration,ig_ngll_total,ig_ndof,
"rg_gll_acceleration")
438 write(info,
'(a)')
"gll nodes"
439 call info_all_cpu(ig_ngll_total,info)
447 if (lg_output_debug_file)
then
448 open(unit=get_newunit(myunit_debug),file=
"debug."//trim(cg_prefix)//
".global.gll."//trim(cg_myrank))
449 do ihexa = 1,ig_nhexa
450 write(unit=myunit_debug,fmt=
'(a,i10)')
"hexa ",ihexa
452 write(unit=myunit_debug,fmt=
'(a,i10)')
"igll ",igll
454 write(unit=myunit_debug,fmt=
'(10I10)') (ig_hexa_gll_glonum(kgll,jgll,igll,ihexa),kgll=1,ig_ngll)
466 if (lg_output_debug_file)
then
467 open(unit=get_newunit(myunit_debug),file=
"debug."//trim(cg_prefix)//
".freesurface.geom."//trim(cg_myrank))
468 do ifsurf = 1,ig_nquad_fsurf
469 write(unit=myunit_debug,fmt=
'(a,I10)')
"Quad ",ifsurf
470 do inode = 1,ig_quad_nnode
471 write(unit=myunit_debug,fmt=
'(2(E14.7,1X))') rg_gnode_x(ig_quadf_gnode_glonum(inode,ifsurf))&
472 ,rg_gnode_y(ig_quadf_gnode_glonum(inode,ifsurf))
478 if (ig_nquad_parax == 0)
then
480 deallocate(ig_quadp_gnode_glonum)
482 deallocate(ig_quadp_gll_glonum)
484 deallocate(ig_quadp_neighbor_hexa)
486 deallocate(ig_quadp_neighbor_hexaface)
490 if (ig_nquad_fsurf == 0)
then
492 deallocate(ig_quadf_gnode_glonum)
494 deallocate(ig_quadf_gll_glonum)
521 integer,
intent(in ) :: ihexa
522 integer,
intent(inout) :: ngll_total
532 if (ig_hexa_gll_glonum(m,l,k,ihexa) == 0)
then
534 ngll_total = ngll_total + 1
535 ig_hexa_gll_glonum(m,l,k,ihexa) = ngll_total
568 integer,
intent(in) :: ihexa
569 integer,
intent(in) :: iface
570 integer,
intent(in) :: iquad
571 integer,
intent(in) :: number_of_quad
572 integer,
intent(inout),
dimension(IG_NGLL,IG_NGLL,number_of_quad) :: global_gll_of_quad
576 character(len=255) :: info
582 global_gll_of_quad(m,l,iquad) = ig_hexa_gll_glonum(m,l,1,ihexa)
590 global_gll_of_quad(k,m,iquad) = ig_hexa_gll_glonum(m,1,k,ihexa)
598 global_gll_of_quad(k,l,iquad) = ig_hexa_gll_glonum(ig_ngll,l,k,ihexa)
606 global_gll_of_quad(m,k,iquad) = ig_hexa_gll_glonum(m,ig_ngll,k,ihexa)
614 global_gll_of_quad(l,k,iquad) = ig_hexa_gll_glonum(1,l,k,ihexa)
622 global_gll_of_quad(l,m,iquad) = ig_hexa_gll_glonum(m,l,ig_ngll,ihexa)
628 write(info,
'(a)')
"error in subroutine propagate_gll_nodes_quad. Invalid face number"
629 call error_stop(info)
656 integer,
intent(in) :: ihexa_new
657 integer,
intent(in) :: ihexa_old
658 integer,
intent(in) :: iface_new
659 integer,
intent(in) :: iface_old
660 integer,
intent(in) :: icoty_new
671 integer :: i_ext_target
672 integer :: i_int_target
673 integer :: igll_source
682 ext_vec = ishft(iand(24, icoty_new), -3)
683 ext_sgn = ishft(iand(32, icoty_new), -5)
685 int_vec = iand(3, icoty_new)
686 int_sgn = ishft(iand(4, icoty_new), -2)
688 mid_gll = ceiling(ig_ngll/2.0)
690 select case(iface_new)
692 if (ig_hexa_gll_glonum(mid_gll,mid_gll,1,ihexa_new) /= 0)
return
695 if (ig_hexa_gll_glonum(mid_gll,1,mid_gll,ihexa_new) /= 0)
return
698 if (ig_hexa_gll_glonum(ig_ngll,mid_gll,mid_gll,ihexa_new) /= 0)
return
701 if (ig_hexa_gll_glonum(mid_gll,ig_ngll,mid_gll,ihexa_new) /= 0)
return
704 if (ig_hexa_gll_glonum(1,mid_gll,mid_gll,ihexa_new) /= 0)
return
707 if (ig_hexa_gll_glonum(mid_gll,mid_gll,ig_ngll,ihexa_new) /= 0)
return
713 i_ext_rev = (ig_ngll+1)-i_ext
716 i_int_rev = (ig_ngll+1)-i_int
717 select case(iface_old)
719 igll_source = ig_hexa_gll_glonum(i_ext, i_int, 1, ihexa_old)
721 igll_source = ig_hexa_gll_glonum(i_int, 1, i_ext, ihexa_old)
723 igll_source = ig_hexa_gll_glonum(ig_ngll, i_int_rev, i_ext_rev, ihexa_old)
725 igll_source = ig_hexa_gll_glonum(i_ext_rev, ig_ngll, i_int_rev, ihexa_old)
727 igll_source = ig_hexa_gll_glonum(1, i_ext, i_int, ihexa_old)
729 igll_source = ig_hexa_gll_glonum(i_int_rev, i_ext_rev, ig_ngll, ihexa_old)
732 if (ext_sgn == 1)
then
735 i_ext_target = i_ext_rev
737 if (int_sgn == 1)
then
740 i_int_target = i_int_rev
747 if (ig_hexa_gll_glonum(fixed_val, i_int_target, i_ext_target, ihexa_new) /= igll_source&
748 .and. ig_hexa_gll_glonum(fixed_val, i_int_target, i_ext_target, ihexa_new) /= 0)
write(*,*)
'propagate_gll_nodes_face() ', ihexa_old,iface_old,ihexa_new,iface_new
749 ig_hexa_gll_glonum(fixed_val, i_int_target, i_ext_target, ihexa_new) = igll_source
751 if (ig_hexa_gll_glonum(i_int_target, fixed_val, i_ext_target, ihexa_new) /= igll_source&
752 .and. ig_hexa_gll_glonum(i_int_target, fixed_val, i_ext_target, ihexa_new) /= 0)
write(*,*)
'propagate_gll_nodes_face() ', ihexa_old,iface_old,ihexa_new,iface_new
753 ig_hexa_gll_glonum(i_int_target, fixed_val, i_ext_target, ihexa_new) = igll_source
758 if (ig_hexa_gll_glonum(fixed_val, i_ext_target, i_int_target, ihexa_new) /= igll_source&
759 .and. ig_hexa_gll_glonum(fixed_val, i_ext_target, i_int_target, ihexa_new) /= 0)
write(*,*)
'propagate_gll_nodes_face() ', ihexa_old,iface_old,ihexa_new,iface_new
760 ig_hexa_gll_glonum(fixed_val, i_ext_target, i_int_target, ihexa_new) = igll_source
762 if (ig_hexa_gll_glonum(i_int_target, i_ext_target, fixed_val, ihexa_new) /= igll_source&
763 .and. ig_hexa_gll_glonum(i_int_target, i_ext_target, fixed_val, ihexa_new) /= 0)
write(*,*)
'propagate_gll_nodes_face() ', ihexa_old,iface_old,ihexa_new,iface_new
764 ig_hexa_gll_glonum(i_int_target, i_ext_target, fixed_val, ihexa_new) = igll_source
769 if (ig_hexa_gll_glonum(i_ext_target, fixed_val, i_int_target, ihexa_new) /= igll_source&
770 .and. ig_hexa_gll_glonum(i_ext_target, fixed_val, i_int_target, ihexa_new) /= 0)
write(*,*)
'propagate_gll_nodes_face() ', ihexa_old,iface_old,ihexa_new,iface_new
771 ig_hexa_gll_glonum(i_ext_target, fixed_val, i_int_target, ihexa_new) = igll_source
773 if (ig_hexa_gll_glonum(i_ext_target, i_int_target, fixed_val, ihexa_new) /= igll_source&
774 .and. ig_hexa_gll_glonum(i_ext_target, i_int_target, fixed_val, ihexa_new) /= 0)
write(*,*)
'propagate_gll_nodes_face() ', ihexa_old,iface_old,ihexa_new,iface_new
775 ig_hexa_gll_glonum(i_ext_target, i_int_target, fixed_val, ihexa_new) = igll_source
803 ,lg_output_debug_file
807 integer,
intent(in) :: ihexa_new
808 integer,
intent(in) :: ihexa_old
809 integer,
intent(in) :: iedge_new
810 integer,
intent(in) :: iedge_old
811 integer,
intent(in) :: icoty_new
813 integer,
pointer :: pedge_old(:)
814 integer,
pointer :: pedge_new(:)
817 select case(iedge_old)
819 pedge_old => ig_hexa_gll_glonum(1:ig_ngll,1,1,ihexa_old)
821 pedge_old => ig_hexa_gll_glonum(ig_ngll,1:ig_ngll,1,ihexa_old)
823 pedge_old => ig_hexa_gll_glonum(1:ig_ngll,ig_ngll,1,ihexa_old)
825 pedge_old => ig_hexa_gll_glonum(1,1:ig_ngll,1,ihexa_old)
827 pedge_old => ig_hexa_gll_glonum(1:ig_ngll,1,ig_ngll,ihexa_old)
829 pedge_old => ig_hexa_gll_glonum(ig_ngll,1:ig_ngll,ig_ngll,ihexa_old)
831 pedge_old => ig_hexa_gll_glonum(1:ig_ngll,ig_ngll,ig_ngll,ihexa_old)
833 pedge_old => ig_hexa_gll_glonum(1,1:ig_ngll,ig_ngll,ihexa_old)
835 pedge_old => ig_hexa_gll_glonum(1,1,1:ig_ngll,ihexa_old)
837 pedge_old => ig_hexa_gll_glonum(ig_ngll,1,1:ig_ngll,ihexa_old)
839 pedge_old => ig_hexa_gll_glonum(ig_ngll,ig_ngll,1:ig_ngll,ihexa_old)
841 pedge_old => ig_hexa_gll_glonum(1,ig_ngll,1:ig_ngll,ihexa_old)
844 select case(iedge_new)
846 pedge_new => ig_hexa_gll_glonum(1:ig_ngll,1,1,ihexa_new)
848 pedge_new => ig_hexa_gll_glonum(ig_ngll,1:ig_ngll,1,ihexa_new)
850 pedge_new => ig_hexa_gll_glonum(1:ig_ngll,ig_ngll,1,ihexa_new)
852 pedge_new => ig_hexa_gll_glonum(1,1:ig_ngll,1,ihexa_new)
854 pedge_new => ig_hexa_gll_glonum(1:ig_ngll,1,ig_ngll,ihexa_new)
856 pedge_new => ig_hexa_gll_glonum(ig_ngll,1:ig_ngll,ig_ngll,ihexa_new)
858 pedge_new => ig_hexa_gll_glonum(1:ig_ngll,ig_ngll,ig_ngll,ihexa_new)
860 pedge_new => ig_hexa_gll_glonum(1,1:ig_ngll,ig_ngll,ihexa_new)
862 pedge_new => ig_hexa_gll_glonum(1,1,1:ig_ngll,ihexa_new)
864 pedge_new => ig_hexa_gll_glonum(ig_ngll,1,1:ig_ngll,ihexa_new)
866 pedge_new => ig_hexa_gll_glonum(ig_ngll,ig_ngll,1:ig_ngll,ihexa_new)
868 pedge_new => ig_hexa_gll_glonum(1,ig_ngll,1:ig_ngll,ihexa_new)
872 if (icoty_new == 1)
then
877 if ( (pedge_new(j) /= pedge_old(i) .and. pedge_new(j) /= 0) .or. pedge_old(i) == 0 )
write(*,*)
'propagate_gll_nodes_edge',ihexa_old,iedge_old,ihexa_new,iedge_new
878 pedge_new(j) = pedge_old(i)
902 ,lg_output_debug_file
906 integer,
intent(in) :: ihexa_new
907 integer,
intent(in) :: ihexa_old
908 integer,
intent(in) :: icorner_new
909 integer,
intent(in) :: icorner_old
911 integer,
pointer :: pcorner_old
912 integer,
pointer :: pcorner_new
914 select case(icorner_old)
916 pcorner_old => ig_hexa_gll_glonum(1,1,1,ihexa_old)
918 pcorner_old => ig_hexa_gll_glonum(ig_ngll,1,1,ihexa_old)
920 pcorner_old => ig_hexa_gll_glonum(ig_ngll,ig_ngll,1,ihexa_old)
922 pcorner_old => ig_hexa_gll_glonum(1,ig_ngll,1,ihexa_old)
924 pcorner_old => ig_hexa_gll_glonum(1,1,ig_ngll,ihexa_old)
926 pcorner_old => ig_hexa_gll_glonum(ig_ngll,1,ig_ngll,ihexa_old)
928 pcorner_old => ig_hexa_gll_glonum(ig_ngll,ig_ngll,ig_ngll,ihexa_old)
930 pcorner_old => ig_hexa_gll_glonum(1,ig_ngll,ig_ngll,ihexa_old)
933 select case(icorner_new)
935 pcorner_new => ig_hexa_gll_glonum(1,1,1,ihexa_new)
937 pcorner_new => ig_hexa_gll_glonum(ig_ngll,1,1,ihexa_new)
939 pcorner_new => ig_hexa_gll_glonum(ig_ngll,ig_ngll,1,ihexa_new)
941 pcorner_new => ig_hexa_gll_glonum(1,ig_ngll,1,ihexa_new)
943 pcorner_new => ig_hexa_gll_glonum(1,1,ig_ngll,ihexa_new)
945 pcorner_new => ig_hexa_gll_glonum(ig_ngll,1,ig_ngll,ihexa_new)
947 pcorner_new => ig_hexa_gll_glonum(ig_ngll,ig_ngll,ig_ngll,ihexa_new)
949 pcorner_new => ig_hexa_gll_glonum(1,ig_ngll,ig_ngll,ihexa_new)
951 if ( (pcorner_new /= pcorner_old .and. pcorner_new /= 0) .or. pcorner_old == 0 )
write(*,*)
'propagate_gll_nodes_corner',ihexa_old,icorner_old,ihexa_new,icorner_new
952 pcorner_new = pcorner_old
979 ,ig_hexa_gnode_etloc&
980 ,ig_hexa_gnode_zeloc&
984 ,ig_quad_gnode_xiloc&
985 ,ig_quad_gnode_etloc&
986 ,rg_gnode_abscissa_dist&
994 integer,
intent(in) :: ilnnhe
995 integer,
intent(in) :: ilnnqu
1001 character(len=255) :: info
1007 ios =
init_array_int(ig_hexa_gnode_xiloc,ilnnhe,
"ig_hexa_gnode_xiloc")
1009 ios =
init_array_int(ig_hexa_gnode_etloc,ilnnhe,
"ig_hexa_gnode_etloc")
1011 ios =
init_array_int(ig_hexa_gnode_zeloc,ilnnhe,
"ig_hexa_gnode_zeloc")
1013 if (ilnnhe == 8)
then
1018 ios =
init_array_real(rg_gnode_abscissa,ig_line_nnode,
"rg_gnode_abscissa")
1020 rg_gnode_abscissa(1) = +1.0
1021 rg_gnode_abscissa(2) = -1.0
1024 ig_hexa_gnode_xiloc(1) = 1
1025 ig_hexa_gnode_etloc(1) = 1
1026 ig_hexa_gnode_zeloc(1) = 1
1027 ig_hexa_gnode_xiloc(2) = 2
1028 ig_hexa_gnode_etloc(2) = 1
1029 ig_hexa_gnode_zeloc(2) = 1
1030 ig_hexa_gnode_xiloc(3) = 2
1031 ig_hexa_gnode_etloc(3) = 2
1032 ig_hexa_gnode_zeloc(3) = 1
1033 ig_hexa_gnode_xiloc(4) = 1
1034 ig_hexa_gnode_etloc(4) = 2
1035 ig_hexa_gnode_zeloc(4) = 1
1036 ig_hexa_gnode_xiloc(5) = 1
1037 ig_hexa_gnode_etloc(5) = 1
1038 ig_hexa_gnode_zeloc(5) = 2
1039 ig_hexa_gnode_xiloc(6) = 2
1040 ig_hexa_gnode_etloc(6) = 1
1041 ig_hexa_gnode_zeloc(6) = 2
1042 ig_hexa_gnode_xiloc(7) = 2
1043 ig_hexa_gnode_etloc(7) = 2
1044 ig_hexa_gnode_zeloc(7) = 2
1045 ig_hexa_gnode_xiloc(8) = 1
1046 ig_hexa_gnode_etloc(8) = 2
1047 ig_hexa_gnode_zeloc(8) = 2
1049 elseif (ilnnhe == 27)
then
1054 ios =
init_array_real(rg_gnode_abscissa,ig_line_nnode,
"rg_gnode_abscissa")
1056 rg_gnode_abscissa(1) = +1.0
1057 rg_gnode_abscissa(2) = 0.0
1058 rg_gnode_abscissa(3) = -1.0
1061 ig_hexa_gnode_xiloc( 1) = 1
1062 ig_hexa_gnode_etloc( 1) = 1
1063 ig_hexa_gnode_zeloc( 1) = 1
1064 ig_hexa_gnode_xiloc( 2) = 3
1065 ig_hexa_gnode_etloc( 2) = 1
1066 ig_hexa_gnode_zeloc( 2) = 1
1067 ig_hexa_gnode_xiloc( 3) = 3
1068 ig_hexa_gnode_etloc( 3) = 3
1069 ig_hexa_gnode_zeloc( 3) = 1
1070 ig_hexa_gnode_xiloc( 4) = 1
1071 ig_hexa_gnode_etloc( 4) = 3
1072 ig_hexa_gnode_zeloc( 4) = 1
1073 ig_hexa_gnode_xiloc( 5) = 1
1074 ig_hexa_gnode_etloc( 5) = 1
1075 ig_hexa_gnode_zeloc( 5) = 3
1076 ig_hexa_gnode_xiloc( 6) = 3
1077 ig_hexa_gnode_etloc( 6) = 1
1078 ig_hexa_gnode_zeloc( 6) = 3
1079 ig_hexa_gnode_xiloc( 7) = 3
1080 ig_hexa_gnode_etloc( 7) = 3
1081 ig_hexa_gnode_zeloc( 7) = 3
1082 ig_hexa_gnode_xiloc( 8) = 1
1083 ig_hexa_gnode_etloc( 8) = 3
1084 ig_hexa_gnode_zeloc( 8) = 3
1085 ig_hexa_gnode_xiloc( 9) = 2
1086 ig_hexa_gnode_etloc( 9) = 1
1087 ig_hexa_gnode_zeloc( 9) = 1
1088 ig_hexa_gnode_xiloc(10) = 3
1089 ig_hexa_gnode_etloc(10) = 2
1090 ig_hexa_gnode_zeloc(10) = 1
1091 ig_hexa_gnode_xiloc(11) = 2
1092 ig_hexa_gnode_etloc(11) = 3
1093 ig_hexa_gnode_zeloc(11) = 1
1094 ig_hexa_gnode_xiloc(12) = 1
1095 ig_hexa_gnode_etloc(12) = 2
1096 ig_hexa_gnode_zeloc(12) = 1
1097 ig_hexa_gnode_xiloc(13) = 2
1098 ig_hexa_gnode_etloc(13) = 1
1099 ig_hexa_gnode_zeloc(13) = 3
1100 ig_hexa_gnode_xiloc(14) = 3
1101 ig_hexa_gnode_etloc(14) = 2
1102 ig_hexa_gnode_zeloc(14) = 3
1103 ig_hexa_gnode_xiloc(15) = 2
1104 ig_hexa_gnode_etloc(15) = 3
1105 ig_hexa_gnode_zeloc(15) = 3
1106 ig_hexa_gnode_xiloc(16) = 1
1107 ig_hexa_gnode_etloc(16) = 2
1108 ig_hexa_gnode_zeloc(16) = 3
1109 ig_hexa_gnode_xiloc(17) = 1
1110 ig_hexa_gnode_etloc(17) = 1
1111 ig_hexa_gnode_zeloc(17) = 2
1112 ig_hexa_gnode_xiloc(18) = 3
1113 ig_hexa_gnode_etloc(18) = 1
1114 ig_hexa_gnode_zeloc(18) = 2
1115 ig_hexa_gnode_xiloc(19) = 3
1116 ig_hexa_gnode_etloc(19) = 3
1117 ig_hexa_gnode_zeloc(19) = 2
1118 ig_hexa_gnode_xiloc(20) = 1
1119 ig_hexa_gnode_etloc(20) = 3
1120 ig_hexa_gnode_zeloc(20) = 2
1121 ig_hexa_gnode_xiloc(21) = 2
1122 ig_hexa_gnode_etloc(21) = 2
1123 ig_hexa_gnode_zeloc(21) = 1
1124 ig_hexa_gnode_xiloc(22) = 2
1125 ig_hexa_gnode_etloc(22) = 1
1126 ig_hexa_gnode_zeloc(22) = 2
1127 ig_hexa_gnode_xiloc(23) = 3
1128 ig_hexa_gnode_etloc(23) = 2
1129 ig_hexa_gnode_zeloc(23) = 2
1130 ig_hexa_gnode_xiloc(24) = 2
1131 ig_hexa_gnode_etloc(24) = 3
1132 ig_hexa_gnode_zeloc(24) = 2
1133 ig_hexa_gnode_xiloc(25) = 1
1134 ig_hexa_gnode_etloc(25) = 2
1135 ig_hexa_gnode_zeloc(25) = 2
1136 ig_hexa_gnode_xiloc(26) = 2
1137 ig_hexa_gnode_etloc(26) = 2
1138 ig_hexa_gnode_zeloc(26) = 3
1139 ig_hexa_gnode_xiloc(27) = 2
1140 ig_hexa_gnode_etloc(27) = 2
1141 ig_hexa_gnode_zeloc(27) = 2
1143 write(info,
'(a)')
"error in init_element: invalid number of geometrical nodes for hexa"
1144 call error_stop(info)
1153 ios =
init_array_real(rg_gnode_abscissa_dist,ig_line_nnode,ig_line_nnode,
"rg_gnode_abscissa_dist")
1155 do i = 1,ig_line_nnode
1156 do j = 1,ig_line_nnode
1157 rg_gnode_abscissa_dist(j,i) = 0.0
1158 if (i /= j) rg_gnode_abscissa_dist(j,i) = 1.0/(rg_gnode_abscissa(i) - rg_gnode_abscissa(j))
1167 ios =
init_array_int(ig_quad_gnode_xiloc,ilnnqu,
"ig_quad_gnode_xiloc")
1169 ios =
init_array_int(ig_quad_gnode_etloc,ilnnqu,
"ig_quad_gnode_etloc")
1171 if (ilnnqu == 4)
then
1172 ig_quad_gnode_xiloc(1) = 1
1173 ig_quad_gnode_etloc(1) = 1
1174 ig_quad_gnode_xiloc(2) = 2
1175 ig_quad_gnode_etloc(2) = 1
1176 ig_quad_gnode_xiloc(3) = 2
1177 ig_quad_gnode_etloc(3) = 2
1178 ig_quad_gnode_xiloc(4) = 1
1179 ig_quad_gnode_etloc(4) = 2
1180 elseif (ilnnqu == 9)
then
1181 ig_quad_gnode_xiloc(1) = 1
1182 ig_quad_gnode_etloc(1) = 1
1183 ig_quad_gnode_xiloc(2) = 3
1184 ig_quad_gnode_etloc(2) = 1
1185 ig_quad_gnode_xiloc(3) = 3
1186 ig_quad_gnode_etloc(3) = 3
1187 ig_quad_gnode_xiloc(4) = 1
1188 ig_quad_gnode_etloc(4) = 3
1189 ig_quad_gnode_xiloc(5) = 2
1190 ig_quad_gnode_etloc(5) = 1
1191 ig_quad_gnode_xiloc(6) = 3
1192 ig_quad_gnode_etloc(6) = 2
1193 ig_quad_gnode_xiloc(7) = 2
1194 ig_quad_gnode_etloc(7) = 3
1195 ig_quad_gnode_xiloc(8) = 1
1196 ig_quad_gnode_etloc(8) = 2
1197 ig_quad_gnode_xiloc(9) = 2
1198 ig_quad_gnode_etloc(9) = 2
1200 write(info,
'(a)')
"error in init_element: invalid number of geometrical nodes for quad"
1201 call error_stop(info)
1222 ig_hexa_node2gll(1,1) = 1
1223 ig_hexa_node2gll(2,1) = 1
1224 ig_hexa_node2gll(3,1) = 1
1226 ig_hexa_node2gll(1,2) = 1
1227 ig_hexa_node2gll(2,2) = 1
1228 ig_hexa_node2gll(3,2) = ig_ngll
1230 ig_hexa_node2gll(1,3) = 1
1231 ig_hexa_node2gll(2,3) = ig_ngll
1232 ig_hexa_node2gll(3,3) = ig_ngll
1234 ig_hexa_node2gll(1,4) = 1
1235 ig_hexa_node2gll(2,4) = ig_ngll
1236 ig_hexa_node2gll(3,4) = 1
1238 ig_hexa_node2gll(1,5) = ig_ngll
1239 ig_hexa_node2gll(2,5) = 1
1240 ig_hexa_node2gll(3,5) = 1
1242 ig_hexa_node2gll(1,6) = ig_ngll
1243 ig_hexa_node2gll(2,6) = 1
1244 ig_hexa_node2gll(3,6) = ig_ngll
1246 ig_hexa_node2gll(1,7) = ig_ngll
1247 ig_hexa_node2gll(2,7) = ig_ngll
1248 ig_hexa_node2gll(3,7) = ig_ngll
1250 ig_hexa_node2gll(1,8) = ig_ngll
1251 ig_hexa_node2gll(2,8) = ig_ngll
1252 ig_hexa_node2gll(3,8) = 1
This module contains subroutines to read mesh files and creates GLL nodes global numbering in cpu myr...
This module contains subroutines to allocate arrays and to compute an approximation of the total RAM ...
subroutine, private propagate_gll_nodes_corner(ihexa_old, icorner_old, ihexa_new, icorner_new)
This subroutine propagates existing GLL numbering of hexahedron elements to corner (i...
subroutine, private propagate_gll_nodes_face(ihexa_old, iface_old, ihexa_new, iface_new, icoty_new)
This subroutine propagates existing GLL numbering of hexahedron elements to the face of its neighbors...
This module defines all global variables of EFISPEC3D. Scalar variables are initialized directly in t...
Interface init_array_real to redirect allocation to n-rank arrays.
subroutine, private propagate_gll_nodes_quad(ihexa, iface, iquad, global_gll_of_quad, number_of_quad)
This subroutine creates the local to global GLL indirection array for quadrangle elements by propagat...
subroutine, private init_element(ilnnhe, ilnnqu)
subroutine to set up convention of hexahedron and quadrangle elements
subroutine, public init_mesh()
This subroutine reads mesh files *.inp for cpu myrank and creates GLL numbering of hexahedron and qua...
subroutine, private propagate_gll_nodes_edge(ihexa_old, iedge_old, ihexa_new, iedge_new, icoty_new)
This subroutine propagates existing GLL numbering of hexahedron elements to the edge of its neighbors...
Interface init_array_int to redirect allocation to n-rank arrays.
subroutine, private init_gll_number(ihexa, ngll_total)
This subroutine increments GLL numbering of hexahedron elements in cpu myrank (see variable mod_globa...