35 character*8 lakon(*),lakonl
37 integer ipkon(*),kon(*),mi(*),ne,indexe,null,nonei20(3,12),
38 & nonei10(3,6),nk,i,j,k,node,nonei15(3,9),nopev,nterms,
39 & mint3d,ielmat(mi(3),*),inum(*)
41 real*8 yi(nterms,mi(1),*),yn(nterms,*),size,wpsmin,wpsmax,
42 & absdiff,reldiff,sizemax,al(3),sizemin,c(3,3),
43 & wpsmin1,wpsmax1,wpsmin3,wpsmax3,co(3,*),vold(0:mi(2),*)
45 data nonei10 /5,1,2,6,2,3,7,3,1,8,1,4,9,2,4,10,3,4/
47 data nonei15 /7,1,2,8,2,3,9,3,1,10,4,5,11,5,6,12,6,4,
48 & 13,1,4,14,2,5,15,3,6/
50 data nonei20 /9,1,2,10,2,3,11,3,4,12,4,1,
51 & 13,5,6,14,6,7,15,7,8,16,8,5,
52 & 17,1,5,18,2,6,19,3,7,20,4,8/
64 if(ipkon(i).lt.0) cycle
68 if(lakonl(7:8).eq.
'LC') cycle
70 if(lakonl(1:1).eq.
'F')
then 72 elseif(lakonl(4:4).eq.
'2')
then 74 elseif(lakonl(4:4).eq.
'8')
then 76 elseif(lakonl(4:5).eq.
'10')
then 78 elseif(lakonl(4:4).eq.
'4')
then 80 elseif(lakonl(4:5).eq.
'15')
then 82 elseif(lakonl(4:4).eq.
'6')
then 88 if(lakonl(4:5).eq.
'8R')
then 90 elseif((lakonl(4:4).eq.
'8').or.
91 & (lakonl(4:6).eq.
'20R'))
then 93 elseif(lakonl(4:4).eq.
'2')
then 95 elseif(lakonl(4:5).eq.
'10')
then 97 elseif(lakonl(4:4).eq.
'4')
then 99 elseif(lakonl(4:5).eq.
'15')
then 101 elseif(lakonl(4:5).eq.
'6')
then 103 elseif(lakonl(1:2).eq.
'ES')
then 138 wpsmin1=
min(wpsmin1,al(1))
139 wpsmax1=
max(wpsmax1,al(1))
140 wpsmin3=
min(wpsmin3,al(3))
141 wpsmax3=
max(wpsmax3,al(3))
148 if(wpsmax3.ge.-wpsmin1)
then 156 absdiff=wpsmax-wpsmin
157 if(
max(dabs(wpsmax),dabs(wpsmin)).lt.1.d-30)
then 160 reldiff=absdiff/(
max(dabs(wpsmax),dabs(wpsmin)))
174 size=dsqrt(c(1,1)**2+c(2,2)**2+c(3,3)**2)
175 sizemin=
min(sizemin,size)
176 sizemax=
max(sizemax,size)
179 absdiff=sizemax-sizemin
180 if(
max(sizemax,sizemin).lt.1.d-30)
then 183 reldiff=absdiff/(
max(dabs(sizemax),dabs(sizemin)))
191 yn(2,kon(indexe+j))=
max(yn(2,kon(indexe+j)),reldiff)
204 if(ipkon(i).lt.0) cycle
208 if(lakonl(7:8).eq.
'LC') cycle
210 if(lakonl(1:1).eq.
'F')
then 212 elseif(lakonl(4:4).eq.
'2')
then 214 elseif(lakonl(4:4).eq.
'8')
then 216 elseif(lakonl(4:5).eq.
'10')
then 218 elseif(lakonl(4:4).eq.
'4')
then 220 elseif(lakonl(4:5).eq.
'15')
then 222 elseif(lakonl(4:4).eq.
'6')
then 228 if(lakonl(4:5).eq.
'10')
then 234 yn(1,node)=
max(yn(1,node),30.000d0*yn(2,node))
236 elseif((lakonl(4:7).eq.
'20 ').or.
237 & (lakonl(4:7).eq.
'20 L').or.
238 & (lakonl(4:7).eq.
'20 B'))
then 244 if(yn(2,node).le.0.26d0)
then 245 yn(1,node)=
max(yn(1,node),5.115d0*yn(2,node))
247 yn(1,node)=
max(yn(1,node),
248 & 27.792d0*yn(2,node)-5.895d0)
251 elseif(lakonl(4:6).eq.
'20 ')
then 258 if(yn(2,node).le.0.325d0)
then 259 yn(1,node)=
max(yn(1,node),9.538d0*yn(2,node))
262 &
max(yn(1,node),53.695d0*yn(2,node)-14.351d0)
265 elseif((lakonl(4:7).eq.
'20R ').or.
266 & (lakonl(4:7).eq.
'20RL').or.
267 & (lakonl(4:7).eq.
'20RB'))
then 274 if(yn(2,node).le.0.18d0)
then 275 yn(1,node)=
max(yn(1,node),20.278d0*yn(2,node))
277 yn(1,node)=
max(yn(1,node),
278 & 74.318d0*yn(2,node)-9.727d0)
281 elseif(lakonl(4:6).eq.
'20R')
then 288 yn(1,node)=
max(yn(1,node),54.054d0*yn(2,node))
290 elseif(lakonl(4:5).eq.
'8I')
then 296 if(yn(2,node).le.0.165d0)
then 297 yn(1,node)=
max(yn(1,node),30.303d0*yn(2,node))
300 &
max(yn(1,node),139.535d0*yn(2,node)-18.023d0)
303 elseif(lakonl(4:7).eq.
'8 ')
then 309 if(yn(2,node).le.0.157d0)
then 310 yn(1,node)=
max(yn(1,node),31.847d0*yn(2,node))
312 yn(1,node)=
max(yn(1,node),
313 & 85.324d0*yn(2,node)-8.396d0)
316 elseif(lakonl(4:5).eq.
'8 ')
then 323 yn(1,node)=
max(yn(1,node),74.074d0*yn(2,node))
325 elseif(lakonl(4:5).eq.
'15')
then 331 yn(1,node)=
max(yn(1,node),46.189d0*yn(2,node))
341 if(ipkon(i).lt.0) cycle
345 if(lakonl(7:8).eq.
'LC') cycle
347 if(lakonl(4:5).eq.
'20')
then 350 yn(k,kon(indexe+j))=(
351 & yn(k,kon(indexe+nonei20(2,j-8)))+
352 & yn(k,kon(indexe+nonei20(3,j-8))))/2.d0
355 elseif(lakonl(4:5).eq.
'10')
then 358 yn(k,kon(indexe+j))=(yn(k,kon(indexe+nonei10(2,j-4)))+
359 & yn(k,kon(indexe+nonei10(3,j-4))))/2.d0
362 elseif(lakonl(4:5).eq.
'15')
then 365 yn(k,kon(indexe+j))=(
366 & yn(k,kon(indexe+nonei15(2,j-6)))+
367 & yn(k,kon(indexe+nonei15(3,j-6))))/2.d0
375 if(cflag.eq.
'I')
then 377 call map3dto1d2d(yn,ipkon,inum,kon,lakon,nterms,nk,
378 & ne,cflag,co,vold,force,mi)
#define max(a, b)
Definition: cascade.c:32
#define min(a, b)
Definition: cascade.c:31
subroutine calceigenvalues(c, al)
Definition: calceigenvalues.f:20
subroutine map3dto1d2d(yn, ipkon, inum, kon, lakon, nfield, nk, ne, cflag, co, vold, force, mi)
Definition: map3dto1d2d.f:21