36
37
38
39
40
41
42
43
44
45#include "implicit_f.inc"
46
47
48
49 INTEGER, INTENT(IN) :: NUMELS,NUMELS8,NUMELS10,NUMELC ,NUMELTG
50 INTEGER, INTENT(IN) :: NUMELT, NUMELP, NUMELR
51 INTEGER, INTENT(IN) :: NPART,MODE
52 INTEGER, DIMENSION(*), INTENT(IN) :: IPARTS ,IPARTC ,IPARTTG
53 INTEGER, DIMENSION(*), INTENT(IN) :: IPARTT ,IPARTP ,IPARTR
54 TYPE(PART_TYPE), DIMENSION(NPART), INTENT(INOUT) :: SURF_ELM
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 INTEGER :: ID_PART,I
70 INTEGER, DIMENSION(NPART) :: NBR_SOL_PART,NBR_SOL10_PART,NBR_SHELL_PART,NBR_TRI_PART
71 INTEGER, DIMENSION(NPART) :: NBR_TRUSS_PART,NBR_BEAM_PART,NBR_SPRING_PART
72
73
74
75
76 IF(mode==1) THEN
77
78 nbr_sol_part(1:npart) = 0
79 nbr_sol10_part(1:npart) = 0
80 nbr_shell_part(1:npart) = 0
81 nbr_tri_part(1:npart) = 0
82
83 DO i=1,numels
84 id_part = iparts(i)
85 IF(i<=numels8) nbr_sol_part(id_part) = nbr_sol_part(id_part) + 1
86 IF(i>numels8) nbr_sol10_part(id_part) = nbr_sol10_part(id_part) + 1
87 ENDDO
88 DO i=1,numelc
89 id_part = ipartc(i)
90 nbr_shell_part(id_part) = nbr_shell_part(id_part) + 1
91 ENDDO
92 DO i=1,numeltg
93 id_part = iparttg(i)
94 nbr_tri_part(id_part) = nbr_tri_part(id_part) + 1
95 ENDDO
96
97 DO id_part=1,npart
98 IF(nbr_sol_part(id_part)>0) ALLOCATE( surf_elm(id_part)%SOL_PART( nbr_sol_part(id_part) ) )
99 IF(nbr_sol10_part(id_part)>0) ALLOCATE( surf_elm(id_part)%SOL10_PART( nbr_sol10_part(id_part) ) )
100 IF(nbr_shell_part(id_part)>0) ALLOCATE( surf_elm(id_part)%SHELL_PART( nbr_shell_part(id_part) ) )
101 IF(nbr_tri_part(id_part)>0) ALLOCATE( surf_elm(id_part)%TRI_PART( nbr_tri_part(id_part) ) )
102 surf_elm(id_part)%NSOL = nbr_sol_part(id_part)
103 surf_elm(id_part)%NSOL10 = nbr_sol10_part(id_part)
104 surf_elm(id_part)%NSHELL = nbr_shell_part(id_part)
105 surf_elm(id_part)%NTRI = nbr_tri_part(id_part)
106 ENDDO
107
108 nbr_sol_part(1:npart) = 0
109 nbr_sol10_part(1:npart) = 0
110 DO i=1,numels
111 id_part = iparts(i)
112 IF(i<=numels8) THEN
113 nbr_sol_part(id_part) = nbr_sol_part(id_part) + 1
114 surf_elm(id_part)%SOL_PART( nbr_sol_part(id_part) ) = i
115 ELSE
116 nbr_sol10_part(id_part) = nbr_sol10_part(id_part) + 1
117 surf_elm(id_part)%SOL10_PART( nbr_sol10_part(id_part) ) = i
118 ENDIF
119 ENDDO
120 nbr_shell_part(1:npart) = 0
121 DO i=1,numelc
122 id_part = ipartc(i)
123 nbr_shell_part(id_part) = nbr_shell_part(id_part) + 1
124 surf_elm(id_part)%SHELL_PART( nbr_shell_part(id_part) ) = i
125 ENDDO
126 nbr_tri_part(1:npart) = 0
127 DO i=1,numeltg
128 id_part = iparttg(i)
129 nbr_tri_part(id_part) = nbr_tri_part(id_part) + 1
130 surf_elm(id_part)%TRI_PART( nbr_tri_part(id_part) ) = i
131 ENDDO
132
133
134 ELSEIF(mode==2) THEN
135
136 nbr_truss_part(1:npart) = 0
137 nbr_beam_part(1:npart) = 0
138 nbr_spring_part(1:npart) = 0
139
140 DO i=1,numelt
141 id_part = ipartt(i)
142 nbr_truss_part(id_part) = nbr_truss_part(id_part) + 1
143
144 ENDDO
145 DO i=1,numelp
146 id_part = ipartp(i)
147 nbr_beam_part(id_part) = nbr_beam_part(id_part) + 1
148
149 ENDDO
150 DO i=1,numelr
151 id_part = ipartr(i)
152 nbr_spring_part(id_part) = nbr_spring_part(id_part) + 1
153
154 ENDDO
155
156 DO id_part=1,npart
157 IF(nbr_truss_part(id_part)>0) ALLOCATE( surf_elm(id_part)%TRUSS_PART( nbr_truss_part(id_part) ) )
158 IF(nbr_beam_part(id_part)>0) ALLOCATE( surf_elm(id_part)%BEAM_PART( nbr_beam_part(id_part) ) )
159 IF(nbr_spring_part(id_part)>0) ALLOCATE( surf_elm(id_part)%SPRING_PART( nbr_spring_part(id_part) ) )
160 surf_elm(id_part)%NTRUSS = nbr_truss_part(id_part)
161 surf_elm(id_part)%NBEAM = nbr_beam_part(id_part)
162 surf_elm(id_part)%NSPRING = nbr_spring_part(id_part)
163 ENDDO
164
165
166 nbr_truss_part(1:npart) = 0
167 DO i=1,numelt
168 id_part = ipartt(i)
169 nbr_truss_part(id_part) = nbr_truss_part(id_part) + 1
170 surf_elm(id_part)%TRUSS_PART( nbr_truss_part(id_part) ) = i
171 ENDDO
172 nbr_beam_part(1:npart) = 0
173 DO i=1,numelp
174 id_part = ipartp(i)
175 nbr_beam_part(id_part) = nbr_beam_part(id_part) + 1
176 surf_elm(id_part)%BEAM_PART( nbr_beam_part(id_part) ) = i
177 ENDDO
178 nbr_spring_part(1:npart) = 0
179 DO i=1,numelr
180 id_part = ipartr(i)
181 nbr_spring_part(id_part) = nbr_spring_part(id_part) + 1
182 surf_elm(id_part)%SPRING_PART( nbr_spring_part(id_part) ) = i
183 ENDDO
184 ! --------------------
185
186 ENDIF
187
188 RETURN