33
34
35
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "com04_c.inc"
46
47
48
49 INTEGER, INTENT(IN), DIMENSION(2,NRBODY) :: RBY_MSN
50
51 TYPE (SET_) :: CLAUSE
52
53
54
55 INTEGER I,IND,LIMIT
56 INTEGER, ALLOCATABLE, DIMENSION(:) :: TAGNOD,CLAUSE_NODE
57 INTEGER IWORK(70000)
58 INTEGER, DIMENSION(:),ALLOCATABLE:: IDX,SORT
59
60
63 ALLOCATE(clause_node(numnod))
64
65 ind=0
66
67
68 IF ( clause%NB_RBODY > 0 )
70 . clause%NB_RBODY ,clause%RBODY ,clause_node,ind,
72
73 limit = numnod/2
74 IF (ind < limit)THEN
75 ALLOCATE(idx(2*ind))
76 ALLOCATE(sort(ind))
77 sort(1:ind) = clause_node(1:ind)
79
80 DO i=1,ind
81 clause_node(i) = sort(idx(i))
82 ENDDO
83 DEALLOCATE(idx)
84 DEALLOCATE(sort)
85 ELSE
86 ind = 0
87 DO i=1,numnod
89 ind = ind + 1
90 clause_node(ind) = i
91 ENDIF
92 ENDDO
93 ENDIF
94
95
96
97
98
99 clause%NB_NODE = ind
100 IF(ALLOCATED( clause%NODE )) DEALLOCATE( clause%NODE )
101 ALLOCATE( clause%NODE(ind) )
102 clause%NODE(1:ind) = clause_node(1:ind)
103
105 DEALLOCATE(clause_node)
106
107 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
subroutine tag_node_from_rbody(nrb, rbody, clause_node, ind, tagnod, rby_msn)
subroutine tagnod(ix, nix, nix1, nix2, numel, iparte, tagbuf, npart)