322 INTEGER,
INTENT(IN) :: NUMNOD, NUMELQ, NUMELTG, NUMELS, NIXQ, NIXTG, NIXS
323 INTEGER,
DIMENSION(NIXQ, NUMELQ),
INTENT(IN) :: IXQ
324 INTEGER,
DIMENSION(NIXTG, NUMELTG),
INTENT(IN) :: IXTG
325 INTEGER,
DIMENSION(NIXS, NUMELS),
INTENT(IN) :: IXS
329 INTEGER :: II, JJ,KK, NODE_ID, NODE1, NODE2
331 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADSKY
332 INTEGER :: IAD1, IAD2, ITMP
333 INTEGER :: MAX_EDGE, NB_EDGE, NB_EDGE_NEW, IEDGE, CUR_POS
334 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: EDGES, EDGES_TMP
335 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IDX
336 INTEGER,
DIMENSION(2, 3) :: TRI_EDGE
337 INTEGER,
DIMENSION(2, 4) :: QUAD_EDGE
338 INTEGER,
DIMENSION(2, 12) :: HEXA_EDGE
339 INTEGER,
DIMENSION(2, 6) :: TETRA_EDGE
340 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NN_NB_CONNECT, NE_NB_CONNECT
346 IF (
ALLOCATED(this%NN_CONNECT%IAD_CONNECT))
DEALLOCATE(this%NN_CONNECT%IAD_CONNECT)
347 IF (
ALLOCATED(this%NN_CONNECT%CONNECTED))
DEALLOCATE(this%NN_CONNECT%CONNECTED)
349 IF (
ALLOCATED(this%NE_CONNECT%IAD_CONNECT))
DEALLOCATE(this%NE_CONNECT%IAD_CONNECT)
350 IF (
ALLOCATED(this%NE_CONNECT%CONNECTED))
DEALLOCATE(this%NE_CONNECT%CONNECTED)
351 IF (
ALLOCATED(this%NE_CONNECT%TYPE))
DEALLOCATE(this%NE_CONNECT%TYPE)
353 ALLOCATE(nn_nb_connect(numnod))
354 nn_nb_connect(1:numnod) = 0
355 ALLOCATE(ne_nb_connect(numnod))
356 ne_nb_connect(1:numnod) = 0
357 max_edge = 12 * numels + 3 * numeltg + 4 * numelq
358 ALLOCATE(edges(2, max_edge))
420 node_id = ixtg(1 + jj, ii)
421 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
425 node1 = ixtg(1 + tri_edge(1, iedge), ii)
426 node2 = ixtg(1 + tri_edge(2, iedge), ii)
427 nb_edge = nb_edge + 1
428 edges(1, nb_edge) = node1
429 edges(2, nb_edge) = node2
435 node_id = ixq(1 + jj, ii)
436 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
440 node1 = ixq(1 + quad_edge(1, iedge), ii)
441 node2 = ixq(1 + quad_edge(2, iedge), ii)
442 nb_edge = nb_edge + 1
443 edges(1, nb_edge) = node1
444 edges(2, nb_edge) = node2
449 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
450 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
453 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
455 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
457 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
459 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
462 node1 = ixs(1 + tetra_edge(1, iedge), ii)
463 node2 = ixs(1 + tetra_edge(2, iedge), ii)
464 nb_edge = nb_edge + 1
465 edges(1, nb_edge) = node1
466 edges(2, nb_edge) = node2
471 node_id = ixs(1 + jj, ii)
474 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
476 IF(.NOT. duplicate) ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
480 node1 = ixs(1 + hexa_edge(1, iedge), ii)
481 node2 = ixs(1 + hexa_edge(2, iedge), ii)
482 IF(node1 /= node2)
THEN
483 nb_edge = nb_edge + 1
484 edges(1, nb_edge) = node1
485 edges(2, nb_edge) = node2
492 IF (edges(1, ii) > edges(2, ii))
THEN
494 edges(1, ii) = edges(2, ii)
501 ALLOCATE(this%NE_CONNECT%IAD_CONNECT(numnod + 1))
502 this%NE_CONNECT%IAD_CONNECT(1) = 1
503 DO ii = 2, numnod + 1
504 this%NE_CONNECT%IAD_CONNECT(ii) = this%NE_CONNECT%IAD_CONNECT(ii - 1) + ne_nb_connect(ii - 1)
507 ALLOCATE(adsky(numnod))
509 adsky(ii) = this%NE_CONNECT%IAD_CONNECT(ii)
512 ALLOCATE(this%NE_CONNECT%CONNECTED(this%NE_CONNECT%IAD_CONNECT(numnod + 1)))
513 this%NE_CONNECT%CONNECTED(:) = 0
514 ALLOCATE(this%NE_CONNECT%TYPE(this%NE_CONNECT%IAD_CONNECT(numnod + 1)))
515 this%NE_CONNECT%TYPE(:) = 0
521 node_id = ixtg(1 + jj, ii)
522 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
523 this%NE_CONNECT%TYPE(adsky(node_id)) = 3
524 adsky(node_id) = adsky(node_id) + 1
530 node_id = ixq(1 + jj, ii)
531 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
532 this%NE_CONNECT%TYPE(adsky(node_id)) = 2
533 adsky(node_id) = adsky(node_id) + 1
539 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
540 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
543 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
544 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
545 adsky(node_id) = adsky(node_id) + 1
547 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
548 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
549 adsky(node_id) = adsky(node_id) + 1
551 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
552 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
553 adsky(node_id) = adsky(node_id) + 1
555 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
556 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
557 adsky(node_id) = adsky(node_id) + 1
561 node_id = ixs(1 + jj, ii)
564 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
566 IF(.NOT. duplicate)
THEN
567 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
568 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
569 adsky(node_id) = adsky(node_id) + 1
575 ALLOCATE(idx(nb_edge), edges_tmp(2, nb_edge))
578 edges_tmp(1, ii) = edges(1, ii)
579 edges_tmp(2, ii) = edges(2, ii)
583 edges_tmp(1, ii) = edges(1, idx(ii))
584 edges_tmp(2, ii) = edges(2, idx(ii))
589 DO WHILE (ii < nb_edge)
592 DO WHILE (edges_tmp(1, ii + iad1) == edges_tmp(1, ii))
593 IF (ii + iad1 == nb_edge)
THEN
599 nb_edge_new = nb_edge_new + 1
600 edges(1, nb_edge_new) = edges_tmp(1, ii)
601 edges(2, nb_edge_new) = edges_tmp(2, ii)
604 CALL quicksort_i(edges_tmp(2, ii : ii + iad1 - 1), 1, iad1)
605 node1 = edges_tmp(1, ii)
606 node2 = edges_tmp(2, ii)
607 nb_edge_new = nb_edge_new + 1
608 edges(1, nb_edge_new) = node1
609 edges(2, nb_edge_new) = node2
610 DO iad2 = 0, iad1 - 1
611 IF (edges_tmp(2, ii + iad2) /= node2)
THEN
612 nb_edge_new = nb_edge_new + 1
613 node2 = edges_tmp(2, ii + iad2)
614 edges(1, nb_edge_new) = node1
615 edges(2, nb_edge_new) = node2
623 DO ii = 1, nb_edge_new
624 nn_nb_connect(edges(1, ii)) = nn_nb_connect(edges(1, ii)) + 1
625 nn_nb_connect(edges(2, ii)) = nn_nb_connect(edges(2, ii)) + 1
627 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
629 ALLOCATE(this%NN_CONNECT%IAD_CONNECT(numnod + 1))
630 this%NN_CONNECT%IAD_CONNECT(1) = 1
631 DO ii = 2, numnod + 1
632 this%NN_CONNECT%IAD_CONNECT(ii) = this%NN_CONNECT%IAD_CONNECT(ii -
636 adsky(ii) = this%NN_CONNECT%IAD_CONNECT(ii)
638 ALLOCATE(this%NN_CONNECT%CONNECTED(this%NN_CONNECT%IAD_CONNECT(numnod + 1)))
639 this%NN_CONNECT%CONNECTED(:) = 0
640 DO ii = 1, nb_edge_new
643 this%NN_CONNECT%CONNECTED(adsky(node1)) = node2
644 this%NN_CONNECT%CONNECTED(adsky(node2)) = node1
645 adsky(node1) = adsky(node1) + 1
646 adsky(node2) = adsky(node2) + 1
649 DEALLOCATE(adsky, edges, idx, edges_tmp, nn_nb_connect, ne_nb_connect)
672 . NPROPGI,NUMGEO, NPROPM, NUMMAT, NUMNOD, NUMELQ, NUMELTG, NUMELS, N2D,
673 . IALE, IEULER, ITHERM, IALELAG, ISHADOW,
687 INTEGER,
INTENT(IN) :: NUMNOD, NUMELQ, NUMELTG, NUMELS, NPROPGI
688 INTEGER,
INTENT(IN) :: NIXQ, NIXTG, NIXS, N2D, IALE, IEULER, ITHERM, IALELAG, NPROPM, NUMMAT,NUMGEO
689 MY_REAL,
DIMENSION(NPROPM, NUMMAT),
INTENT(IN) :: PM
690 INTEGER,
DIMENSION(NIXQ, NUMELQ),
INTENT(IN) :: IXQ
691 INTEGER,
DIMENSION(NIXTG, NUMELTG),
INTENT(IN) :: IXTG
692 INTEGER,
DIMENSION(NIXS, NUMELS),
INTENT(IN) :: IXS
693 INTEGER,
DIMENSION(NPROPGI, NUMGEO),
INTENT(IN) :: IGEO
694 LOGICAL,
INTENT(IN) :: ISHADOW
698 INTEGER :: II, JJ,KK, NODE_ID, INODE
700 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADSKY
701 INTEGER :: IAD1, ITMP, IAD
702 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_CONNECT, NE_NB_CONNECT, CONNECTED,
TYPE, EE_NB_CONNECT,ITAG
703 INTEGER(8) :: VEC_PTR1
704 INTEGER :: JAL_FROM_MAT, JAL_FROM_PROP, JAL, JALT, MLW, IMID, TMP, COUNT, JTHE, JSHADOW
705 INTEGER,
DIMENSION(4),
TARGET :: TETRA_NODES
706 INTEGER,
DIMENSION(6, 4),
TARGET :: HEXA_FACE
707 INTEGER,
DIMENSION(6, 3),
TARGET :: TETRA_FACE
708 INTEGER,
DIMENSION(4, 2),
TARGET :: QUAD_FACE
709 INTEGER,
DIMENSION(3, 2),
TARGET :: TRI_FACE
710 INTEGER,
DIMENSION(:, :),
POINTER :: ELEM_FACE, ELEM_FACE2
711 INTEGER :: KFACE, KFACE2, NFACE, NFACE_NODE, NFACE2, NFACE_NODE2
717 IF (iale + ieuler + ialelag +itherm == 0 .AND. .NOT.ishadow)
THEN
752 tetra_face(1, 1) = -1
753 tetra_face(1, 2) = -1
754 tetra_face(1, 3) = -1
758 tetra_face(3, 1) = -1
759 tetra_face(3, 2) = -1
760 tetra_face(3, 3) = -1
786 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
788 IF (
ALLOCATED(this%NALE))
DEALLOCATE(this%NALE)
789 ALLOCATE(this%NALE(numnod))
790 this%NALE(1:numnod) = 0
793 IF (
ALLOCATED(this%EE_CONNECT%IAD_CONNECT))
DEALLOCATE(this%EE_CONNECT%IAD_CONNECT
794 IF (
ALLOCATED(this%EE_CONNECT%CONNECTED))
DEALLOCATE(this%EE_CONNECT%CONNECTED)
795 IF (
ALLOCATED(this%EE_CONNECT%TYPE))
DEALLOCATE(this%EE_CONNECT%TYPE)
796 IF (
ALLOCATED(this%EE_CONNECT%IFACE2))
DEALLOCATE(this%EE_CONNECT%IFACE2)
799 ALLOCATE(ne_nb_connect(numnod))
800 ne_nb_connect(1:numnod) = 0
806! ale : jal = 1, euler : jal = 2
807 jal_from_mat = nint(pm(72, iabs(ixtg(1, ii))))
808 jal_from_prop = igeo(62, iabs(ixtg(5, ii)))
809 jal =
max(jal_from_mat, jal_from_prop)
810 jthe = nint(pm(71, iabs(ixtg(1, ii))))
811 jshadow = nint(pm(96, iabs(ixtg(1, ii))))
812 jalt = jal + jthe + jshadow
813 imid = iabs(ixtg(1, ii))
815 mlw = nint(pm(19,imid))
817 node_id = ixtg(1 + jj, ii)
818 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
819 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
820 this%NALE(node_id) =
max(this%NALE(node_id), jal)
822 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
832 jal_from_mat = nint(pm(72, iabs(ixq(1, ii))))
833 jal_from_prop = igeo(62,iabs(ixq(6, ii)))
834 jal =
max(jal_from_mat, jal_from_prop)
835 jthe = nint(pm(71, iabs(ixq(1, ii))))
836 jshadow = nint(pm(96, iabs(ixq(1, ii))))
837 jalt = jal + jthe + jshadow
838 imid = iabs(ixq(1, ii))
840 mlw = nint(pm(19,imid))
842 node_id = ixq(1 + jj, ii)
843 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
844 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
845 this%NALE(node_id) =
max(this%NALE(node_id), jal)
847 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
855 jal_from_mat = nint(pm(72, iabs(ixs(1, ii))))
856 jal_from_prop = igeo(62, iabs(ixs(10, ii)))
857 jal =
max(jal_from_mat, jal_from_prop)
858 jthe = nint(pm(71, iabs(ixs(1, ii))))
859 jshadow = nint(pm(96, iabs(ixs(1, ii))))
860 jalt = jal + jthe + jshadow
861 imid = iabs(ixs(1, ii))
863 mlw = nint(pm(19,imid))
864 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
865 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
868 node_id = ixs(tetra_nodes(jj), ii)
869 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
870 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
871 this%NALE(node_id) =
max(this%NALE(node_id), jal)
873 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id
880 node_id = ixs(1 + jj, ii)
883 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
885 IF( .NOT. duplicate)
THEN
886 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
887 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
888 this%NALE(node_id) =
max(this%NALE(node_id), jal)
890 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) =
898 this%NALE_ALREADY_COMPUTED = .true.
901 ALLOCATE(iad_connect(numnod + 1))
903 DO ii = 2, numnod + 1
904 iad_connect(ii) = iad_connect(ii - 1) + ne_nb_connect(ii - 1)
906 ALLOCATE(adsky(numnod))
908 adsky(ii) = iad_connect(ii)
911 ALLOCATE(connected(iad_connect(numnod + 1)))
913 ALLOCATE(
TYPE(iad_connect(numnod + 1)))
920 jal_from_mat = nint(pm(72, iabs(ixtg(1, ii))))
921 jal_from_prop = igeo(62,iabs(ixtg(5, ii)))
922 jal =
max(jal_from_mat, jal_from_prop)
923 jalt = jal + nint(pm(71, iabs(ixtg(1, ii))) + pm(96, iabs(ixtg(1, ii))))
924 imid = iabs(ixtg(1, ii))
927 node_id = ixtg(1 + jj, ii)
928 connected(adsky(node_id)) = ii
929 TYPE(adsky(node_id)) = 3
930 adsky(node_id) = adsky(node_id) + 1
937 jal_from_mat = nint(pm(72, iabs(ixq(1, ii))))
938 jal_from_prop = igeo(62, iabs(ixq(6, ii)) )
939 jal =
max(jal_from_mat, jal_from_prop)
940 jalt = jal + nint(pm(71, iabs(ixq(1, ii))) + pm(96, iabs(ixq(1, ii))))
941 imid = iabs(ixq(1, ii))
944 node_id = ixq(1 + jj, ii)
945 connected(adsky(node_id)) = ii
946 TYPE(adsky(node_id)) = 2
947 adsky(node_id) = adsky(node_id) + 1
953 jal_from_mat = nint(pm(72, iabs(ixs(1, ii))))
954 jal_from_prop = igeo(62, iabs(ixs(10, ii)) )
955 jal =
max(jal_from_mat, jal_from_prop)
956 jalt = jal + nint(pm(71, iabs(ixs(1, ii))) + pm(96, iabs(ixs(1, ii))))
957 imid = iabs(ixs(1, ii))
959 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
960 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
963 connected(adsky(node_id)) = ii
964 TYPE(adsky(node_id)) = 1
965 adsky(node_id) = adsky(node_id) + 1
967 connected(adsky(node_id)) = ii
968 TYPE(adsky(node_id)) = 1
969 adsky(node_id) = adsky(node_id) + 1
971 connected(adsky(node_id)) = ii
972 TYPE(adsky(node_id)) = 1
973 adsky(node_id) = adsky(node_id) + 1
975 connected(adsky(node_id)) = ii
976 TYPE(adsky(node_id)) = 1
977 adsky(node_id) = adsky(node_id) + 1
981 node_id = ixs(1 + jj, ii)
984 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
986 IF(.NOT. duplicate)
THEN
987 connected(adsky(node_id)) = ii
988 TYPE(adsky(node_id)) = 1
989 adsky(node_id) = adsky(node_id) + 1
998 ALLOCATE(this%EE_CONNECT%IAD_CONNECT(numels+1))
999 ALLOCATE(ee_nb_connect(numels))
1001 ALLOCATE(this%EE_CONNECT%IAD_CONNECT(numeltg + numelq + 1))
1002 ALLOCATE(ee_nb_connect(numeltg + numelq))
1004 ee_nb_connect(:) = 0
1010 jal_from_mat = nint(pm(72, iabs(ixs(1, ii))))
1011 jal_from_prop = igeo(62, iabs(ixs(10, ii)) )
1012 jal =
max(jal_from_mat, jal_from_prop)
1013 jalt = jal + nint(pm(71, iabs(ixs(1, ii))) + pm(96, iabs(ixs(1, ii))))
1014 IF (jalt == 0) cycle
1015 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
1016 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
1018 ee_nb_connect(ii) = 6
1021 ee_nb_connect(ii) = 6
1024 this%EE_CONNECT%IAD_CONNECT(1) = 1
1025 DO ii = 2, numels + 1
1026 this%EE_CONNECT%IAD_CONNECT(ii) = this%EE_CONNECT%IAD_CONNECT(ii - 1) + ee_nb_connect(ii - 1)
1028 tmp = this%EE_CONNECT%IAD_CONNECT(numels + 1)
1033 jal_from_mat = nint(pm(72, iabs(ixq(1, ii))))
1034 jal_from_prop = igeo(62, iabs(ixq(6, ii)) )
1035 jal =
max(jal_from_mat, jal_from_prop)
1036 jalt = jal + nint(pm(71, iabs(ixq(1, ii))) + pm(96, iabs(ixq(1, ii))))
1037 IF (jalt == 0) cycle
1038 ee_nb_connect(ii) = 4
1042 jal_from_mat = nint(pm(72, iabs(ixtg(1, ii))))
1043 jal_from_prop = igeo(62, iabs(ixtg(5, ii)) )
1044 jal =
max(jal_from_mat, jal_from_prop)
1045 jalt = jal + nint(pm(71, iabs(ixtg(1, ii))) + pm(96, iabs(ixtg(1, ii))))
1046 IF (jalt == 0) cycle
1047 ee_nb_connect(ii) = 3
1049 this%EE_CONNECT%IAD_CONNECT(1) = 1
1050 DO ii = 2, numelq + numeltg + 1
1051 this%EE_CONNECT%IAD_CONNECT(ii) = this%EE_CONNECT%IAD_CONNECT(ii - 1) + ee_nb_connect(ii - 1)
1053 tmp = this%EE_CONNECT%IAD_CONNECT(numelq + numeltg + 1) - 1
1056 ALLOCATE(this%EE_CONNECT%CONNECTED(tmp))
1057 ALLOCATE(this%EE_CONNECT%TYPE(tmp))
1058 ALLOCATE(this%EE_CONNECT%IFACE2(tmp))
1059 this%EE_CONNECT%TYPE(1:tmp) = 0
1060 this%EE_CONNECT%CONNECTED(1:tmp) = 0
1061 this%EE_CONNECT%IFACE2(1:tmp) = 0
1062 CALL intvector_create(vec_ptr1)
1063 ALLOCATE(itag(numnod))
1067 jal_from_mat = nint(pm(72, iabs(ixs(1, ii))))
1068 jal_from_prop = igeo(62, iabs(ixs(10, ii)) )
1069 jal =
max(jal_from_mat, jal_from_prop)
1070 jalt = jal + nint(pm(71, iabs(ixs(1, ii))) + pm(96, iabs(ixs(1, ii))))
1071 IF (jalt == 0) cycle
1072 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1073 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
1074 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
1079 elem_face => tetra_face
1085 elem_face => hexa_face
1089 CALL intvector_clear(vec_ptr1)
1093 IF(nface_node == 4)
THEN
1095 nn(kk) = ixs(1 + elem_face(kface, kk), ii)
1097 IF(nn(1)==nn(2) .AND. nn(3)==nn(4))
THEN
1099 ELSEIF(nn(2)==nn(3) .AND. nn(1)==nn(4))
THEN
1104 IF(.NOT. skip_face)
THEN
1105 DO inode = 1, nface_node
1106 IF (elem_face(kface, inode) < 0) cycle
1107 node_id = ixs(1 + elem_face(kface, inode), ii)
1109 DO iad = iad_connect(node_id), iad_connect(node_id + 1) - 1
1110 IF (connected(iad) /= ii)
THEN
1111 CALL intvector_push_back(vec_ptr1, connected(iad))
1118 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1119 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1120 IF(skip_face) jj = 0
1121 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1123 IF (ixs(2, jj) == ixs(3, jj) .AND. ixs(4, jj) == ixs(5, jj) .AND.
1124 . ixs(6, jj) == ixs(9, jj) .AND. ixs(7, jj) == ixs(8, jj))
THEN
1128 elem_face2 => tetra_face
1129 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 1
1134 elem_face2 => hexa_face
1135 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 0
1137 DO kface2 = 1, nface2
1139 DO inode = 1, nface_node2
1140 IF (elem_face(kface2, inode) < 0) cycle
1141 itmp = itmp * itag(ixs(1 + elem_face(kface2, inode), jj))
1144 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1149 DO inode = 1, nface_node
1151 node_id = ixs(1 + elem_face(kface, inode), ii)
1159 jal_from_mat = nint(pm(72, iabs(ixq(1, ii))))
1160 jal_from_prop = igeo(62, iabs(ixq(6, ii)) )
1161 jal =
max(jal_from_mat, jal_from_prop)
1162 jalt = jal + nint(pm(71, iabs(ixq(1, ii))) + pm(96, iabs(ixq(1, ii))))
1163 IF (jalt == 0) cycle
1164 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1167 elem_face => quad_face
1170 CALL intvector_clear(vec_ptr1)
1171 DO inode = 1, nface_node
1172 node_id = ixq(1 + elem_face(kface, inode), ii)
1174 DO iad = iad_connect(node_id), iad_connect(node_id + 1) - 1
1175 IF (connected(iad) /= ii)
THEN
1176 CALL intvector_push_back(vec_ptr1, connected(iad))
1181 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1182 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1184 IF (jj > numelq)
THEN
1187 elem_face2 => tri_face
1188 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 3
1192 elem_face2 => quad_face
1193 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 2
1195 DO kface2 = 1, nface2
1197 DO inode = 1, nface_node2
1198 itmp = itmp * itag(ixq(1 + elem_face(kface2, inode
1201 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1206 DO inode = 1, nface_node
1207 node_id = ixq(1 + elem_face(kface, inode), ii)
1214 jal_from_mat = nint(pm(72, iabs(ixtg(1, ii))))
1215 jal_from_prop = igeo(62, iabs(ixtg(5, ii)) )
1216 jal =
max(jal_from_mat, jal_from_prop)
1217 jalt = jal + nint(pm(71, iabs(ixtg(1, ii))) + pm(96, iabs(ixtg(1, ii))))
1218 IF (jalt == 0) cycle
1219 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1222 elem_face => tri_face
1225 CALL intvector_clear(vec_ptr1)
1226 DO inode = 1, nface_node
1227 node_id = ixtg(1 + elem_face(kface, inode), ii)
1229 DO iad = iad_connect(node_id), iad_connect(node_id + 1) - 1
1230 IF (connected(iad) /= ii)
THEN
1231 CALL intvector_push_back(vec_ptr1, connected
1236 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1237 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1239 IF (jj > numelq)
THEN
1242 elem_face2 => tri_face
1243 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 3
1247 elem_face2 => quad_face
1248 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 2
1250 DO kface2 = 1, nface2
1252 DO inode = 1, nface_node2
1253 itmp = itmp * itag(ixtg(1 + elem_face(kface2, inode), jj))
1256 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1261 DO inode = 1, nface_node
1262 node_id = ixtg(1 + elem_face(kface, inode), ii)
1269 CALL intvector_delete(vec_ptr1)
1270 IF (
ALLOCATED(ee_nb_connect))
DEALLOCATE(ee_nb_connect)
1271 IF (
ALLOCATED(itag))
DEALLOCATE(itag)
1272 IF (
ALLOCATED(ne_nb_connect))
DEALLOCATE(ne_nb_connect)
1273 IF (
ALLOCATED(iad_connect))
DEALLOCATE(iad_connect)
1274 IF (
ALLOCATED(adsky))
DEALLOCATE(adsky)
1275 IF (
ALLOCATED(connected))
DEALLOCATE(connected)