33 SUBROUTINE check_skew(IXR,IGEO,ISKN,CEP,ISKWP,NSKWP,TAG_SKN,MULTIPLE_SKEW,
40 use element_mod ,
only : nixr
44#include "implicit_f.inc"
48#include "tabsiz_c.inc"
55 INTEGER,
INTENT(INOUT) :: NSKWP(NSPMD),R_SKEW(NUMELR)
56 INTEGER,
DIMENSION(NUMSKW+NSUBMOD+1),
INTENT(INOUT) :: TAG_SKN
57 INTEGER,
DIMENSION(SCEP),
INTENT(IN) :: CEP
58 INTEGER,
DIMENSION(NUMSKW+1),
INTENT(INOUT) :: ISKWP
59 INTEGER,
DIMENSION(NIXR,NUMELR),
INTENT(IN) :: IXR
60 INTEGER,
DIMENSION(NPROPGI,NUMGEO),
INTENT(IN) :: IGEO
61 INTEGER,
DIMENSION(LISKN,SISKWN/LISKN),
INTENT(IN) :: ISKN
62 INTEGER,
DIMENSION(NPROPMI,NUMMAT),
INTENT(IN) :: IPM
63 TYPE(plist_skew_),
DIMENSION(NUMSKW+1),
INTENT(INOUT) :: MULTIPLE_SKEW
98 INTEGER :: NUMBER_SKEW_SP,
99 INTEGER :: N1,N2,N3,IMAIN,SUM_NI,SIZE_SKEW,MAT_TYPE
101 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SKEW_PER_SP,LOCAL_P,P_SKEW
102 INTEGER,
DIMENSION(NSPMD) :: PROC_SKEW
127 tag_skn(1:numskw+
nsubmod+1) = -1
133 IF(nb == 1) tag_skn(i+1) = 0
138 spring_type = igeo( 11,ixr(1,i) )
140 IF (ixr(5,i) > 0) mat_type = ipm(2,ixr(5,i))
142 IF (r_skew(i) > 1)
THEN
143 IF( tag_skn(r_skew(i)) >= 0 )
THEN
144 IF(spring_type==8 .OR. (spring_type== 23 .AND. mat_type == 108)) number_skew_sp = number_skew_sp + 1
148 IF (igeo(2,ixr(1,i) )>1)
THEN
149 IF( tag_skn( igeo(2,ixr(1,i))) >= 0 )
THEN
150 IF(spring_type==8 .OR. spring_type==13 .OR. spring_type== 23) number_skew_sp = number_skew_sp
156 ALLOCATE(skew_per_sp(number_skew_sp))
157 ALLOCATE(local_p(number_skew_sp))
162 skew_per_sp(1:number_skew_sp) = 0
163 local_p(1:number_skew_sp) = 0
168 spring_type = igeo( 11,ixr(1,i) )
170 IF (ixr(5,i) > 0) mat_type = ipm(2,ixr(5,i))
172 IF (r_skew(i) > 1)
THEN
173 IF( tag_skn(r_skew(i)) >= 0)
THEN
174 IF(spring_type==8 .OR. (spring_type== 23 .AND. mat_type == 108))
THEN
175 number_skew_sp = number_skew_sp + 1
176 skew_per_sp( number_skew_sp ) = r_skew(i)
177 local_p(number_skew_sp) = cep(offset+i)+1
178 tag_skn( r_skew(i) ) = tag_skn( r_skew(i) ) + 1
183 IF (igeo( 2,ixr(1,i) )>1)
THEN
184 IF( tag_skn(igeo(2,ixr(1,i))) >=0 )
THEN
185 IF(spring_type==8 .OR. spring_type==13 .OR. spring_type== 23)
THEN
186 number_skew_sp = number_skew_sp + 1
187 skew_per_sp( number_skew_sp ) = igeo( 2,ixr(1,i) )
188 local_p(number_skew_sp) = cep(offset+i)+1
189 tag_skn( igeo(2,ixr(1,i)) ) = tag_skn( igeo(2,ixr(1,i)) ) + 1
197 size_skew = tag_skn(i)
199 IF(.NOT.
ALLOCATED(multiple_skew(i)%PLIST))
ALLOCATE( multiple_skew(i)%PLIST(size_skew) )
200 multiple_skew(i)%PLIST(1:size_skew) = 0
204 ALLOCATE(p_skew(numskw+1))
205 p_skew(1:numskw+1) = 0
208 DO j=1,number_skew_sp
220 IF(iskwp(i)==0) iskwp(i) = -imain
221 IF(tag_skn(i)>1)
THEN
222 p_skew(i) = p_skew(i) + 1
223 multiple_skew(i)%PLIST(p_skew(i)) = imain
225 nskwp(imain) = nskwp(imain) + 1
232 size_skew = tag_skn(i)
234 proc_skew(1:nspmd) = 0
236 imain = multiple_skew(i)%PLIST(ii)
237 IF(imain>0) proc_skew(imain) = proc_skew(imain) + 1
240 IF(proc_skew(ii)>0) nskwp(ii) = nskwp(ii) + 1
246 DEALLOCATE(skew_per_sp,local_p)
subroutine check_skew(ixr, igeo, iskn, cep, iskwp, nskwp, tag_skn, multiple_skew, r_skew, ipm, offset)