29 logical radiate_flag,environmentnode,surface
34 character*20 sideload(*),label
35 character*80 amname(*),amplitude
36 character*81 set(*),elset
37 character*132 textpart(16)
39 integer istartset(*),iendset(*),ialset(*),nelemload(2,*),mi(*),
40 & ielmat(mi(3),*),nset,nload,nload_,ntmat_,istep,istat,n,
42 & iamload(2,*),nam,iamptemp,ipos,ne,node,iampradi,iline,ipol,
43 & inl,ipoinp(2,*),inp(3,*),nam_,namtot,namtot_,namta(3,*),
44 & idelay1,idelay2,ipoinpc(0:*)
46 real*8 xload(2,*),xmagradi,xmagtemp,physcon(*),amta(2,*)
54 environmentnode=.false.
58 write(*,*)
'*ERROR in radiates: *RADIATE should only be used' 59 write(*,*)
' within a STEP' 63 if(physcon(2).le.0.d0)
then 64 write(*,*)
'*ERROR in radiates: *RADIATE card was selected' 65 write(*,*)
' but no *PHYSICAL CONSTANTS card encountered' 70 if((textpart(i)(1:6).eq.
'OP=NEW').and.(.not.radiate_flag))
then 72 if(sideload(j)(1:1).eq.
'R')
then 76 elseif(textpart(i)(1:10).eq.
'AMPLITUDE=')
then 77 read(textpart(i)(11:90),
'(a80)') amplitude
79 if(amname(j).eq.amplitude)
then 85 write(*,*)
'*ERROR in radiates: nonexistent amplitude' 92 elseif(textpart(i)(1:10).eq.
'TIMEDELAY=')
THEN 94 write(*,*)
'*ERROR in radiates: the parameter TIME DELAY' 95 write(*,*)
' is used twice in the same keyword' 105 write(*,*)
'*ERROR in radiates: increase nam_' 110 if(iamptemp.eq.0)
then 111 write(*,*)
'*ERROR in radiates: time delay must be' 112 write(*,*)
' preceded by the amplitude parameter' 115 namta(3,nam)=sign(iamptemp,namta(3,iamptemp))
120 namtot=namta(2,nam-1)
123 if(namtot.gt.namtot_)
then 124 write(*,*)
'*ERROR radiates: increase namtot_' 129 read(textpart(i)(11:30),
'(f20.0)',iostat=istat)
131 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
133 elseif(textpart(i)(1:19).eq.
'RADIATIONAMPLITUDE=')
then 134 read(textpart(i)(20:99),
'(a80)') amplitude
136 if(amname(j).eq.amplitude)
then 142 write(*,*)
'*ERROR in radiates: nonexistent amplitude' 149 elseif(textpart(i)(1:19).eq.
'RADIATIONTIMEDELAY=')
THEN 150 if(idelay2.ne.0)
then 151 write(*,*)
'*ERROR in radiates: the parameter RADIATION' 152 write(*,*)
' TIME DELAY is used twice in the' 153 write(*,*)
' same keyword; ' 162 write(*,*)
'*ERROR in radiates: increase nam_' 167 if(iampradi.eq.0)
then 168 write(*,*)
'*ERROR in radiates: radiation time delay' 169 write(*,*)
' must be preceded by the radiation' 170 write(*,*)
' amplitude parameter' 173 namta(3,nam)=sign(iampradi,namta(3,iampradi))
178 namtot=namta(2,nam-1)
181 if(namtot.gt.namtot_)
then 182 write(*,*)
'*ERROR radiates: increase namtot_' 187 read(textpart(i)(20:39),
'(f20.0)',iostat=istat)
189 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
191 elseif(textpart(i)(1:7).eq.
'ENVNODE')
THEN 192 environmentnode=.true.
193 elseif(textpart(i)(1:7).eq.
'CAVITY=')
THEN 194 read(textpart(i)(8:10),
'(a3)',iostat=istat) cavlabel
197 &
'*WARNING in radiates: parameter not recognized:' 199 & textpart(i)(1:index(textpart(i),
' ')-1)
206 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
207 & ipoinp,inp,ipoinpc)
208 if((istat.lt.0).or.(key.eq.1))
return 210 read(textpart(2)(1:20),
'(a20)',iostat=istat) label
212 label(18:20)=cavlabel
216 if(label(2:4).eq.
'NEG') label(2:4)=
'1 ' 217 if(label(2:4).eq.
'POS') label(2:4)=
'2 ' 218 if(label(2:2).eq.
'N') label(2:2)=
'5' 219 if(label(2:2).eq.
'P') label(2:2)=
'6' 224 if((label(3:4).ne.
'NU').and.(label(5:5).ne.
'N'))
then 225 if(environmentnode)
then 226 read(textpart(3)(1:10),
'(i10)',iostat=istat) node
228 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) xmagtemp
231 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
233 read(textpart(4)(1:20),
'(f20.0)',iostat=istat) xmagradi
234 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
237 if(environmentnode)
then 238 read(textpart(3)(1:10),
'(i10)',iostat=istat) node
240 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) xmagtemp
243 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
246 if(((label(1:2).ne.
'R1').and.(label(1:2).ne.
'R2').and.
247 & (label(1:2).ne.
'R0').and.
248 & (label(1:2).ne.
'R3').and.(label(1:2).ne.
'R4').and.
249 & (label(1:2).ne.
'R5').and.(label(1:2).ne.
'R6')).or.
250 & ((label(3:5).ne.
' ').and.(label(3:5).ne.
'NU ').and.
251 & (label(3:5).ne.
'CR ').and.(label(3:5).ne.
'CRN')))
then 256 read(textpart(1)(1:10),
'(i10)',iostat=istat) l
259 write(*,*)
'*ERROR in radiates: element ',l
260 write(*,*)
' is not defined' 264 if((lakon(l)(1:2).eq.
'CP').or.
265 & (lakon(l)(2:2).eq.
'A').or.
266 & (lakon(l)(7:7).eq.
'E').or.
267 & (lakon(l)(7:7).eq.
'S').or.
268 & (lakon(l)(7:7).eq.
'A'))
then 269 if(label(1:2).eq.
'R1')
then 271 elseif(label(1:2).eq.
'R2')
then 273 elseif(label(1:2).eq.
'R3')
then 275 elseif(label(1:2).eq.
'R4')
then 277 elseif(label(1:2).eq.
'R5')
then 279 elseif(label(1:2).eq.
'R6')
then 283 call loadaddt(l,label,xmagradi,xmagtemp,nelemload,sideload,
284 & xload,nload,nload_,iamload,iamptemp,iampradi,nam,node,
287 read(textpart(1)(1:80),
'(a80)',iostat=istat) elset
289 ipos=index(elset,
' ')
292 if(set(i).eq.elset)
exit 301 if(set(i).eq.elset)
exit 305 write(*,*)
'*ERROR in radiates: element set ' 306 write(*,*)
' or facial surface ',elset
307 write(*,*)
' has not yet been defined. ' 314 l=ialset(istartset(i))
316 write(label(2:2),
'(i1)') l-10*(l/10)
319 if((lakon(l)(1:2).eq.
'CP').or.
320 & (lakon(l)(2:2).eq.
'A').or.
321 & (lakon(l)(7:7).eq.
'E').or.
322 & (lakon(l)(7:7).eq.
'S').or.
323 & (lakon(l)(7:7).eq.
'A'))
then 324 if(label(1:2).eq.
'R1')
then 326 elseif(label(1:2).eq.
'R2')
then 328 elseif(label(1:2).eq.
'R3')
then 330 elseif(label(1:2).eq.
'R4')
then 332 elseif(label(1:2).eq.
'R5')
then 334 elseif(label(1:2).eq.
'R6')
then 339 do j=istartset(i),iendset(i)
340 if(ialset(j).gt.0)
then 343 write(label(2:2),
'(i1)') l-10*(l/10)
346 call loadaddt(l,label,xmagradi,xmagtemp,nelemload,
347 & sideload,xload,nload,nload_,iamload,
348 & iamptemp,iampradi,nam,node,iload)
353 if(l.ge.ialset(j-1))
exit 354 call loadaddt(l,label,xmagradi,xmagtemp,nelemload,
355 & sideload,xload,nload,nload_,iamload,
356 & iamptemp,iampradi,nam,node,iload)
subroutine loadaddt(nelement, label, valfilm, valtemp, nelemload, sideload, xload, nload, nload_, iamload, iamptemp, iampfilm, nam, node, iload)
Definition: loadaddt.f:22
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21