33 SUBROUTINE check_skew(IXR,IGEO,ISKN,CEP,ISKWP,NSKWP,TAG_SKN,MULTIPLE_SKEW,
43#include "implicit_f.inc"
47#include "tabsiz_c.inc"
54 INTEGER,
INTENT(INOUT) :: NSKWP(NSPMD),R_SKEW(NUMELR)
55 INTEGER,
DIMENSION(NUMSKW+NSUBMOD+1),
INTENT(INOUT) :: TAG_SKN
56 INTEGER,
DIMENSION(SCEP),
INTENT(IN) :: CEP
57 INTEGER,
DIMENSION(NUMSKW+1),
INTENT(INOUT) :: ISKWP
58 INTEGER,
DIMENSION(NIXR,NUMELR),
INTENT(IN) :: IXR
59 INTEGER,
DIMENSION(NPROPGI,NUMGEO),
INTENT(IN) :: IGEO
60 INTEGER,
DIMENSION(LISKN,SISKWN/LISKN),
INTENT(IN) :: ISKN
61 INTEGER,
DIMENSION(NPROPMI,NUMMAT),
INTENT(IN) :: IPM
62 TYPE(plist_skew_),
DIMENSION(NUMSKW+1),
INTENT(INOUT) :: MULTIPLE_SKEW
72! tag array <0 -->
the skew is used by several options(has to be duplicated to all domains that have
the nodes)
97 INTEGER :: NUMBER_SKEW_SP,SPRING_TYPE
98 INTEGER :: N1,N2,N3,IMAIN,SUM_NI,SIZE_SKEW,MAT_TYPE
99 INTEGER :: NL, ISKEW, NB
100 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SKEW_PER_SP,LOCAL_P,P_SKEW
101 INTEGER,
DIMENSION(NSPMD) :: PROC_SKEW
126 tag_skn(1:numskw+
nsubmod+1) = -1
129 !
the optimization of restricting a skew to
the domains having
the corresponding spring nodes
132 IF(nb == 1) tag_skn(i+1) = 0
137 spring_type = igeo( 11,ixr(1,i) )
139 IF (ixr(5,i) > 0) mat_type = ipm(2,ixr(5,i))
141 IF (r_skew(i) > 1)
THEN
142 IF( tag_skn(r_skew(i)) >= 0 )
THEN
143 IF(spring_type==8 .OR. (spring_type== 23 .AND. mat_type == 108)) number_skew_sp = number_skew_sp + 1
147 IF (igeo(2,ixr(1,i) )>1)
THEN
148 IF( tag_skn( igeo(2,ixr(1,i))) >= 0 )
THEN
149 IF(spring_type==8 .OR. spring_type==13 .OR. spring_type== 23) number_skew_sp = number_skew_sp + 1
155 ALLOCATE(skew_per_sp(number_skew_sp))
156 ALLOCATE(local_p(number_skew_sp))
161 skew_per_sp(1:number_skew_sp) = 0
162 local_p(1:number_skew_sp) = 0
167 spring_type = igeo( 11,ixr(1,i) )
169 IF (ixr(5,i) > 0) mat_type = ipm(2,ixr(5,i))
171 IF (r_skew(i) > 1)
THEN
172 IF( tag_skn(r_skew(i)) >= 0)
THEN
173 IF(spring_type==8 .OR. (spring_type== 23 .AND. mat_type == 108))
THEN
174 number_skew_sp = number_skew_sp + 1
175 skew_per_sp( number_skew_sp ) = r_skew(i)
176 local_p(number_skew_sp) = cep(offset+i)+1
177 tag_skn( r_skew(i) ) = tag_skn( r_skew(i) ) + 1
182 IF (igeo( 2,ixr(1,i) )>1)
THEN
183 IF( tag_skn(igeo(2,ixr(1,i))) >=0 )
THEN
184 IF(spring_type==8 .OR. spring_type==13 .OR. spring_type== 23)
THEN
185 number_skew_sp = number_skew_sp + 1
186 skew_per_sp( number_skew_sp ) = igeo( 2,ixr(1,i) )
187 local_p(number_skew_sp) = cep(offset+i)+1
188 tag_skn( igeo(2,ixr(1,i)) ) = tag_skn( igeo(2,ixr(1,i)) ) +
196 size_skew = tag_skn(i)
198 IF(.NOT.
ALLOCATED(multiple_skew(i)%PLIST))
ALLOCATE( multiple_skew(i)%PLIST(size_skew) )
199 multiple_skew(i)%PLIST(1:size_skew) = 0
203 ALLOCATE(p_skew(numskw+1))
204 p_skew(1:numskw+1) = 0
207 DO j=1,number_skew_sp
219 IF(iskwp(i)==0) iskwp(i) = -imain
220 IF(tag_skn(i)>1)
THEN
221 p_skew(i) = p_skew(i) + 1
222 multiple_skew(i)%PLIST(p_skew(i)) = imain
224 nskwp(imain) = nskwp(imain) + 1
231 size_skew = tag_skn(i)
233 proc_skew(1:nspmd) = 0
235 imain = multiple_skew(i)%PLIST(ii)
236 IF(imain>0) proc_skew(imain) = proc_skew(imain) + 1
239 IF(proc_skew(ii)>0) nskwp(ii) = nskwp(ii) + 1
245 DEALLOCATE(skew_per_sp,local_p)