OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ale_connectivity_mod Module Reference

Data Types

type  t_connectivity
type  t_connectivity_ext1
type  t_ale_connectivity

Functions/Subroutines

subroutine ale_connectivity_init (this)
subroutine ale_compute_connectivity (this, numnod, numelq, numeltg, numels, nixq, nixtg, nixs, ixq, ixtg, ixs)
subroutine ale_deallocate_connectivity (this)
subroutine ale_compute_ee_connectivity (this, pm, igeo, npropgi, numgeo, npropm, nummat, numnod, numelq, numeltg, numels, n2d, iale, ieuler, itherm, ialelag, ishadow, nixq, nixtg, nixs, ixq, ixtg, ixs)

Function/Subroutine Documentation

◆ ale_compute_connectivity()

subroutine ale_connectivity_mod::ale_compute_connectivity ( class(t_ale_connectivity), intent(inout) this,
integer, intent(in) numnod,
integer, intent(in) numelq,
integer, intent(in) numeltg,
integer, intent(in) numels,
integer, intent(in) nixq,
integer, intent(in) nixtg,
integer, intent(in) nixs,
integer, dimension(nixq, numelq), intent(in) ixq,
integer, dimension(nixtg, numeltg), intent(in) ixtg,
integer, dimension(nixs, numels), intent(in) ixs )

Definition at line 309 of file ale_connectivity_mod.F.

312 IMPLICIT NONE
313C-----------------------------------------------
314C D e s c r i p t i o n
315C-----------------------------------------------
316! Comptes Node to element connectivities, !
317! and Node to Node connectivities for ALE !
318! grid velocity formulations !
319! --------------------------------------- !
320C-----------------------------------------------
321C D u m m y A r g u m e n t s
322C-----------------------------------------------
323 CLASS(T_ALE_CONNECTIVITY), INTENT(INOUT) :: THIS
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
328C-----------------------------------------------
329C L o c a l V a r i a b l e s
330C-----------------------------------------------
331 INTEGER :: II, JJ,KK, NODE_ID, NODE1, NODE2
332 LOGICAL :: DUPLICATE
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
343C-----------------------------------------------
344C S o u r c e L i n e s
345C-----------------------------------------------
346! In case we go through this routine a second time
347! node-node connectivity
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)
350! node-element connectivity
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)
354
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))
361 nb_edge = 0
362 node_id = 0
363
364 tri_edge(1, 1) = 1
365 tri_edge(2, 1) = 2
366 tri_edge(1, 2) = 2
367 tri_edge(2, 2) = 3
368 tri_edge(1, 3) = 3
369 tri_edge(2, 3) = 1
370
371 quad_edge(1, 1) = 1
372 quad_edge(2, 1) = 2
373 quad_edge(1, 2) = 2
374 quad_edge(2, 2) = 3
375 quad_edge(1, 3) = 3
376 quad_edge(2, 3) = 4
377 quad_edge(1, 4) = 4
378 quad_edge(2, 4) = 1
379
380 hexa_edge(1, 1) = 1
381 hexa_edge(2, 1) = 2
382 hexa_edge(1, 2) = 2
383 hexa_edge(2, 2) = 3
384 hexa_edge(1, 3) = 3
385 hexa_edge(2, 3) = 4
386 hexa_edge(1, 4) = 4
387 hexa_edge(2, 4) = 1
388 hexa_edge(1, 5) = 5
389 hexa_edge(2, 5) = 6
390 hexa_edge(1, 6) = 6
391 hexa_edge(2, 6) = 7
392 hexa_edge(1, 7) = 7
393 hexa_edge(2, 7) = 8
394 hexa_edge(1, 8) = 8
395 hexa_edge(2, 8) = 5
396 hexa_edge(1, 9) = 1
397 hexa_edge(2, 9) = 5
398 hexa_edge(1, 10) = 2
399 hexa_edge(2, 10) = 6
400 hexa_edge(1, 11) = 3
401 hexa_edge(2, 11) = 7
402 hexa_edge(1, 12) = 4
403 hexa_edge(2, 12) = 8
404
405 tetra_edge(1, 1) = 1
406 tetra_edge(2, 1) = 3
407 tetra_edge(1, 2) = 3
408 tetra_edge(2, 2) = 6
409 tetra_edge(1, 3) = 6
410 tetra_edge(2, 3) = 1
411 tetra_edge(1, 4) = 1
412 tetra_edge(2, 4) = 5
413 tetra_edge(1, 5) = 3
414 tetra_edge(2, 5) = 5
415 tetra_edge(1, 6) = 6
416 tetra_edge(2, 6) = 5
417
418! 2D elements
419! /TRIA
420 DO ii = 1, numeltg
421 DO jj = 1, 3
422 node_id = ixtg(1 + jj, ii)
423 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
424 ENDDO
425 !edges
426 DO iedge = 1, 3
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
432 ENDDO
433 ENDDO
434! /QUAD
435 DO ii = 1, numelq
436 DO jj = 1, 4
437 node_id = ixq(1 + jj, ii)
438 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
439 ENDDO
440 !edges
441 DO iedge = 1, 4
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
447 ENDDO
448 ENDDO
449! 3D elements
450 DO ii = 1, numels
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
453! TETRA
454 node_id = ixs(2, ii)
455 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
456 node_id = ixs(4, ii)
457 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
458 node_id = ixs(7, ii)
459 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
460 node_id = ixs(6, ii)
461 ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
462 !edges
463 DO iedge = 1, 6
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
469 ENDDO
470 ELSE
471! BRICKS
472 DO jj = 1, 8
473 node_id = ixs(1 + jj, ii)
474 duplicate = .false.
475 DO kk = 1, jj-1
476 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
477 ENDDO
478 IF(.NOT. duplicate) ne_nb_connect(node_id) = ne_nb_connect(node_id) + 1
479 ENDDO
480! edges
481 DO iedge = 1, 12
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
488 ENDIF
489 ENDDO
490 ENDIF
491 ENDDO
492
493 DO ii = 1, nb_edge
494 IF (edges(1, ii) > edges(2, ii)) THEN
495 itmp = edges(1, ii)
496 edges(1, ii) = edges(2, ii)
497 edges(2, ii) = itmp
498 ENDIF
499 ENDDO
500
501
502! Indirection tab
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)
507 ENDDO
508
509 ALLOCATE(adsky(numnod))
510 DO ii = 1, numnod
511 adsky(ii) = this%NE_CONNECT%IAD_CONNECT(ii)
512 ENDDO
513! Connectivities
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
518
519! 2D elements
520! /TRIA
521 DO ii = 1, numeltg
522 DO jj = 1, 3
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
527 ENDDO
528 ENDDO
529! /QUAD
530 DO ii = 1, numelq
531 DO jj = 1, 4
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
536 ENDDO
537 ENDDO
538
539! 3D elements
540 DO ii = 1, numels
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
543! TETRA
544 node_id = ixs(2, ii)
545 this%NE_CONNECT%CONNECTED(adsky(node_id)) = ii
546 this%NE_CONNECT%TYPE(adsky(node_id)) = 1
547 adsky(node_id) = adsky(node_id) + 1
548 node_id = ixs(4, ii)
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
552 node_id = ixs(7, ii)
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
556 node_id = ixs(6, ii)
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
560 ELSE
561! BRICKS
562 DO jj = 1, 8
563 node_id = ixs(1 + jj, ii)
564 duplicate = .false. !degenerated solids: duplicated node IDS
565 DO kk = 1, jj-1
566 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
567 ENDDO
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
572 ENDIF
573 ENDDO
574 ENDIF
575 ENDDO
576
577 ALLOCATE(idx(nb_edge), edges_tmp(2, nb_edge))
578 DO ii = 1, nb_edge
579 idx(ii) = ii
580 edges_tmp(1, ii) = edges(1, ii)
581 edges_tmp(2, ii) = edges(2, ii)
582 ENDDO
583 CALL quicksort_i2(edges_tmp(1, :), idx, 1, nb_edge)! hidden copies
584 DO ii = 1, nb_edge
585 edges_tmp(1, ii) = edges(1, idx(ii))
586 edges_tmp(2, ii) = edges(2, idx(ii))
587 ENDDO
588
589 nb_edge_new = 0
590 ii = 1
591 DO WHILE (ii < nb_edge)
592 cur_pos = ii
593 iad1 = 1
594 DO WHILE (edges_tmp(1, ii + iad1) == edges_tmp(1, ii))
595 IF (ii + iad1 == nb_edge) THEN
596 EXIT
597 ENDIF
598 iad1 = iad1 + 1
599 ENDDO
600 IF (iad1 == 1) 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)
604 ii = ii + 1
605 ELSE
606 CALL quicksort_i(edges_tmp(2, ii : ii + iad1 - 1), 1, iad1) !hidden copies
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
618 ENDIF
619 ENDDO
620 ii = ii + iad1
621 ENDIF
622 ENDDO
623
624! node node connectivity
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
628 ENDDO
629 !NE_NB_CONNECT(NODE_ID) = NE_NB_CONNECT(NODE_ID) + 1
630! indirection tab
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)
635 ENDDO
636
637 DO ii = 1, numnod
638 adsky(ii) = this%NN_CONNECT%IAD_CONNECT(ii)
639 ENDDO
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
643 node1 = edges(1, ii)
644 node2 = edges(2, ii)
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
649 ENDDO
650
651 DEALLOCATE(adsky, edges, idx, edges_tmp, nn_nb_connect, ne_nb_connect)
recursive subroutine quicksort_i(a, first, last)
Definition quicksort.F:92
recursive subroutine quicksort_i2(a, idx, first, last)
Definition quicksort.F:153

◆ ale_compute_ee_connectivity()

subroutine ale_connectivity_mod::ale_compute_ee_connectivity ( class(t_ale_connectivity), intent(inout) this,
intent(in) pm,
integer, dimension(npropgi, numgeo), intent(in) igeo,
integer, intent(in) npropgi,
integer, intent(in) numgeo,
integer, intent(in) npropm,
integer, intent(in) nummat,
integer, intent(in) numnod,
integer, intent(in) numelq,
integer, intent(in) numeltg,
integer, intent(in) numels,
integer, intent(in) n2d,
integer, intent(in) iale,
integer, intent(in) ieuler,
integer, intent(in) itherm,
integer, intent(in) ialelag,
logical, intent(in) ishadow,
integer, intent(in) nixq,
integer, intent(in) nixtg,
integer, intent(in) nixs,
integer, dimension(nixq, numelq), intent(in) ixq,
integer, dimension(nixtg, numeltg), intent(in) ixtg,
integer, dimension(nixs, numels), intent(in) ixs )
Parameters
[in]ishadowshadowing option for detonators (Eikonal equation solver)

Definition at line 673 of file ale_connectivity_mod.F.

678 IMPLICIT NONE
679C-----------------------------------------------
680C D e s c r i p t i o n
681C-----------------------------------------------
682! Computes element to element connectivities !
683! for ALE, and EULER computations !
684! --------------------------------------- !
685C-----------------------------------------------
686C D u m m y A r g u m e n t s
687C-----------------------------------------------
688 CLASS(T_ALE_CONNECTIVITY), INTENT(INOUT) :: THIS
689 INTEGER, INTENT(IN) :: NUMNOD, NUMELQ, NUMELTG, NUMELS, NPROPGI
690 INTEGER, INTENT(IN) :: NIXQ, NIXTG, NIXS, N2D, IALE, IEULER, ITHERM, IALELAG, 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 !< shadowing option for detonators (Eikonal equation solver)
697C-----------------------------------------------
698C L o c a l V a r i a b l e s
699C-----------------------------------------------
700 INTEGER :: II, JJ,KK, NODE_ID, INODE
701 LOGICAL :: DUPLICATE
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
705 INTEGER(8) :: VEC_PTR1
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
714 INTEGER NN(4)
715 LOGICAL SKIP_FACE
716C-----------------------------------------------
717C B e g i n n i n g o f S u b r o u t i n e
718C-----------------------------------------------
719 IF (iale + ieuler + ialelag +itherm == 0 .AND. .NOT.ishadow) THEN
720 RETURN
721 ENDIF
722! List of nodes of interest for tetra
723 tetra_nodes(1) = 2
724 tetra_nodes(2) = 4
725 tetra_nodes(3) = 7
726 tetra_nodes(4) = 6
727! Faces for each element
728! hexa
729 hexa_face(1, 1) = 1
730 hexa_face(1, 2) = 2
731 hexa_face(1, 3) = 3
732 hexa_face(1, 4) = 4
733 hexa_face(2, 1) = 3
734 hexa_face(2, 2) = 4
735 hexa_face(2, 3) = 8
736 hexa_face(2, 4) = 7
737 hexa_face(3, 1) = 5
738 hexa_face(3, 2) = 6
739 hexa_face(3, 3) = 7
740 hexa_face(3, 4) = 8
741 hexa_face(4, 1) = 1
742 hexa_face(4, 2) = 2
743 hexa_face(4, 3) = 6
744 hexa_face(4, 4) = 5
745 hexa_face(5, 1) = 2
746 hexa_face(5, 2) = 3
747 hexa_face(5, 3) = 7
748 hexa_face(5, 4) = 6
749 hexa_face(6, 1) = 1
750 hexa_face(6, 2) = 4
751 hexa_face(6, 3) = 8
752 hexa_face(6, 4) = 5
753! tetra
754 tetra_face(1, 1) = -1
755 tetra_face(1, 2) = -1
756 tetra_face(1, 3) = -1
757 tetra_face(2, 1) = 5
758 tetra_face(2, 2) = 6
759 tetra_face(2, 3) = 3
760 tetra_face(3, 1) = -1
761 tetra_face(3, 2) = -1
762 tetra_face(3, 3) = -1
763 tetra_face(4, 1) = 5
764 tetra_face(4, 2) = 1
765 tetra_face(4, 3) = 6
766 tetra_face(5, 1) = 1
767 tetra_face(5, 2) = 3
768 tetra_face(5, 3) = 6
769 tetra_face(6, 1) = 5
770 tetra_face(6, 2) = 3
771 tetra_face(6, 3) = 1
772! quad
773 quad_face(1, 1) = 1
774 quad_face(1, 2) = 2
775 quad_face(2, 1) = 2
776 quad_face(2, 2) = 3
777 quad_face(3, 1) = 3
778 quad_face(3, 2) = 4
779 quad_face(4, 1) = 4
780 quad_face(4, 2) = 1
781! tria
782 tri_face(1, 1) = 1
783 tri_face(1, 2) = 2
784 tri_face(2, 1) = 2
785 tri_face(2, 2) = 3
786 tri_face(3, 1) = 3
787 tri_face(3, 2) = 1
788 IF (.NOT. this%NALE_ALREADY_COMPUTED) THEN
789! Marking ALE nodes
790 IF (ALLOCATED(this%NALE)) DEALLOCATE(this%NALE)
791 ALLOCATE(this%NALE(numnod))
792 this%NALE(1:numnod) = 0
793 ENDIF
794! element-element connectivity
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)
799
800! Node element connectivity
801 ALLOCATE(ne_nb_connect(numnod))
802 ne_nb_connect(1:numnod) = 0
803
804! 2D elements
805! /TRIA
806 IF(n2d > 0)THEN
807 DO ii = 1, numeltg
808! ale : jal = 1, euler : jal = 2
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))
816 IF (jalt == 0) cycle
817 mlw = nint(pm(19,imid))
818 DO jj = 1, 3
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)
823 IF (mlw == 151) THEN
824 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
825 ENDIF
826 ENDIF
827 ENDDO
828 ENDDO
829 ENDIF
830
831! /QUAD
832 DO ii = 1, numelq
833! ale : jal = 1, euler : jal = 2
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))
841 IF (jalt == 0) cycle
842 mlw = nint(pm(19,imid))
843 DO jj = 1, 4
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)
848 IF (mlw == 151) THEN
849 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
850 ENDIF
851 ENDIF
852 ENDDO
853 ENDDO
854
855! 3D elements
856 DO ii = 1, numels
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))
864 IF (jalt == 0) cycle
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
868! tetra
869 DO jj = 1, 4
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)
874 IF (mlw == 151) THEN
875 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
876 ENDIF
877 ENDIF
878 ENDDO
879 ELSE
880! bricks
881 DO jj = 1, 8
882 node_id = ixs(1 + jj, ii)
883 duplicate = .false.
884 DO kk = 1,jj - 1
885 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
886 ENDDO
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)
891 IF (mlw == 151) THEN
892 IF (this%NALE(node_id) == 1 .OR. this%NALE(node_id) == 2) this%NALE(node_id) = 150 + this%NALE(node_id)
893 ENDIF
894 ENDIF
895 ENDIF
896 ENDDO
897 ENDIF
898 ENDDO
899
900 this%NALE_ALREADY_COMPUTED = .true.
901
902! Indirection tab
903 ALLOCATE(iad_connect(numnod + 1))
904 iad_connect(1) = 1
905 DO ii = 2, numnod + 1
906 iad_connect(ii) = iad_connect(ii - 1) + ne_nb_connect(ii - 1)
907 ENDDO
908 ALLOCATE(adsky(numnod))
909 DO ii = 1, numnod
910 adsky(ii) = iad_connect(ii)
911 ENDDO
912
913 ALLOCATE(connected(iad_connect(numnod + 1)))
914 connected(:) = 0
915 ALLOCATE(TYPE(IAD_CONNECT(NUMNOD + 1)))
916 TYPE(:) = 0
917
918! 2D elements
919! /TRIA
920 IF(n2d > 0)THEN
921 DO ii = 1, numeltg
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))
927 IF (jalt == 0) cycle
928 DO jj = 1, 3
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
933 ENDDO
934 ENDDO
935 ENDIF
936
937! /QUAD
938 DO ii = 1, numelq
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))
944 IF (jalt == 0) cycle
945 DO jj = 1, 4
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
950 ENDDO
951 ENDDO
952
953! 3D elements
954 DO ii = 1, numels
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))
960 IF (jalt == 0) cycle
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
963! tetra
964 node_id = ixs(2, ii)
965 connected(adsky(node_id)) = ii
966 TYPE(ADSKY(NODE_ID)) = 1
967 adsky(node_id) = adsky(node_id) + 1
968 node_id = ixs(4, ii)
969 connected(adsky(node_id)) = ii
970 TYPE(ADSKY(NODE_ID)) = 1
971 adsky(node_id) = adsky(node_id) + 1
972 node_id = ixs(7, ii)
973 connected(adsky(node_id)) = ii
974 TYPE(ADSKY(NODE_ID)) = 1
975 adsky(node_id) = adsky(node_id) + 1
976 node_id = ixs(6, ii)
977 connected(adsky(node_id)) = ii
978 TYPE(ADSKY(NODE_ID)) = 1
979 adsky(node_id) = adsky(node_id) + 1
980 ELSE
981! bricks
982 DO jj = 1, 8
983 node_id = ixs(1 + jj, ii)
984 duplicate = .false.
985 DO kk = 1,jj - 1
986 IF(node_id == ixs(1 + kk, ii)) duplicate = .true.
987 ENDDO
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
992 ENDIF
993 ENDDO
994 ENDIF
995 ENDDO
996
997
998! Counting connected elements
999 IF (n2d == 0) THEN
1000 ALLOCATE(this%EE_CONNECT%IAD_CONNECT(numels+1))
1001 ALLOCATE(ee_nb_connect(numels))
1002 ELSE
1003 ALLOCATE(this%EE_CONNECT%IAD_CONNECT(numeltg + numelq + 1))
1004 ALLOCATE(ee_nb_connect(numeltg + numelq))
1005 ENDIF
1006 ee_nb_connect(:) = 0
1007
1008 tmp = 0
1009 IF (n2d == 0) THEN
1010! 3D elements
1011 DO ii = 1, numels
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
1019! Tetras
1020 ee_nb_connect(ii) = 6
1021 ELSE
1022! Hexa
1023 ee_nb_connect(ii) = 6
1024 ENDIF
1025 ENDDO
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)
1029 ENDDO
1030 tmp = this%EE_CONNECT%IAD_CONNECT(numels + 1)
1031 ELSE
1032! 2D elements
1033! /QUAD
1034 DO ii = 1, numelq
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
1041 ENDDO
1042! /TRIA
1043 DO ii = 1, numeltg
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
1050 ENDDO
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)
1054 ENDDO
1055 tmp = this%EE_CONNECT%IAD_CONNECT(numelq + numeltg + 1) - 1
1056 ENDIF
1057
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))
1066 itag(1:numnod) = 0
1067 IF (n2d == 0) THEN
1068 DO ii = 1, numels
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
1077! Tetras
1078 nface = 6
1079 nface_node = 3
1080 count = 3
1081 elem_face => tetra_face
1082 ELSE
1083! Hexa
1084 nface = 6
1085 nface_node = 4
1086 count = 4
1087 elem_face => hexa_face
1088 ENDIF
1089
1090 DO kface = 1, nface
1091 CALL intvector_clear(vec_ptr1)
1092
1093 !skip hexa degenerated face (penta)
1094 skip_face = .false.
1095 IF(nface_node == 4)THEN
1096 DO kk=1,4
1097 nn(kk) = ixs(1 + elem_face(kface, kk), ii)
1098 ENDDO
1099 IF(nn(1)==nn(2) .AND. nn(3)==nn(4)) THEN
1100 skip_face = .true.
1101 ELSEIF(nn(2)==nn(3) .AND. nn(1)==nn(4)) THEN
1102 skip_face = .true.
1103 ENDIF
1104 ENDIF
1105
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)
1110 itag(node_id) = 1
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))
1114 ENDIF
1115 ENDDO
1116 ENDDO
1117 ENDIF
1118
1119! get the redundant element number
1120 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1121 iad1 = this%EE_CONNECT%IAD_CONNECT(ii)
1122 IF(skip_face) jj = 0 !no connected face (degenerated)
1123 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1124 IF (jj > 0) THEN
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
1127! Tetras
1128 nface2 = 6
1129 nface_node2 = 3
1130 elem_face2 => tetra_face
1131 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 1
1132 ELSE
1133! Hexa
1134 nface2 = 6
1135 nface_node2 = 4
1136 elem_face2 => hexa_face
1137 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 0
1138 ENDIF
1139 DO kface2 = 1, nface2
1140 itmp = 1
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))
1144 ENDDO
1145 IF (itmp == 1) THEN
1146 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1147 EXIT
1148 ENDIF
1149 ENDDO
1150 ENDIF
1151 DO inode = 1, nface_node
1152 IF (elem_face(kface, inode) < 0) cycle
1153 node_id = ixs(1 + elem_face(kface, inode), ii)
1154 itag(node_id) = 0
1155 ENDDO
1156 ENDDO
1157 ENDDO
1158 ELSE
1159! Quad
1160 DO ii = 1, numelq
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)
1167 nface = 4
1168 nface_node = 2
1169 elem_face => quad_face
1170 count = 2
1171 DO kface = 1, nface
1172 CALL intvector_clear(vec_ptr1)
1173 DO inode = 1, nface_node
1174 node_id = ixq(1 + elem_face(kface, inode), ii)
1175 itag(node_id) = 1
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))
1179 ENDIF
1180 ENDDO
1181 ENDDO
1182! get the redundant element number
1183 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1184 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1185 IF (jj > 0) THEN
1186 IF (jj > numelq) THEN
1187 nface2 = 3
1188 nface_node2 = 2
1189 elem_face2 => tri_face
1190 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 3
1191 ELSE
1192 nface2 = 4
1193 nface_node2 = 2
1194 elem_face2 => quad_face
1195 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 2
1196 ENDIF
1197 DO kface2 = 1, nface2
1198 itmp = 1
1199 DO inode = 1, nface_node2
1200 itmp = itmp * itag(ixq(1 + elem_face(kface2, inode), jj))
1201 ENDDO
1202 IF (itmp == 1) THEN
1203 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1204 EXIT
1205 ENDIF
1206 ENDDO
1207 ENDIF
1208 DO inode = 1, nface_node
1209 node_id = ixq(1 + elem_face(kface, inode), ii)
1210 itag(node_id) = 0
1211 ENDDO
1212 ENDDO
1213 ENDDO
1214! Tria
1215 DO ii = 1, numeltg
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)
1222 nface = 3
1223 nface_node = 2
1224 elem_face => tri_face
1225 count = 2
1226 DO kface = 1, nface
1227 CALL intvector_clear(vec_ptr1)
1228 DO inode = 1, nface_node
1229 node_id = ixtg(1 + elem_face(kface, inode), ii)
1230 itag(node_id) = 1
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))
1234 ENDIF
1235 ENDDO
1236 ENDDO
1237! get the redundant element number
1238 CALL intvector_get_redundant(vec_ptr1, jj, itmp, count)
1239 this%EE_CONNECT%CONNECTED(iad1 + kface - 1) = jj
1240 IF (jj > 0) THEN
1241 IF (jj > numelq) THEN
1242 nface2 = 2
1243 nface_node2 = 2
1244 elem_face2 => tri_face
1245 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 3
1246 ELSE
1247 nface2 = 4
1248 nface_node2 = 3
1249 elem_face2 => quad_face
1250 this%EE_CONNECT%TYPE(iad1 + kface - 1) = 2
1251 ENDIF
1252 DO kface2 = 1, nface2
1253 itmp = 1
1254 DO inode = 1, nface_node2
1255 itmp = itmp * itag(ixtg(1 + elem_face(kface2, inode), jj))
1256 ENDDO
1257 IF (itmp == 1) THEN
1258 this%EE_CONNECT%IFACE2(iad1 + kface - 1) = kface2
1259 EXIT
1260 ENDIF
1261 ENDDO
1262 ENDIF
1263 DO inode = 1, nface_node
1264 node_id = ixtg(1 + elem_face(kface, inode), ii)
1265 itag(node_id) = 0
1266 ENDDO
1267 ENDDO
1268 ENDDO
1269 ENDIF
1270
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)
1278
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21

◆ ale_connectivity_init()

subroutine ale_connectivity_mod::ale_connectivity_init ( class(t_ale_connectivity), intent(inout) this)

Definition at line 284 of file ale_connectivity_mod.F.

285 USE ale_mod
286 IMPLICIT NONE
287 CLASS(T_ALE_CONNECTIVITY), INTENT(INOUT) :: THIS
288#include "com01_c.inc"
289#include "inter18.inc"
290 LOGICAL RESULT
291 result = .false.
292 IF(iale > 0 .AND. ale%GRID%NWALE == 6)result=.true. !/ALE/GRID/VOLUME DEFINED
293 IF(inter18_autoparam == 1)result=.true. !/INTER/TYPE18 WITH FLAG IAUTO SET TO 1
294 IF(inter18_is_variable_gap_defined)result=.true. !/INTER/TYPE18 WITH FLAG IAUTO SET TO 1
295 this%HAS_NE_CONNECT = result
296 result = .false.
297 IF(iale > 0 .AND. ale%GRID%NWALE < 2)result=.true. !/ALE/GRID/DONEA, DISP, SPRING
298 IF(iale > 0 .AND. ale%GRID%NWALE == 7)result=.true. !/ALE/GRID/FLOW-TRACKING
299 IF(iale > 0 .AND. ale%GRID%NWALE == 5)result=.true. !/ALE/GRID/LAPLACIAN
300 this%HAS_NN_CONNECT = result
type(ale_) ale
Definition ale_mod.F:253

◆ ale_deallocate_connectivity()

subroutine ale_connectivity_mod::ale_deallocate_connectivity ( class(t_ale_connectivity), intent(inout) this)

Definition at line 657 of file ale_connectivity_mod.F.

658 IMPLICIT NONE
659 CLASS(T_ALE_CONNECTIVITY), INTENT(INOUT) :: THIS
660
661 IF (ALLOCATED(this%NE_CONNECT%CONNECTED)) DEALLOCATE(this%NE_CONNECT%CONNECTED)
662 IF (ALLOCATED(this%NE_CONNECT%IAD_CONNECT)) DEALLOCATE(this%NE_CONNECT%IAD_CONNECT)
663 IF (ALLOCATED(this%NN_CONNECT%CONNECTED)) DEALLOCATE(this%NN_CONNECT%CONNECTED)
664 IF (ALLOCATED(this%NN_CONNECT%IAD_CONNECT)) DEALLOCATE(this%NN_CONNECT%IAD_CONNECT)
665 IF (ALLOCATED(this%NALE)) DEALLOCATE(this%NALE)
666