324 INTEGER,
INTENT(IN) :: NUMNOD, NUMELQ, NUMELTG, NUMELS, NIXQ, NIXTG, NIXS
325 INTEGER,
DIMENSION(NIXQ, NUMELQ),
INTENT(IN) :: IXQ
326 INTEGER,
DIMENSION(NIXTG, NUMELTG),
INTENT(IN) :: IXTG
327 INTEGER,
DIMENSION(NIXS, NUMELS),
INTENT(IN) :: IXS
331 INTEGER :: II, JJ,KK, NODE_ID, NODE1, NODE2
333 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADSKY
334 INTEGER :: IAD1, IAD2, ITMP
335 INTEGER :: MAX_EDGE, NB_EDGE, NB_EDGE_NEW, IEDGE, CUR_POS
336 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: EDGES, EDGES_TMP
337 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IDX
338 INTEGER,
DIMENSION(2, 3) :: TRI_EDGE
339 INTEGER,
DIMENSION(2, 4) :: QUAD_EDGE
340 INTEGER,
DIMENSION(2, 12) :: HEXA_EDGE
341 INTEGER,
DIMENSION(2, 6) :: TETRA_EDGE
342 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NN_NB_CONNECT, NE_NB_CONNECT
348 IF (
ALLOCATED(this%NN_CONNECT%IAD_CONNECT))
DEALLOCATE(this%NN_CONNECT%IAD_CONNECT)
349 IF (
ALLOCATED(this%NN_CONNECT%CONNECTED))
DEALLOCATE(this%NN_CONNECT%CONNECTED)
351 IF (
ALLOCATED(this%NE_CONNECT%IAD_CONNECT))
DEALLOCATE(this%NE_CONNECT%IAD_CONNECT)
352 IF (
ALLOCATED(this%NE_CONNECT%CONNECTED))
DEALLOCATE(this%NE_CONNECT%CONNECTED)
353 IF (
ALLOCATED(this%NE_CONNECT%TYPE))
DEALLOCATE(this%NE_CONNECT%TYPE)
355 ALLOCATE(nn_nb_connect(numnod))
356 nn_nb_connect(1:numnod) = 0
357 ALLOCATE(ne_nb_connect(numnod))
358 ne_nb_connect(1:numnod) = 0
359 max_edge = 12 * numels + 3 * numeltg + 4 * numelq
360 ALLOCATE(edges(2, max_edge))
422 node_id = ixtg(1 + jj, ii)
423 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
427 node1 = ixtg(1 + tri_edge(1, iedge), ii)
428 node2 = ixtg(1 + tri_edge(2, iedge), ii)
429 nb_edge = nb_edge + 1
430 edges(1, nb_edge) = node1
431 edges(2, nb_edge) = node2
437 node_id = ixq(1 + jj, ii)
438 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
442 node1 = ixq(1 + quad_edge(1, iedge), ii)
443 node2 = ixq(1 + quad_edge(2, iedge), ii)
444 nb_edge = nb_edge + 1
445 edges(1, nb_edge) = node1
446 edges(2, nb_edge) = node2
451 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
452 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
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
461 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
464 node1 = ixs(1 + tetra_edge(1, iedge), ii)
465 node2 = ixs(1 + tetra_edge(2, iedge), ii)
466 nb_edge = nb_edge + 1
467 edges(1, nb_edge) = node1
468 edges(2, nb_edge) = node2
473 node_id = ixs(1 + jj, ii)
476 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
478 IF(.NOT. duplicate) ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
482 node1 = ixs(1 + hexa_edge(1, iedge), ii)
483 node2 = ixs(1 + hexa_edge(2, iedge), ii)
484 IF(node1 /= node2)
THEN
485 nb_edge = nb_edge + 1
486 edges(1, nb_edge) = node1
487 edges(2, nb_edge) = node2
494 IF (edges(1, ii) > edges(2, ii))
THEN
496 edges(1, ii) = edges(2, ii)
503 ALLOCATE(this%NE_CONNECT%IAD_CONNECT(numnod + 1))
504 this%NE_CONNECT%IAD_CONNECT(1) = 1
505 DO ii = 2, numnod + 1
506 this%NE_CONNECT%IAD_CONNECT(ii) = this%NE_CONNECT%IAD_CONNECT(ii - 1) + ne_nb_connect(ii - 1)
509 ALLOCATE(adsky(numnod))
511 adsky(ii) = this%NE_CONNECT%IAD_CONNECT(ii)
514 ALLOCATE(this%NE_CONNECT%CONNECTED(this%NE_CONNECT%IAD_CONNECT(numnod + 1)))
515 this%NE_CONNECT%CONNECTED(:) = 0
516 ALLOCATE(this%NE_CONNECT%TYPE(this%NE_CONNECT%IAD_CONNECT(numnod + 1)))
517 this%NE_CONNECT%TYPE(:) = 0
523 node_id = ixtg(1 + jj, ii)
524 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
525 this%NE_CONNECT%TYPE(adsky(node_id)) = 3
526 adsky(node_id) = adsky(node_id) + 1
532 node_id = ixq(1 + jj, ii)
533 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
534 this%NE_CONNECT%TYPE(adsky(node_id)) = 2
535 adsky(node_id) = adsky(node_id) + 1
541 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
542 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
545 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
546 this%NE_CONNECT%TYPE(adsky
547 adsky(node_id) = adsky(node_id) + 1
549 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
550 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
551 adsky(node_id) = adsky(node_id) + 1
553 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
554 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
555 adsky(node_id) = adsky(node_id) + 1
557 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
558 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
559 adsky(node_id) = adsky(node_id) + 1
563 node_id = ixs(1 + jj, ii)
566 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
568 IF(.NOT. duplicate)
THEN
569 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
570 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
571 adsky(node_id) = adsky(node_id) + 1
577 ALLOCATE(idx(nb_edge), edges_tmp(2, nb_edge))
580 edges_tmp(1, ii) = edges(1, ii)
581 edges_tmp(2, ii) = edges(2, ii)
585 edges_tmp(1, ii) = edges(1, idx(ii))
586 edges_tmp(2, ii) = edges(2, idx(ii))
591 DO WHILE (ii < nb_edge)
594 DO WHILE (edges_tmp(1, ii + iad1) == edges_tmp(1, ii))
595 IF (ii + iad1 == nb_edge)
THEN
601 nb_edge_new = nb_edge_new + 1
602 edges(1, nb_edge_new) = edges_tmp(1, ii)
603 edges(2, nb_edge_new) = edges_tmp(2, ii)
606 CALL quicksort_i(edges_tmp(2, ii : ii + iad1 - 1), 1, iad1)
607 node1 = edges_tmp(1, ii)
608 node2 = edges_tmp(2, ii)
609 nb_edge_new = nb_edge_new + 1
610 edges(1, nb_edge_new) = node1
611 edges(2, nb_edge_new) = node2
612 DO iad2 = 0, iad1 - 1
613 IF (edges_tmp(2, ii + iad2) /= node2)
THEN
614 nb_edge_new = nb_edge_new + 1
615 node2 = edges_tmp(2, ii + iad2)
616 edges(1, nb_edge_new) = node1
617 edges(2, nb_edge_new) = node2
625 DO ii = 1, nb_edge_new
626 nn_nb_connect(edges(1, ii)) = nn_nb_connect(edges(1, ii)) + 1
627 nn_nb_connect(edges(2, ii)) = nn_nb_connect(edges(2, ii)) + 1
631 ALLOCATE(this%NN_CONNECT%IAD_CONNECT(numnod + 1))
632 this%NN_CONNECT%IAD_CONNECT(1) = 1
633 DO ii = 2, numnod + 1
634 this%NN_CONNECT%IAD_CONNECT(ii) = this%NN_CONNECT%IAD_CONNECT(ii - 1) + nn_nb_connect(ii - 1)
638 adsky(ii) = this%NN_CONNECT%IAD_CONNECT(ii)
640 ALLOCATE(this%NN_CONNECT%CONNECTED(this%NN_CONNECT%IAD_CONNECT(numnod + 1)))
641 this%NN_CONNECT%CONNECTED(:) = 0
642 DO ii = 1, nb_edge_new
645 this%NN_CONNECT%CONNECTED(adsky(node1)) = node2
646 this%NN_CONNECT%CONNECTED(adsky(node2)) = node1
647 adsky(node1) = adsky(node1) + 1
648 adsky(node2) = adsky(node2) + 1
651 DEALLOCATE(adsky, edges, idx, edges_tmp, nn_nb_connect, ne_nb_connect)
674 . NPROPGI,NUMGEO, NPROPM, NUMMAT, NUMNOD, NUMELQ, NUMELTG, NUMELS, N2D,
675 . IALE, IEULER, ITHERM, IALELAG, ISHADOW,
689 INTEGER,
INTENT(IN) :: NUMNOD, NUMELQ, NUMELTG, NUMELS, NPROPGI
690 INTEGER,
INTENT(IN) :: NIXQ, NIXTG, NIXS, N2D, IALE, IEULER, ITHERM, , NPROPM, NUMMAT,NUMGEO
691 MY_REAL,
DIMENSION(NPROPM, NUMMAT),
INTENT(IN) :: PM
692 INTEGER,
DIMENSION(NIXQ, NUMELQ),
INTENT(IN) :: IXQ
693 INTEGER,
DIMENSION(NIXTG, NUMELTG),
INTENT(IN) :: IXTG
694 INTEGER,
DIMENSION(NIXS, NUMELS),
INTENT(IN) :: IXS
695 INTEGER,
DIMENSION(NPROPGI, NUMGEO),
INTENT(IN) :: IGEO
696 LOGICAL,
INTENT(IN) :: ISHADOW
700 INTEGER :: II, JJ,KK, NODE_ID, INODE
702 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADSKY
703 INTEGER :: IAD1, ITMP, IAD
704 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_CONNECT, NE_NB_CONNECT, CONNECTED,
TYPE, EE_NB_CONNECT,ITAG
706 INTEGER :: JAL_FROM_MAT, JAL_FROM_PROP, JAL, JALT, MLW, IMID, TMP, COUNT, JTHE, JSHADOW
707 INTEGER,
DIMENSION(4),
TARGET :: TETRA_NODES
708 INTEGER,
DIMENSION(6, 4),
TARGET :: HEXA_FACE
709 INTEGER,
DIMENSION(6, 3),
TARGET :: TETRA_FACE
710 INTEGER,
DIMENSION(4, 2),
TARGET :: QUAD_FACE
711 INTEGER,
DIMENSION(3, 2),
TARGET :: TRI_FACE
712 INTEGER,
DIMENSION(:, :),
POINTER :: ELEM_FACE, ELEM_FACE2
713 INTEGER :: KFACE, KFACE2, NFACE, NFACE_NODE, NFACE2, NFACE_NODE2
719 IF (iale + ieuler + ialelag +itherm == 0 .AND. .NOT.ishadow)
THEN
754 tetra_face(1, 1) = -1
755 tetra_face(1, 2) = -1
756 tetra_face(1, 3) = -1
760 tetra_face(3, 1) = -1
761 tetra_face(3, 2) = -1
762 tetra_face(3, 3) = -1
788 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
790 IF (
ALLOCATED(this%NALE))
DEALLOCATE(this%NALE)
791 ALLOCATE(this%NALE(numnod))
792 this%NALE(1:numnod) = 0
795 IF (
ALLOCATED(this%EE_CONNECT%IAD_CONNECT))
DEALLOCATE(this%EE_CONNECT%IAD_CONNECT)
796 IF (
ALLOCATED(this%EE_CONNECT%CONNECTED))
DEALLOCATE(this%EE_CONNECT%CONNECTED)
797 IF (
ALLOCATED(this%EE_CONNECT%TYPE))
DEALLOCATE(this%EE_CONNECT%TYPE)
798 IF (
ALLOCATED(this%EE_CONNECT%IFACE2))
DEALLOCATE(this%EE_CONNECT%IFACE2)
801 ALLOCATE(ne_nb_connect(numnod))
802 ne_nb_connect(1:numnod) = 0
809 jal_from_mat = nint(pm(72, iabs(ixtg(1, ii))))
810 jal_from_prop = igeo(62, iabs(ixtg(5, ii)))
811 jal =
max(jal_from_mat, jal_from_prop)
812 jthe = nint(pm(71, iabs(ixtg(1, ii))))
813 jshadow = nint(pm(96, iabs(ixtg(1, ii))))
814 jalt = jal + jthe + jshadow
815 imid = iabs(ixtg(1, ii))
817 mlw = nint(pm(19,imid))
819 node_id = ixtg(1 + jj, ii)
820 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
821 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
822 this%NALE(node_id) =
max(this%NALE(node_id), jal)
824 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
834 jal_from_mat = nint(pm(72, iabs(ixq(1, ii))))
835 jal_from_prop = igeo(62,iabs(ixq(6, ii)))
836 jal =
max(jal_from_mat, jal_from_prop)
837 jthe = nint(pm(71, iabs(ixq(1, ii))))
838 jshadow = nint(pm(96, iabs(ixq(1, ii))))
839 jalt = jal + jthe + jshadow
840 imid = iabs(ixq(1, ii))
842 mlw = nint(pm(19,imid))
844 node_id = ixq(1 + jj, ii)
845 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
846 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
847 this%NALE(node_id) =
max(this%NALE(node_id), jal)
849 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
857 jal_from_mat = nint(pm(72, iabs(ixs(1, ii))))
858 jal_from_prop = igeo(62, iabs(ixs(10, ii)))
859 jal =
max(jal_from_mat, jal_from_prop)
860 jthe = nint(pm(71, iabs(ixs(1, ii))))
861 jshadow = nint(pm(96, iabs(ixs(1, ii))))
862 jalt = jal + jthe + jshadow
863 imid = iabs(ixs(1, ii))
865 mlw = nint(pm(19,imid))
866 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
867 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
870 node_id = ixs(tetra_nodes(jj), ii)
871 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
872 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
873 this%NALE(node_id) =
max(this%NALE(node_id), jal)
875 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
882 node_id = ixs(1 + jj, ii)
885 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
887 IF( .NOT. duplicate)
THEN
888 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
889 IF (.NOT. this%NALE_ALREADY_COMPUTED)
THEN
890 this%NALE(node_id) =
max(this%NALE(node_id), jal)
892 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
900 this%NALE_ALREADY_COMPUTED = .true.
903 ALLOCATE(iad_connect(numnod + 1))
905 DO ii = 2, numnod + 1
906 iad_connect(ii) = iad_connect(ii - 1) + ne_nb_connect(ii - 1)
908 ALLOCATE(adsky(numnod))
910 adsky(ii) = iad_connect(ii)
913 ALLOCATE(connected(iad_connect(numnod + 1)))
915 ALLOCATE(
TYPE(iad_connect(numnod + 1)))
922 jal_from_mat = nint(pm(72, iabs(ixtg(1, ii))))
923 jal_from_prop = igeo(62,iabs(ixtg(5, ii)))
924 jal =
max(jal_from_mat, jal_from_prop)
925 jalt = jal + nint(pm(71, iabs(ixtg(1, ii))) + pm(96, iabs(ixtg(1, ii))))
926 imid = iabs(ixtg(1, ii))
929 node_id = ixtg(1 + jj, ii)
930 connected(adsky(node_id)) = ii
931 TYPE(adsky(node_id)) = 3
932 adsky(node_id) = adsky(node_id) + 1
939 jal_from_mat = nint(pm(72, iabs(ixq(1, ii))))
940 jal_from_prop = igeo(62, iabs(ixq(6, ii)) )
941 jal =
max(jal_from_mat, jal_from_prop)
942 jalt = jal + nint(pm(71, iabs(ixq(1, ii))) + pm(96, iabs(ixq(1, ii))))
943 imid = iabs(ixq(1, ii))
946 node_id = ixq(1 + jj, ii)
947 connected(adsky(node_id)) = ii
948 TYPE(adsky(node_id)) = 2
949 adsky(node_id) = adsky(node_id) + 1
955 jal_from_mat = nint(pm(72, iabs(ixs(1, ii))))
956 jal_from_prop = igeo(62, iabs(ixs(10, ii)) )
957 jal =
max(jal_from_mat, jal_from_prop)
958 jalt = jal + nint(pm(71, iabs(ixs(1, ii))) + pm(96, iabs(ixs(1, ii))))
959 imid = iabs(ixs(1, ii))
961 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
962 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
965 connected(adsky(node_id)) = ii
966 TYPE(adsky(node_id)) = 1
967 adsky(node_id) = adsky(node_id) + 1
969 connected(adsky(node_id)) = ii
970 TYPE(adsky(node_id)) = 1
971 adsky(node_id) = adsky(node_id) + 1
973 connected(adsky(node_id)) = ii
974 TYPE(adsky(node_id)) = 1
975 adsky(node_id) = adsky(node_id) + 1
977 connected(adsky(node_id)) = ii
978 TYPE(adsky(node_id)) = 1
979 adsky(node_id) = adsky(node_id) + 1
983 node_id = ixs(1 + jj, ii)
986 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
988 IF(.NOT. duplicate)
THEN
989 connected(adsky(node_id)) = ii
990 TYPE(adsky(node_id)) = 1
991 adsky(node_id) = adsky(node_id) + 1
1000 ALLOCATE(this%EE_CONNECT%IAD_CONNECT(numels+1))
1001 ALLOCATE(ee_nb_connect(numels))
1003 ALLOCATE(this%EE_CONNECT%IAD_CONNECT(numeltg + numelq + 1))
1004 ALLOCATE(ee_nb_connect(numeltg + numelq))
1006 ee_nb_connect(:) = 0
1012 jal_from_mat = nint(pm(72, iabs(ixs(1, ii))))
1013 jal_from_prop = igeo(62, iabs(ixs(10, ii)) )
1014 jal =
max(jal_from_mat, jal_from_prop)
1015 jalt = jal + nint(pm(71, iabs(ixs(1, ii))) + pm(96, iabs(ixs(1, ii))))
1016 IF (jalt == 0) cycle
1017 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
1018 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
1020 ee_nb_connect(ii) = 6
1023 ee_nb_connect(ii) = 6
1026 this%EE_CONNECT%IAD_CONNECT(1) = 1
1027 DO ii = 2, numels + 1
1028 this%EE_CONNECT%IAD_CONNECT(ii) = this%EE_CONNECT%IAD_CONNECT(ii - 1) + ee_nb_connect(ii - 1)
1030 tmp = this%EE_CONNECT%IAD_CONNECT(numels + 1)
1035 jal_from_mat = nint(pm(72, iabs(ixq(1, ii))))
1036 jal_from_prop = igeo(62, iabs(ixq(6, ii)) )
1037 jal =
max(jal_from_mat, jal_from_prop)
1038 jalt = jal + nint(pm(71, iabs(ixq(1, ii))) + pm(96, iabs(ixq(1, ii))))
1039 IF (jalt == 0) cycle
1040 ee_nb_connect(ii) = 4
1044 jal_from_mat = nint(pm(72, iabs(ixtg(1, ii))))
1045 jal_from_prop = igeo(62, iabs(ixtg(5, ii)) )
1046 jal =
max(jal_from_mat, jal_from_prop)
1047 jalt = jal + nint(pm(71, iabs(ixtg(1, ii))) + pm(96, iabs(ixtg(1, ii))))
1048 IF (jalt == 0) cycle
1049 ee_nb_connect(ii) = 3
1051 this%EE_CONNECT%IAD_CONNECT(1) = 1
1052 DO ii = 2, numelq + numeltg + 1
1053 this%EE_CONNECT%IAD_CONNECT(ii) = this%EE_CONNECT%IAD_CONNECT(ii - 1) + ee_nb_connect(ii - 1)
1055 tmp = this%EE_CONNECT%IAD_CONNECT(numelq + numeltg + 1) - 1
1058 ALLOCATE(this%EE_CONNECT%CONNECTED(tmp))
1059 ALLOCATE(this%EE_CONNECT%TYPE(tmp))
1060 ALLOCATE(this%EE_CONNECT%IFACE2(tmp))
1061 this%EE_CONNECT%TYPE(1:tmp) = 0
1062 this%EE_CONNECT%CONNECTED(1:tmp) = 0
1063 this%EE_CONNECT%IFACE2(1:tmp) = 0
1064 CALL intvector_create(vec_ptr1)
1065 ALLOCATE(itag(numnod))
1069 jal_from_mat = nint(pm(72, iabs(ixs(1, ii))))
1070 jal_from_prop = igeo(62, iabs(ixs(10, ii)) )
1071 jal =
max(jal_from_mat, jal_from_prop)
1072 jalt = jal + nint(pm(71, iabs(ixs(1, ii))) + pm(96, iabs(ixs(1, ii))))
1073 IF (jalt == 0) cycle
1074 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1075 IF (ixs(2, ii) == ixs(3, ii) .AND. ixs(4, ii) == ixs(5, ii) .AND.
1076 . ixs(6, ii) == ixs(9, ii) .AND. ixs(7, ii) == ixs(8, ii))
THEN
1081 elem_face => tetra_face
1087 elem_face => hexa_face
1091 CALL intvector_clear(vec_ptr1)
1095 IF(nface_node == 4)
THEN
1097 nn(kk) = ixs(1 + elem_face(kface, kk), ii)
1099 IF(nn(1)==nn(2) .AND. nn(3)==nn(4))
THEN
1101 ELSEIF(nn(2)==nn(3) .AND. nn(1)==nn(4))
THEN
1106 IF(.NOT. skip_face)
THEN
1107 DO inode = 1, nface_node
1108 IF (elem_face(kface, inode) < 0) cycle
1109 node_id = ixs(1 + elem_face(kface, inode), ii)
1111 DO iad = iad_connect(node_id), iad_connect(node_id + 1) - 1
1112 IF (connected(iad) /= ii)
THEN
1113 CALL intvector_push_back(vec_ptr1, connected(iad))
1120 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1121 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1122 IF(skip_face) jj = 0
1123 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1125 IF (ixs(2, jj) == ixs(3, jj) .AND. ixs(4, jj) == ixs(5, jj) .AND.
1126 . ixs(6, jj) == ixs(9, jj) .AND. ixs(7, jj) == ixs(8, jj))
THEN
1130 elem_face2 => tetra_face
1131 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 1
1136 elem_face2 => hexa_face
1137 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 0
1139 DO kface2 = 1, nface2
1141 DO inode = 1, nface_node2
1142 IF (elem_face(kface2, inode) < 0) cycle
1143 itmp = itmp * itag(ixs(1 + elem_face(kface2, inode), jj))
1146 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1151 DO inode = 1, nface_node
1152 IF (elem_face(kface, inode) < 0) cycle
1153 node_id = ixs(1 + elem_face(kface, inode), ii)
1161 jal_from_mat = nint(pm(72, iabs(ixq(1, ii))))
1162 jal_from_prop = igeo(62, iabs(ixq(6, ii)) )
1163 jal =
max(jal_from_mat, jal_from_prop)
1164 jalt = jal + nint(pm(71, iabs(ixq(1, ii))) + pm(96, iabs(ixq(1, ii))))
1165 IF (jalt == 0) cycle
1166 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1169 elem_face => quad_face
1172 CALL intvector_clear(vec_ptr1)
1173 DO inode = 1, nface_node
1174 node_id = ixq(1 + elem_face(kface, inode), ii)
1176 DO iad = iad_connect(node_id), iad_connect(node_id + 1) - 1
1177 IF (connected(iad) /= ii)
THEN
1178 CALL intvector_push_back(vec_ptr1, connected(iad))
1183 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1184 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1186 IF (jj > numelq)
THEN
1189 elem_face2 => tri_face
1190 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 3
1194 elem_face2 => quad_face
1195 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 2
1197 DO kface2 = 1, nface2
1199 DO inode = 1, nface_node2
1200 itmp = itmp * itag(ixq(1 + elem_face(kface2, inode), jj))
1203 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1208 DO inode = 1, nface_node
1209 node_id = ixq(1 + elem_face(kface, inode), ii)
1216 jal_from_mat = nint(pm(72, iabs(ixtg(1, ii))))
1217 jal_from_prop = igeo(62, iabs(ixtg(5, ii)) )
1218 jal =
max(jal_from_mat, jal_from_prop)
1219 jalt = jal + nint(pm(71, iabs(ixtg(1, ii))) + pm(96, iabs(ixtg(1, ii))))
1220 IF (jalt == 0) cycle
1221 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1224 elem_face => tri_face
1227 CALL intvector_clear(vec_ptr1)
1228 DO inode = 1, nface_node
1229 node_id = ixtg(1 + elem_face(kface, inode), ii)
1231 DO iad = iad_connect(node_id), iad_connect(node_id + 1) - 1
1232 IF (connected(iad) /= ii)
THEN
1233 CALL intvector_push_back(vec_ptr1, connected(iad))
1238 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1239 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1241 IF (jj > numelq)
THEN
1244 elem_face2 => tri_face
1245 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 3
1249 elem_face2 => quad_face
1250 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 2
1252 DO kface2 = 1, nface2
1254 DO inode = 1, nface_node2
1255 itmp = itmp * itag(ixtg(1 + elem_face(kface2, inode), jj))
1258 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1263 DO inode = 1, nface_node
1264 node_id = ixtg(1 + elem_face(kface, inode), ii)
1271 CALL intvector_delete(vec_ptr1)
1272 IF (
ALLOCATED(ee_nb_connect))
DEALLOCATE(ee_nb_connect)
1273 IF (
ALLOCATED(itag))
DEALLOCATE(itag)
1274 IF (
ALLOCATED(ne_nb_connect))
DEALLOCATE(ne_nb_connect)
1275 IF (
ALLOCATED(iad_connect))
DEALLOCATE(iad_connect)
1276 IF (
ALLOCATED(adsky))
DEALLOCATE(adsky)
1277 IF (
ALLOCATED(connected))
DEALLOCATE(connected)
subroutine mulaw(lft, llt, nft, mtn, jcvt, pm, off, sig, eint, rho, vol, strain, gama, uvar, bufmat, tf, npf, imat, ngl, nuvar, nvartmp, vartmp, geo, pid, epsd, wxx, wyy, wzz, jsph, ssp, voln, vis, d1, d2, d3, d4, d5, d6, dvol, sold1, sold2, sold3, sold4, sold5, sold6, rx, ry, rz, sx, sy, sz, tx, ty, tz, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, ipm, isorth, nel, matparam)
subroutine q4forc2(timers, output, pm, geo, ic, x, a, v, ms, w, flux, flu1, veul, fv, ale_connect, iparg, nloc_dmg, elbuf_tab, tf, npf, bufmat, partsav, dt2t, neltst, ityptst, stifn, offset, eani, ipartq, nel, iadq, fsky, icp, ng, ipm, bufvois, qmv, gresav, grth, igrth, table, igeo, itask, iexpan, ms_2d, fskym, ioutprt, mat_elem, h3d_strain, sz_bufvois, snpc, stf, sbufmat, svis, nsvois, idtmins, iresp, tt, dt1, idel7ng, idel7nok, idtmin, maxfunc, imon_mat, userl_avail, impl_s, idyna, dt, glob_therm, sensors)
subroutine s8cforc3(timers, output, elbuf_tab, ng, pm, geo, ixs, x, a, v, ms, w, flux, flu1, veul, fv, ale_connect, iparg, tf, npf, bufmat, partsav, nloc_dmg, dt2t, neltst, ityptst, stifn, fsky, iads, offset, eani, iparts, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, nel, icp, icsig, smr, sms, smt, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, nvc, ipm, itask, istrain, temp, fthe, fthesky, iexpan, igeo, nnpt, gresav, grth, igrth, mssa, dmels, table, xdp, voln, condn, condnsky, sensors, ioutprt, mat_elem, h3d_strain, dt, nodadt, dtfac1, dtmin1, idtmin, snpc, stf, sbufmat, svis, nsvois, idtmins, iresp, maxfunc, userl_avail, glob_therm, impl_s, idyna)