29 logical dflux_flag,surface
33 character*20 sideload(*),label
34 character*80 amname(*),amplitude
35 character*81 set(*),elset
36 character*132 textpart(16)
38 integer istartset(*),iendset(*),ialset(*),nelemload(2,*),mi(*),
39 & ielmat(mi(3),*),nset,nload,nload_,ntmat_,istep,istat,n,i,j,l,
41 & iamload(2,*),nam,iamplitude,ipos,ne,iline,ipol,inl,ipoinp(2,*),
42 & inp(3,*),nam_,namtot,namtot_,namta(3,*),idelay,isector,
45 real*8 xload(2,*),xmagnitude,amta(2,*)
53 write(*,*)
'*ERROR in dfluxes: *DFLUX should only be used' 54 write(*,*)
' within a STEP' 59 if((textpart(i)(1:6).eq.
'OP=NEW').and.(.not.dflux_flag))
then 61 if((sideload(j)(1:1).eq.
'S').or.
62 & (sideload(j)(1:2).eq.
'BF'))
then 66 elseif(textpart(i)(1:10).eq.
'AMPLITUDE=')
then 67 read(textpart(i)(11:90),
'(a80)') amplitude
69 if(amname(j).eq.amplitude)
then 75 write(*,*)
'*ERROR in dfluxes: nonexistent amplitude' 82 elseif(textpart(i)(1:10).eq.
'TIMEDELAY=')
THEN 84 write(*,*)
'*ERROR in dfluxes: the parameter TIME DELAY' 85 write(*,*)
' is used twice in the same keyword' 95 write(*,*)
'*ERROR in dfluxes: increase nam_' 100 if(iamplitude.eq.0)
then 101 write(*,*)
'*ERROR in dfluxes: time delay must be' 102 write(*,*)
' preceded by the amplitude parameter' 105 namta(3,nam)=sign(iamplitude,namta(3,iamplitude))
110 namtot=namta(2,nam-1)
113 if(namtot.gt.namtot_)
then 114 write(*,*)
'*ERROR dfluxes: increase namtot_' 119 read(textpart(i)(11:30),
'(f20.0)',iostat=istat)
121 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
125 &
'*WARNING in dfluxes: parameter not recognized:' 127 & textpart(i)(1:index(textpart(i),
' ')-1)
134 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
135 & ipoinp,inp,ipoinpc)
136 if((istat.lt.0).or.(key.eq.1))
return 138 read(textpart(2)(1:20),
'(a20)',iostat=istat) label
142 if(label(2:4).eq.
'NEG') label(2:4)=
'1 ' 143 if(label(2:4).eq.
'POS') label(2:4)=
'2 ' 144 if(label(2:2).eq.
'N') label(2:2)=
'5' 145 if(label(2:2).eq.
'P') label(2:2)=
'6' 147 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) xmagnitude
149 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
151 if(((label(1:2).ne.
'S1').and.(label(1:2).ne.
'S2').and.
152 & (label(1:2).ne.
'S0').and.
153 & (label(1:2).ne.
'S3').and.(label(1:2).ne.
'S4').and.
154 & (label(1:2).ne.
'S5').and.(label(1:2).ne.
'S6').and.
155 & (label(1:2).ne.
'BF').and.(label(1:2).ne.
'S ')).or.
156 & ((label(3:4).ne.
' ').and.(label(3:4).ne.
'NU')))
then 161 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
164 write(*,*)
'*ERROR in dfluxes: element ',l
165 write(*,*)
' is not defined' 169 if((lakon(l)(1:2).eq.
'CP').or.
170 & (lakon(l)(2:2).eq.
'A').or.
171 & (lakon(l)(7:7).eq.
'E').or.
172 & (lakon(l)(7:7).eq.
'S').or.
173 & (lakon(l)(7:7).eq.
'A'))
then 174 if(label(1:2).eq.
'S1')
then 176 elseif(label(1:2).eq.
'S2')
then 178 elseif(label(1:2).eq.
'S3')
then 180 elseif(label(1:2).eq.
'S4')
then 182 elseif(label(1:2).eq.
'S5')
then 184 elseif(label(1:2).eq.
'S6')
then 187 elseif((lakon(l)(1:1).eq.
'B').or.
188 & (lakon(l)(7:7).eq.
'B'))
then 189 elseif((lakon(l)(1:1).eq.
'S').or.
190 & (lakon(l)(7:7).eq.
'L'))
then 192 call loadadd(l,label,xmagnitude,nelemload,sideload,
193 & xload,nload,nload_,iamload,iamplitude,
194 & nam,isector,idefload)
196 read(textpart(1)(1:80),
'(a80)',iostat=istat) elset
198 ipos=index(elset,
' ')
201 if(set(i).eq.elset)
exit 210 if(set(i).eq.elset)
exit 214 write(*,*)
'*ERROR in dfluxes: element set ' 215 write(*,*)
' or facial surface ',elset
216 write(*,*)
' has not yet been defined. ' 223 l=ialset(istartset(i))
225 write(label(2:2),
'(i1)') l-10*(l/10)
228 if((lakon(l)(1:2).eq.
'CP').or.
229 & (lakon(l)(2:2).eq.
'A').or.
230 & (lakon(l)(7:7).eq.
'E').or.
231 & (lakon(l)(7:7).eq.
'S').or.
232 & (lakon(l)(7:7).eq.
'A'))
then 233 if(label(1:2).eq.
'S1')
then 235 elseif(label(1:2).eq.
'S2')
then 237 elseif(label(1:2).eq.
'S3')
then 239 elseif(label(1:2).eq.
'S4')
then 242 elseif((lakon(l)(1:1).eq.
'B').or.
243 & (lakon(l)(7:7).eq.
'B'))
then 244 if(label(1:2).eq.
'S2') label(1:2)=
'S5' 245 elseif((lakon(l)(1:1).eq.
'S').or.
246 & (lakon(l)(7:7).eq.
'L'))
then 250 do j=istartset(i),iendset(i)
251 if(ialset(j).gt.0)
then 254 write(label(2:2),
'(i1)') l-10*(l/10)
257 call loadadd(l,label,xmagnitude,nelemload,sideload,
258 & xload,nload,nload_,iamload,iamplitude,
259 & nam,isector,idefload)
264 if(l.ge.ialset(j-1))
exit 265 call loadadd(l,label,xmagnitude,nelemload,
266 & sideload,xload,nload,nload_,
267 & iamload,iamplitude,nam,isector,idefload)
subroutine loadadd(nelement, label, value, nelemload, sideload, xload, nload, nload_, iamload, iamplitude, nam, isector, idefload)
Definition: loadadd.f:21
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21