31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47#include "implicit_f.inc"
48
49
50
51#include "com04_c.inc"
52#include "scr17_c.inc"
53
54
55
56 INTEGER, INTENT(in) :: MODE0
57 INTEGER, INTENT(inout) :: POINTER_ENTITY
58 INTEGER, INTENT(inout) :: NUMBER_ENTITY
59 INTEGER, DIMENSION(*), INTENT(inout) :: LIST_ENTITY
60 INTEGER ,DIMENSION(*) ,INTENT(IN) :: ITABM1
61 INTEGER,INTENT(IN)::IPART(LIPART1,*)
62
63
64
65 INTEGER USR2SYS
66
67
68
69 INTEGER :: SIZE_LOCAL
70 INTEGER :: MODE,WORK(70000)
71 INTEGER, DIMENSION(:), ALLOCATABLE :: LOCAL_ARRAY,INDX
72 INTEGER :: N1,NS,U_PART
73 INTEGER :: I,J,K,IJK
74 CHARACTER MESS*40
75 DATA mess/'SENSOR DEFINITION '/
76
77 ns = 1
78
79
80
81 mode=0
82 size_local = pointer_entity
83 ALLOCATE( indx(2*size_local) )
84 ALLOCATE( local_array(size_local) )
85 DO i=1,size_local
86 indx(i) = i
87 local_array(i) = list_entity(i)
88 ENDDO
89 CALL my_orders(mode,work,list_entity,indx,size_local,1)
90 DO i=1,size_local
91 j = indx(i)
92 list_entity(i) = local_array(j)
93 ENDDO
94
95
96
97
98
99
100
101
102
103
104
105
106 k = 1
107 local_array(1) = 1
108 j = 0
109 DO i=2,size_local
110 j = j + 1
111 IF(list_entity(i)/=list_entity(i-1)) THEN
112 k = k + 1
113 local_array(k) = local_array(k-1) + j
114 j = 0
115 ENDIF
116 ENDDO
117
118
119 DO i=1,k
120 list_entity(i) = list_entity(local_array(i))
121 ENDDO
122 pointer_entity = k
123 number_entity = k
124
125
126 IF(mode0==1)THEN
127 DO i=1,number_entity
128 n1 = list_entity(i)
129 list_entity(i) =
usr2sys(n1,itabm1,mess,ns)
130 ENDDO
131
132
133 ELSEIF(mode0==2) THEN
134 DO i=1,number_entity
135 u_part = list_entity(i)
136 ijk = 0
137 DO j=1,npart
138 IF(u_part == ipart(4,j)) THEN
139 ijk = j
140 EXIT
141 ENDIF
142 ENDDO
143 list_entity(i) = ijk
144 ENDDO
145 ENDIF
146
147
148 DEALLOCATE( indx )
149 DEALLOCATE( local_array )
150 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer function usr2sys(iu, itabm1, mess, id)