1 ! This macro
set the values at the 2 ghost lines
for a Neumann or mixed BC
2 ! by
using the
'normal' derivative of the interior equation
3 #beginMacro neumannAndEquationBC3dOrder4(DIR)
4 ! ***************************************************************
5 ! define these derivatives of the mapping (which are not normally computed by the standard macros):
6 ajrxxr=ajrx*ajrxrr + ajsx*ajrxrs + ajtx*ajrxrt + ajrxr*ajrxr +ajsxr*ajrxs + ajtxr*ajrxt
7 ajrxxs=ajrx*ajrxrs + ajsx*ajrxss + ajtx*ajrxst + ajrxs*ajrxr +ajsxs*ajrxs + ajtxs*ajrxt
8 ajrxxt=ajrx*ajrxrt + ajsx*ajrxst + ajtx*ajrxtt + ajrxt*ajrxr +ajsxt*ajrxs + ajtxt*ajrxt
9 ajrxyr=ajry*ajrxrr + ajsy*ajrxrs + ajty*ajrxrt + ajryr*ajrxr +ajsyr*ajrxs + ajtyr*ajrxt
10 ajrxys=ajry*ajrxrs + ajsy*ajrxss + ajty*ajrxst + ajrys*ajrxr +ajsys*ajrxs + ajtys*ajrxt
11 ajrxyt=ajry*ajrxrt + ajsy*ajrxst + ajty*ajrxtt + ajryt*ajrxr +ajsyt*ajrxs + ajtyt*ajrxt
12 ajrxzr=ajrz*ajrxrr + ajsz*ajrxrs + ajtz*ajrxrt + ajrzr*ajrxr +ajszr*ajrxs + ajtzr*ajrxt
13 ajrxzs=ajrz*ajrxrs + ajsz*ajrxss + ajtz*ajrxst + ajrzs*ajrxr +ajszs*ajrxs + ajtzs*ajrxt
14 ajrxzt=ajrz*ajrxrt + ajsz*ajrxst + ajtz*ajrxtt + ajrzt*ajrxr +ajszt*ajrxs + ajtzt*ajrxt
15 ajryxr=ajrx*ajryrr + ajsx*ajryrs + ajtx*ajryrt + ajrxr*ajryr +ajsxr*ajrys + ajtxr*ajryt
16 ajryxs=ajrx*ajryrs + ajsx*ajryss + ajtx*ajryst + ajrxs*ajryr +ajsxs*ajrys + ajtxs*ajryt
17 ajryxt=ajrx*ajryrt + ajsx*ajryst + ajtx*ajrytt + ajrxt*ajryr +ajsxt*ajrys + ajtxt*ajryt
18 ajryyr=ajry*ajryrr + ajsy*ajryrs + ajty*ajryrt + ajryr*ajryr +ajsyr*ajrys + ajtyr*ajryt
19 ajryys=ajry*ajryrs + ajsy*ajryss + ajty*ajryst + ajrys*ajryr +ajsys*ajrys + ajtys*ajryt
20 ajryyt=ajry*ajryrt + ajsy*ajryst + ajty*ajrytt + ajryt*ajryr +ajsyt*ajrys + ajtyt*ajryt
21 ajryzr=ajrz*ajryrr + ajsz*ajryrs + ajtz*ajryrt + ajrzr*ajryr +ajszr*ajrys + ajtzr*ajryt
22 ajryzs=ajrz*ajryrs + ajsz*ajryss + ajtz*ajryst + ajrzs*ajryr +ajszs*ajrys + ajtzs*ajryt
23 ajryzt=ajrz*ajryrt + ajsz*ajryst + ajtz*ajrytt + ajrzt*ajryr +ajszt*ajrys + ajtzt*ajryt
24 ajrzxr=ajrx*ajrzrr + ajsx*ajrzrs + ajtx*ajrzrt + ajrxr*ajrzr +ajsxr*ajrzs + ajtxr*ajrzt
25 ajrzxs=ajrx*ajrzrs + ajsx*ajrzss + ajtx*ajrzst + ajrxs*ajrzr +ajsxs*ajrzs + ajtxs*ajrzt
26 ajrzxt=ajrx*ajrzrt + ajsx*ajrzst + ajtx*ajrztt + ajrxt*ajrzr +ajsxt*ajrzs + ajtxt*ajrzt
27 ajrzyr=ajry*ajrzrr + ajsy*ajrzrs + ajty*ajrzrt + ajryr*ajrzr +ajsyr*ajrzs + ajtyr*ajrzt
28 ajrzys=ajry*ajrzrs + ajsy*ajrzss + ajty*ajrzst + ajrys*ajrzr +ajsys*ajrzs + ajtys*ajrzt
29 ajrzyt=ajry*ajrzrt + ajsy*ajrzst + ajty*ajrztt + ajryt*ajrzr +ajsyt*ajrzs + ajtyt*ajrzt
30 ajrzzr=ajrz*ajrzrr + ajsz*ajrzrs + ajtz*ajrzrt + ajrzr*ajrzr +ajszr*ajrzs + ajtzr*ajrzt
31 ajrzzs=ajrz*ajrzrs + ajsz*ajrzss + ajtz*ajrzst + ajrzs*ajrzr +ajszs*ajrzs + ajtzs*ajrzt
32 ajrzzt=ajrz*ajrzrt + ajsz*ajrzst + ajtz*ajrztt + ajrzt*ajrzr +ajszt*ajrzs + ajtzt*ajrzt
33 ajsxxr=ajrx*ajsxrr + ajsx*ajsxrs + ajtx*ajsxrt + ajrxr*ajsxr +ajsxr*ajsxs + ajtxr*ajsxt
34 ajsxxs=ajrx*ajsxrs + ajsx*ajsxss + ajtx*ajsxst + ajrxs*ajsxr +ajsxs*ajsxs + ajtxs*ajsxt
35 ajsxxt=ajrx*ajsxrt + ajsx*ajsxst + ajtx*ajsxtt + ajrxt*ajsxr +ajsxt*ajsxs + ajtxt*ajsxt
36 ajsxyr=ajry*ajsxrr + ajsy*ajsxrs + ajty*ajsxrt + ajryr*ajsxr +ajsyr*ajsxs + ajtyr*ajsxt
37 ajsxys=ajry*ajsxrs + ajsy*ajsxss + ajty*ajsxst + ajrys*ajsxr +ajsys*ajsxs + ajtys*ajsxt
38 ajsxyt=ajry*ajsxrt + ajsy*ajsxst + ajty*ajsxtt + ajryt*ajsxr +ajsyt*ajsxs + ajtyt*ajsxt
39 ajsxzr=ajrz*ajsxrr + ajsz*ajsxrs + ajtz*ajsxrt + ajrzr*ajsxr +ajszr*ajsxs + ajtzr*ajsxt
40 ajsxzs=ajrz*ajsxrs + ajsz*ajsxss + ajtz*ajsxst + ajrzs*ajsxr +ajszs*ajsxs + ajtzs*ajsxt
41 ajsxzt=ajrz*ajsxrt + ajsz*ajsxst + ajtz*ajsxtt + ajrzt*ajsxr +ajszt*ajsxs + ajtzt*ajsxt
42 ajsyxr=ajrx*ajsyrr + ajsx*ajsyrs + ajtx*ajsyrt + ajrxr*ajsyr +ajsxr*ajsys + ajtxr*ajsyt
43 ajsyxs=ajrx*ajsyrs + ajsx*ajsyss + ajtx*ajsyst + ajrxs*ajsyr +ajsxs*ajsys + ajtxs*ajsyt
44 ajsyxt=ajrx*ajsyrt + ajsx*ajsyst + ajtx*ajsytt + ajrxt*ajsyr +ajsxt*ajsys + ajtxt*ajsyt
45 ajsyyr=ajry*ajsyrr + ajsy*ajsyrs + ajty*ajsyrt + ajryr*ajsyr +ajsyr*ajsys + ajtyr*ajsyt
46 ajsyys=ajry*ajsyrs + ajsy*ajsyss + ajty*ajsyst + ajrys*ajsyr +ajsys*ajsys + ajtys*ajsyt
47 ajsyyt=ajry*ajsyrt + ajsy*ajsyst + ajty*ajsytt + ajryt*ajsyr +ajsyt*ajsys + ajtyt*ajsyt
48 ajsyzr=ajrz*ajsyrr + ajsz*ajsyrs + ajtz*ajsyrt + ajrzr*ajsyr +ajszr*ajsys + ajtzr*ajsyt
49 ajsyzs=ajrz*ajsyrs + ajsz*ajsyss + ajtz*ajsyst + ajrzs*ajsyr +ajszs*ajsys + ajtzs*ajsyt
50 ajsyzt=ajrz*ajsyrt + ajsz*ajsyst + ajtz*ajsytt + ajrzt*ajsyr +ajszt*ajsys + ajtzt*ajsyt
51 ajszxr=ajrx*ajszrr + ajsx*ajszrs + ajtx*ajszrt + ajrxr*ajszr +ajsxr*ajszs + ajtxr*ajszt
52 ajszxs=ajrx*ajszrs + ajsx*ajszss + ajtx*ajszst + ajrxs*ajszr +ajsxs*ajszs + ajtxs*ajszt
53 ajszxt=ajrx*ajszrt + ajsx*ajszst + ajtx*ajsztt + ajrxt*ajszr +ajsxt*ajszs + ajtxt*ajszt
54 ajszyr=ajry*ajszrr + ajsy*ajszrs + ajty*ajszrt + ajryr*ajszr +ajsyr*ajszs + ajtyr*ajszt
55 ajszys=ajry*ajszrs + ajsy*ajszss + ajty*ajszst + ajrys*ajszr +ajsys*ajszs + ajtys*ajszt
56 ajszyt=ajry*ajszrt + ajsy*ajszst + ajty*ajsztt + ajryt*ajszr +ajsyt*ajszs + ajtyt*ajszt
57 ajszzr=ajrz*ajszrr + ajsz*ajszrs + ajtz*ajszrt + ajrzr*ajszr +ajszr*ajszs + ajtzr*ajszt
58 ajszzs=ajrz*ajszrs + ajsz*ajszss + ajtz*ajszst + ajrzs*ajszr +ajszs*ajszs + ajtzs*ajszt
59 ajszzt=ajrz*ajszrt + ajsz*ajszst + ajtz*ajsztt + ajrzt*ajszr +ajszt*ajszs + ajtzt*ajszt
60 ajtxxr=ajrx*ajtxrr + ajsx*ajtxrs + ajtx*ajtxrt + ajrxr*ajtxr +ajsxr*ajtxs + ajtxr*ajtxt
61 ajtxxs=ajrx*ajtxrs + ajsx*ajtxss + ajtx*ajtxst + ajrxs*ajtxr +ajsxs*ajtxs + ajtxs*ajtxt
62 ajtxxt=ajrx*ajtxrt + ajsx*ajtxst + ajtx*ajtxtt + ajrxt*ajtxr +ajsxt*ajtxs + ajtxt*ajtxt
63 ajtxyr=ajry*ajtxrr + ajsy*ajtxrs + ajty*ajtxrt + ajryr*ajtxr +ajsyr*ajtxs + ajtyr*ajtxt
64 ajtxys=ajry*ajtxrs + ajsy*ajtxss + ajty*ajtxst + ajrys*ajtxr +ajsys*ajtxs + ajtys*ajtxt
65 ajtxyt=ajry*ajtxrt + ajsy*ajtxst + ajty*ajtxtt + ajryt*ajtxr +ajsyt*ajtxs + ajtyt*ajtxt
66 ajtxzr=ajrz*ajtxrr + ajsz*ajtxrs + ajtz*ajtxrt + ajrzr*ajtxr +ajszr*ajtxs + ajtzr*ajtxt
67 ajtxzs=ajrz*ajtxrs + ajsz*ajtxss + ajtz*ajtxst + ajrzs*ajtxr +ajszs*ajtxs + ajtzs*ajtxt
68 ajtxzt=ajrz*ajtxrt + ajsz*ajtxst + ajtz*ajtxtt + ajrzt*ajtxr +ajszt*ajtxs + ajtzt*ajtxt
69 ajtyxr=ajrx*ajtyrr + ajsx*ajtyrs + ajtx*ajtyrt + ajrxr*ajtyr +ajsxr*ajtys + ajtxr*ajtyt
70 ajtyxs=ajrx*ajtyrs + ajsx*ajtyss + ajtx*ajtyst + ajrxs*ajtyr +ajsxs*ajtys + ajtxs*ajtyt
71 ajtyxt=ajrx*ajtyrt + ajsx*ajtyst + ajtx*ajtytt + ajrxt*ajtyr +ajsxt*ajtys + ajtxt*ajtyt
72 ajtyyr=ajry*ajtyrr + ajsy*ajtyrs + ajty*ajtyrt + ajryr*ajtyr +ajsyr*ajtys + ajtyr*ajtyt
73 ajtyys=ajry*ajtyrs + ajsy*ajtyss + ajty*ajtyst + ajrys*ajtyr +ajsys*ajtys + ajtys*ajtyt
74 ajtyyt=ajry*ajtyrt + ajsy*ajtyst + ajty*ajtytt + ajryt*ajtyr +ajsyt*ajtys + ajtyt*ajtyt
75 ajtyzr=ajrz*ajtyrr + ajsz*ajtyrs + ajtz*ajtyrt + ajrzr*ajtyr +ajszr*ajtys + ajtzr*ajtyt
76 ajtyzs=ajrz*ajtyrs + ajsz*ajtyss + ajtz*ajtyst + ajrzs*ajtyr +ajszs*ajtys + ajtzs*ajtyt
77 ajtyzt=ajrz*ajtyrt + ajsz*ajtyst + ajtz*ajtytt + ajrzt*ajtyr +ajszt*ajtys + ajtzt*ajtyt
78 ajtzxr=ajrx*ajtzrr + ajsx*ajtzrs + ajtx*ajtzrt + ajrxr*ajtzr +ajsxr*ajtzs + ajtxr*ajtzt
79 ajtzxs=ajrx*ajtzrs + ajsx*ajtzss + ajtx*ajtzst + ajrxs*ajtzr +ajsxs*ajtzs + ajtxs*ajtzt
80 ajtzxt=ajrx*ajtzrt + ajsx*ajtzst + ajtx*ajtztt + ajrxt*ajtzr +ajsxt*ajtzs + ajtxt*ajtzt
81 ajtzyr=ajry*ajtzrr + ajsy*ajtzrs + ajty*ajtzrt + ajryr*ajtzr +ajsyr*ajtzs + ajtyr*ajtzt
82 ajtzys=ajry*ajtzrs + ajsy*ajtzss + ajty*ajtzst + ajrys*ajtzr +ajsys*ajtzs + ajtys*ajtzt
83 ajtzyt=ajry*ajtzrt + ajsy*ajtzst + ajty*ajtztt + ajryt*ajtzr +ajsyt*ajtzs + ajtyt*ajtzt
84 ajtzzr=ajrz*ajtzrr + ajsz*ajtzrs + ajtz*ajtzrt + ajrzr*ajtzr +ajszr*ajtzs + ajtzr*ajtzt
85 ajtzzs=ajrz*ajtzrs + ajsz*ajtzss + ajtz*ajtzst + ajrzs*ajtzr +ajszs*ajtzs + ajtzs*ajtzt
86 ajtzzt=ajrz*ajtzrt + ajsz*ajtzst + ajtz*ajtztt + ajrzt*ajtzr +ajszt*ajtzs + ajtzt*ajtzt
87 ! ***************************************************************
88 ! PDE: cxx*uxx + cyy*uyy + czz*uzz + cxy*uxy + cxz*uxz + cyz*uyz + cx*ux + cy*uy + cz*uz + c0 *u = f
89 ! PDE: cRR*urr + cSS*uss + cTT*utt + cRS*urs + cRT*urt + cST*ust + ccR*ur + ccS*us + ccT*ut + c0 *u = f
90 ! ===============
Start: Laplace operator: ====================
101 cRR=cxx*ajrx**2+cyy*ajry**2+czz*ajrz**2 +cxy*ajrx*ajry+cxz*ajrx*ajrz+cyz*ajry*ajrz
102 cSS=cxx*ajsx**2+cyy*ajsy**2+czz*ajsz**2 +cxy*ajsx*ajsy+cxz*ajsx*ajsz+cyz*ajsy*ajsz
103 cTT=cxx*ajtx**2+cyy*ajty**2+czz*ajtz**2 +cxy*ajtx*ajty+cxz*ajtx*ajtz+cyz*ajty*ajtz
104 cRS=2.*(cxx*ajrx*ajsx+cyy*ajry*ajsy+czz*ajrz*ajsz) +cxy*(ajrx*ajsy+ajry*ajsx)+cxz*(ajrx*ajsz+ajrz*ajsx)+cyz*(ajry*ajsz+ajrz*ajsy)
105 cRT=2.*(cxx*ajrx*ajtx+cyy*ajry*ajty+czz*ajrz*ajtz) +cxy*(ajrx*ajty+ajry*ajtx)+cxz*(ajrx*ajtz+ajrz*ajtx)+cyz*(ajry*ajtz+ajrz*ajty)
106 cST=2.*(cxx*ajsx*ajtx+cyy*ajsy*ajty+czz*ajsz*ajtz) +cxy*(ajsx*ajty+ajsy*ajtx)+cxz*(ajsx*ajtz+ajsz*ajtx)+cyz*(ajsy*ajtz+ajsz*ajty)
107 ccR=cxx*ajrxx+cyy*ajryy+czz*ajrzz +cxy*ajrxy+cxz*ajrxz+cyz*ajryz + cx*ajrx+cy*ajry+cz*ajrz
108 ccS=cxx*ajsxx+cyy*ajsyy+czz*ajszz +cxy*ajsxy+cxz*ajsxz+cyz*ajsyz + cx*ajsx+cy*ajsy+cz*ajsz
109 ccT=cxx*ajtxx+cyy*ajtyy+czz*ajtzz +cxy*ajtxy+cxz*ajtxz+cyz*ajtyz + cx*ajtx+cy*ajty+cz*ajtz
111 cRRr=2.*(ajrx*ajrxr+ajry*ajryr+ajrz*ajrzr)
112 cRSr=2.*(ajrxr*ajsx+ajrx*ajsxr + ajryr*ajsy+ ajry*ajsyr + ajrzr*ajsz+ ajrz*ajszr)
113 cRTr=2.*(ajrxr*ajtx+ajrx*ajtxr + ajryr*ajty+ ajry*ajtyr + ajrzr*ajtz+ ajrz*ajtzr)
114 ccRr=ajrxxr+ajryyr+ajrzzr
115 cRRs=2.*(ajrx*ajrxs+ajry*ajrys+ajrz*ajrzs)
116 cRSs=2.*(ajrxs*ajsx+ajrx*ajsxs + ajrys*ajsy+ ajry*ajsys + ajrzs*ajsz+ ajrz*ajszs)
117 cRTs=2.*(ajrxs*ajtx+ajrx*ajtxs + ajrys*ajty+ ajry*ajtys + ajrzs*ajtz+ ajrz*ajtzs)
118 ccRs=ajrxxs+ajryys+ajrzzs
119 cRRt=2.*(ajrx*ajrxt+ajry*ajryt+ajrz*ajrzt)
120 cRSt=2.*(ajrxt*ajsx+ajrx*ajsxt + ajryt*ajsy+ ajry*ajsyt + ajrzt*ajsz+ ajrz*ajszt)
121 cRTt=2.*(ajrxt*ajtx+ajrx*ajtxt + ajryt*ajty+ ajry*ajtyt + ajrzt*ajtz+ ajrz*ajtzt)
122 ccRt=ajrxxt+ajryyt+ajrzzt
124 cSSr=2.*(ajsx*ajsxr+ajsy*ajsyr+ajsz*ajszr)
125 cSTr=2.*(ajsxr*ajtx+ajsx*ajtxr + ajsyr*ajty+ ajsy*ajtyr + ajszr*ajtz+ ajsz*ajtzr)
126 ccSr=ajsxxr+ajsyyr+ajszzr
127 cSSs=2.*(ajsx*ajsxs+ajsy*ajsys+ajsz*ajszs)
128 cSTs=2.*(ajsxs*ajtx+ajsx*ajtxs + ajsys*ajty+ ajsy*ajtys + ajszs*ajtz+ ajsz*ajtzs)
129 ccSs=ajsxxs+ajsyys+ajszzs
130 cSSt=2.*(ajsx*ajsxt+ajsy*ajsyt+ajsz*ajszt)
131 cSTt=2.*(ajsxt*ajtx+ajsx*ajtxt + ajsyt*ajty+ ajsy*ajtyt + ajszt*ajtz+ ajsz*ajtzt)
132 ccSt=ajsxxt+ajsyyt+ajszzt
134 cTTr=2.*(ajtx*ajtxr+ajty*ajtyr+ajtz*ajtzr)
135 ccTr=ajtxxr+ajtyyr+ajtzzr
136 cTTs=2.*(ajtx*ajtxs+ajty*ajtys+ajtz*ajtzs)
137 ccTs=ajtxxs+ajtyys+ajtzzs
138 cTTt=2.*(ajtx*ajtxt+ajty*ajtyt+ajtz*ajtzt)
139 ccTt=ajtxxt+ajtyyt+ajtzzt
143 ! ===============
End: Laplace operator: ====================
144 ! ----------------
Start: Boundary condition: ---------------
145 ! BC: a1*u.n + a0*u = g
153 ! Outward
normal : (n1,n2,n3)
154 ani=nsign/sqrt(ajrx**2+ajry**2+ajrz**2)
158 ! BC : anR*ur + anS*us + anT*ut + a0*u
159 anR=a1*(n1*ajrx+n2*ajry+n3*ajrz)
160 anS=a1*(n1*ajsx+n2*ajsy+n3*ajsz)
161 anT=a1*(n1*ajtx+n2*ajty+n3*ajtz)
163 anis=-(ajrx*ajrxs+ajry*ajrys+ajrz*ajrzs)*ani**3
164 aniss=-(ajrx*ajrxss+ajry*ajryss+ajrz*ajrzss+ajrxs*ajrxs+ajrys*ajrys+ajrzs*ajrzs)*ani**3 -3.*(ajrx*ajrxs+ajry*ajrys+ajrz*ajrzs)*ani**2*anis
165 n1s=ajrxs*ani + ajrx*anis
166 n1ss=ajrxss*ani + 2.*ajrxs*anis + ajrx*aniss
167 n2s=ajrys*ani + ajry*anis
168 n2ss=ajryss*ani + 2.*ajrys*anis + ajry*aniss
169 n3s=ajrzs*ani + ajrz*anis
170 n3ss=ajrzss*ani + 2.*ajrzs*anis + ajrz*aniss
172 anRs =a1*(n1*ajrxs+n2*ajrys+n3*ajrzs+n1s*ajrx+n2s*ajry+n3s*ajrz)
173 anRss=a1*(n1*ajrxss+n2*ajryss+n3*ajrzss+2.*(n1s*ajrxs+n2s*ajrys+n3s*ajrzs)+n1ss*ajrx+n2ss*ajry+n3ss*ajrz)
174 anSs =a1*(n1*ajsxs+n2*ajsys+n3*ajszs+n1s*ajsx+n2s*ajsy+n3s*ajsz)
175 anSss=a1*(n1*ajsxss+n2*ajsyss+n3*ajszss+2.*(n1s*ajsxs+n2s*ajsys+n3s*ajszs)+n1ss*ajsx+n2ss*ajsy+n3ss*ajsz)
176 anTs =a1*(n1*ajtxs+n2*ajtys+n3*ajtzs+n1s*ajtx+n2s*ajty+n3s*ajtz)
177 anTss=a1*(n1*ajtxss+n2*ajtyss+n3*ajtzss+2.*(n1s*ajtxs+n2s*ajtys+n3s*ajtzs)+n1ss*ajtx+n2ss*ajty+n3ss*ajtz)
180 anit=-(ajrx*ajrxt+ajry*ajryt+ajrz*ajrzt)*ani**3
181 anitt=-(ajrx*ajrxtt+ajry*ajrytt+ajrz*ajrztt+ajrxt*ajrxt+ajryt*ajryt+ajrzt*ajrzt)*ani**3 -3.*(ajrx*ajrxt+ajry*ajryt+ajrz*ajrzt)*ani**2*anit
182 anist=-(ajrx*ajrxst+ajry*ajryst+ajrz*ajrzst+ajrxs*ajrxt+ajrys*ajryt+ajrzs*ajrzt)*ani**3 -3.*(ajrx*ajrxs+ajry*ajrys+ajrz*ajrzs)*ani**2*anit
183 n1t=ajrxt*ani + ajrx*anit
184 n1tt=ajrxtt*ani + 2.*ajrxt*anit + ajrx*anitt
185 n1st=ajrxst*ani + ajrxt*anis + ajrxs*anit + ajrx*anist
186 n2t=ajryt*ani + ajry*anit
187 n2tt=ajrytt*ani + 2.*ajryt*anit + ajry*anitt
188 n2st=ajryst*ani + ajryt*anis + ajrys*anit + ajry*anist
189 n3t=ajrzt*ani + ajrz*anit
190 n3tt=ajrztt*ani + 2.*ajrzt*anit + ajrz*anitt
191 n3st=ajrzst*ani + ajrzt*anis + ajrzs*anit + ajrz*anist
193 anRt =a1*(n1*ajrxt+n2*ajryt+n3*ajrzt+n1t*ajrx+n2t*ajry+n3t*ajrz)
194 anRtt=a1*(n1*ajrxtt+n2*ajrytt+n3*ajrztt+2.*(n1t*ajrxt+n2t*ajryt+n3t*ajrzt)+n1tt*ajrx+n2tt*ajry+n3tt*ajrz)
195 anRst=a1*(n1*ajrxst+n2*ajryst+n3*ajrzst +n1s*ajrxt+n2s*ajryt+n3s*ajrzt +n1t*ajrxs+n2t*ajrys+n3t*ajrzs +n1st*ajrx+n2st*ajry+n3st*ajrz)
196 anSt =a1*(n1*ajsxt+n2*ajsyt+n3*ajszt+n1t*ajsx+n2t*ajsy+n3t*ajsz)
197 anStt=a1*(n1*ajsxtt+n2*ajsytt+n3*ajsztt+2.*(n1t*ajsxt+n2t*ajsyt+n3t*ajszt)+n1tt*ajsx+n2tt*ajsy+n3tt*ajsz)
198 anSst=a1*(n1*ajsxst+n2*ajsyst+n3*ajszst +n1s*ajsxt+n2s*ajsyt+n3s*ajszt +n1t*ajsxs+n2t*ajsys+n3t*ajszs +n1st*ajsx+n2st*ajsy+n3st*ajsz)
199 anTt =a1*(n1*ajtxt+n2*ajtyt+n3*ajtzt+n1t*ajtx+n2t*ajty+n3t*ajtz)
200 anTtt=a1*(n1*ajtxtt+n2*ajtytt+n3*ajtztt+2.*(n1t*ajtxt+n2t*ajtyt+n3t*ajtzt)+n1tt*ajtx+n2tt*ajty+n3tt*ajtz)
201 anTst=a1*(n1*ajtxst+n2*ajtyst+n3*ajtzst +n1s*ajtxt+n2s*ajtyt+n3s*ajtzt +n1t*ajtxs+n2t*ajtys+n3t*ajtzs +n1st*ajtx+n2st*ajty+n3st*ajtz)
203 ! Here are the expressions for the
normal derivatives
204 uur=(g-a0*uu-anS*uus-anT*uut)/anR
205 uurs=(gs-a0*uus-a0s*uu-anS*uuss-anSs*uus-anT*uust-anTs*uut-anRs*uur)/anR
206 uurss=(gss-a0*uuss-2*a0s*uus-a0ss*uu-anS*uusss-2*anSs*uuss-anSss*uus-anT*uusst-2*anTs*uust-anTss*uut-2*anRs*uurs-anRss*uur)/anR
207 uurt=(gt-a0*uut-a0t*uu-anS*uust-anSt*uus-anT*uutt-anTt*uut-anRt*uur)/anR
208 uurtt=(gtt-a0*uutt-2*a0t*uut-a0tt*uu-anS*uustt-2*anSt*uust-anStt*uus-anT*uuttt-2*anTt*uutt-anTtt*uut-2*anRt*uurt-anRtt*uur)/anR
209 uurst=(gst-a0*uust-a0s*uut-a0t*uus-anS*uusst-anSt*uuss-anSs*uust-anSst*uus-anT*uustt-anTt*uust-anTs*uutt-anTst*uut-anRs*uurt-anRt*uurs-anRst*uur)/anR
210 uurr=(ff-cSS*uuss-cTT*uutt-cRS*uurs-cRT*uurt-cST*uust-ccR*uur-ccS*uus-ccT*uut-c0*uu)/cRR
211 uurrs=(ffs-cSS*uusss-cTT*uustt-cRS*uurss-cRT*uurst-cST*uusst-ccR*uurs-ccS*uuss-ccT*uust-c0*uus-cSSs*uuss-cTTs*uutt-cRSs*uurs-cRTs*uurt-cSTs*uust-ccRs*uur-ccSs*uus-ccTs*uut-c0s*uu-cRRs*uurr)/cRR
212 uurrt=(fft-cSS*uusst-cTT*uuttt-cRS*uurst-cRT*uurtt-cST*uustt-ccR*uurt-ccS*uust-ccT*uutt-c0*uut-cSSt*uuss-cTTt*uutt-cRSt*uurs-cRTt*uurt-cSTt*uust-ccRt*uur-ccSt*uus-ccTt*uut-c0t*uu-cRRt*uurr)/cRR
214 unnn2=(ffr-cSS*uurss-cTT*uurtt-cRS*uurrs-cRT*uurrt-cST*uurst-ccR*uurr-ccS*uurs-ccT*uurt-c0*uur-cSSr*uuss-cTTr*uutt-cRSr*uurs-cRTr*uurt-cSTr*uust-ccRr*uur-ccSr*uus-ccTr*uut-c0r*uu-cRRr*uurr)/cRR
215 un4=(g-a0*uu-anS*uus-anT*uut)/anR
218 u(i1-is1,
i2-is2,i3-is3)= u(i1+is1,
i2+is2,i3+is3) +nsign*(2.*dn)*( un4 + (dn**2/6.)*unnn2 )
219 u(i1-2*is1,
i2-2*is2,i3-2*is3)= u(i1+2*is1,
i2+2*is2,i3+2*is3) +nsign*(4.*dn)*( un4 + (2.*dn**2/3.)*unnn2 )
224 ! Outward
normal : (n1,n2,n3)
225 ani=nsign/sqrt(ajsx**2+ajsy**2+ajsz**2)
229 ! BC : anS*us + anT*ut + anR*ur + a0*u
230 anS=a1*(n1*ajsx+n2*ajsy+n3*ajsz)
231 anT=a1*(n1*ajtx+n2*ajty+n3*ajtz)
232 anR=a1*(n1*ajrx+n2*ajry+n3*ajrz)
234 anit=-(ajsx*ajsxt+ajsy*ajsyt+ajsz*ajszt)*ani**3
235 anitt=-(ajsx*ajsxtt+ajsy*ajsytt+ajsz*ajsztt+ajsxt*ajsxt+ajsyt*ajsyt+ajszt*ajszt)*ani**3 -3.*(ajsx*ajsxt+ajsy*ajsyt+ajsz*ajszt)*ani**2*anit
236 n1t=ajsxt*ani + ajsx*anit
237 n1tt=ajsxtt*ani + 2.*ajsxt*anit + ajsx*anitt
238 n2t=ajsyt*ani + ajsy*anit
239 n2tt=ajsytt*ani + 2.*ajsyt*anit + ajsy*anitt
240 n3t=ajszt*ani + ajsz*anit
241 n3tt=ajsztt*ani + 2.*ajszt*anit + ajsz*anitt
243 anSt =a1*(n1*ajsxt+n2*ajsyt+n3*ajszt+n1t*ajsx+n2t*ajsy+n3t*ajsz)
244 anStt=a1*(n1*ajsxtt+n2*ajsytt+n3*ajsztt+2.*(n1t*ajsxt+n2t*ajsyt+n3t*ajszt)+n1tt*ajsx+n2tt*ajsy+n3tt*ajsz)
245 anTt =a1*(n1*ajtxt+n2*ajtyt+n3*ajtzt+n1t*ajtx+n2t*ajty+n3t*ajtz)
246 anTtt=a1*(n1*ajtxtt+n2*ajtytt+n3*ajtztt+2.*(n1t*ajtxt+n2t*ajtyt+n3t*ajtzt)+n1tt*ajtx+n2tt*ajty+n3tt*ajtz)
247 anRt =a1*(n1*ajrxt+n2*ajryt+n3*ajrzt+n1t*ajrx+n2t*ajry+n3t*ajrz)
248 anRtt=a1*(n1*ajrxtt+n2*ajrytt+n3*ajrztt+2.*(n1t*ajrxt+n2t*ajryt+n3t*ajrzt)+n1tt*ajrx+n2tt*ajry+n3tt*ajrz)
251 anir=-(ajsx*ajsxr+ajsy*ajsyr+ajsz*ajszr)*ani**3
252 anirr=-(ajsx*ajsxrr+ajsy*ajsyrr+ajsz*ajszrr+ajsxr*ajsxr+ajsyr*ajsyr+ajszr*ajszr)*ani**3 -3.*(ajsx*ajsxr+ajsy*ajsyr+ajsz*ajszr)*ani**2*anir
253 anirt=-(ajsx*ajsxrt+ajsy*ajsyrt+ajsz*ajszrt+ajsxt*ajsxr+ajsyt*ajsyr+ajszt*ajszr)*ani**3 -3.*(ajsx*ajsxt+ajsy*ajsyt+ajsz*ajszt)*ani**2*anir
254 n1r=ajsxr*ani + ajsx*anir
255 n1rr=ajsxrr*ani + 2.*ajsxr*anir + ajsx*anirr
256 n1rt=ajsxrt*ani + ajsxr*anit + ajsxt*anir + ajsx*anirt
257 n2r=ajsyr*ani + ajsy*anir
258 n2rr=ajsyrr*ani + 2.*ajsyr*anir + ajsy*anirr
259 n2rt=ajsyrt*ani + ajsyr*anit + ajsyt*anir + ajsy*anirt
260 n3r=ajszr*ani + ajsz*anir
261 n3rr=ajszrr*ani + 2.*ajszr*anir + ajsz*anirr
262 n3rt=ajszrt*ani + ajszr*anit + ajszt*anir + ajsz*anirt
264 anSr =a1*(n1*ajsxr+n2*ajsyr+n3*ajszr+n1r*ajsx+n2r*ajsy+n3r*ajsz)
265 anSrr=a1*(n1*ajsxrr+n2*ajsyrr+n3*ajszrr+2.*(n1r*ajsxr+n2r*ajsyr+n3r*ajszr)+n1rr*ajsx+n2rr*ajsy+n3rr*ajsz)
266 anSrt=a1*(n1*ajsxrt+n2*ajsyrt+n3*ajszrt +n1t*ajsxr+n2t*ajsyr+n3t*ajszr +n1r*ajsxt+n2r*ajsyt+n3r*ajszt +n1rt*ajsx+n2rt*ajsy+n3rt*ajsz)
267 anTr =a1*(n1*ajtxr+n2*ajtyr+n3*ajtzr+n1r*ajtx+n2r*ajty+n3r*ajtz)
268 anTrr=a1*(n1*ajtxrr+n2*ajtyrr+n3*ajtzrr+2.*(n1r*ajtxr+n2r*ajtyr+n3r*ajtzr)+n1rr*ajtx+n2rr*ajty+n3rr*ajtz)
269 anTrt=a1*(n1*ajtxrt+n2*ajtyrt+n3*ajtzrt +n1t*ajtxr+n2t*ajtyr+n3t*ajtzr +n1r*ajtxt+n2r*ajtyt+n3r*ajtzt +n1rt*ajtx+n2rt*ajty+n3rt*ajtz)
270 anRr =a1*(n1*ajrxr+n2*ajryr+n3*ajrzr+n1r*ajrx+n2r*ajry+n3r*ajrz)
271 anRrr=a1*(n1*ajrxrr+n2*ajryrr+n3*ajrzrr+2.*(n1r*ajrxr+n2r*ajryr+n3r*ajrzr)+n1rr*ajrx+n2rr*ajry+n3rr*ajrz)
272 anRrt=a1*(n1*ajrxrt+n2*ajryrt+n3*ajrzrt +n1t*ajrxr+n2t*ajryr+n3t*ajrzr +n1r*ajrxt+n2r*ajryt+n3r*ajrzt +n1rt*ajrx+n2rt*ajry+n3rt*ajrz)
274 ! Here are the expressions for the
normal derivatives
275 uus=(g-a0*uu-anT*uut-anR*uur)/anS
276 uust=(gt-a0*uut-a0t*uu-anT*uutt-anTt*uut-anR*uurt-anRt*uur-anSt*uus)/anS
277 uustt=(gtt-a0*uutt-2*a0t*uut-a0tt*uu-anT*uuttt-2*anTt*uutt-anTtt*uut-anR*uurtt-2*anRt*uurt-anRtt*uur-2*anSt*uust-anStt*uus)/anS
278 uurs=(gr-a0*uur-a0r*uu-anT*uurt-anTr*uut-anR*uurr-anRr*uur-anSr*uus)/anS
279 uurrs=(grr-a0*uurr-2*a0r*uur-a0rr*uu-anT*uurrt-2*anTr*uurt-anTrr*uut-anR*uurrr-2*anRr*uurr-anRrr*uur-2*anSr*uurs-anSrr*uus)/anS
280 uurst=(grt-a0*uurt-a0t*uur-a0r*uut-anT*uurtt-anTr*uutt-anTt*uurt-anTrt*uut-anR*uurrt-anRr*uurt-anRt*uurr-anRrt*uur-anSt*uurs-anSr*uust-anSrt*uus)/anS
281 uuss=(ff-cTT*uutt-cRR*uurr-cST*uust-cRS*uurs-cRT*uurt-ccS*uus-ccT*uut-ccR*uur-c0*uu)/cSS
282 uusst=(fft-cTT*uuttt-cRR*uurrt-cST*uustt-cRS*uurst-cRT*uurtt-ccS*uust-ccT*uutt-ccR*uurt-c0*uut-cTTt*uutt-cRRt*uurr-cSTt*uust-cRSt*uurs-cRTt*uurt-ccSt*uus-ccTt*uut-ccRt*uur-c0t*uu-cSSt*uuss)/cSS
283 uurss=(ffr-cTT*uurtt-cRR*uurrr-cST*uurst-cRS*uurrs-cRT*uurrt-ccS*uurs-ccT*uurt-ccR*uurr-c0*uur-cTTr*uutt-cRRr*uurr-cSTr*uust-cRSr*uurs-cRTr*uurt-ccSr*uus-ccTr*uut-ccRr*uur-c0r*uu-cSSr*uuss)/cSS
285 unnn2=(ffs-cTT*uustt-cRR*uurrs-cST*uusst-cRS*uurss-cRT*uurst-ccS*uuss-ccT*uust-ccR*uurs-c0*uus-cTTs*uutt-cRRs*uurr-cSTs*uust-cRSs*uurs-cRTs*uurt-ccSs*uus-ccTs*uut-ccRs*uur-c0s*uu-cSSs*uuss)/cSS
286 un4=(g-a0*uu-anT*uut-anR*uur)/anS
289 u(i1-is1,
i2-is2,i3-is3)= u(i1+is1,
i2+is2,i3+is3) +nsign*(2.*dn)*( un4 + (dn**2/6.)*unnn2 )
290 u(i1-2*is1,
i2-2*is2,i3-2*is3)= u(i1+2*is1,
i2+2*is2,i3+2*is3) +nsign*(4.*dn)*( un4 + (2.*dn**2/3.)*unnn2 )
295 ! Outward
normal : (n1,n2,n3)
296 ani=nsign/sqrt(ajtx**2+ajty**2+ajtz**2)
300 ! BC : anT*ut + anR*ur + anS*us + a0*u
301 anT=a1*(n1*ajtx+n2*ajty+n3*ajtz)
302 anR=a1*(n1*ajrx+n2*ajry+n3*ajrz)
303 anS=a1*(n1*ajsx+n2*ajsy+n3*ajsz)
305 anir=-(ajtx*ajtxr+ajty*ajtyr+ajtz*ajtzr)*ani**3
306 anirr=-(ajtx*ajtxrr+ajty*ajtyrr+ajtz*ajtzrr+ajtxr*ajtxr+ajtyr*ajtyr+ajtzr*ajtzr)*ani**3 -3.*(ajtx*ajtxr+ajty*ajtyr+ajtz*ajtzr)*ani**2*anir
307 n1r=ajtxr*ani + ajtx*anir
308 n1rr=ajtxrr*ani + 2.*ajtxr*anir + ajtx*anirr
309 n2r=ajtyr*ani + ajty*anir
310 n2rr=ajtyrr*ani + 2.*ajtyr*anir + ajty*anirr
311 n3r=ajtzr*ani + ajtz*anir
312 n3rr=ajtzrr*ani + 2.*ajtzr*anir + ajtz*anirr
314 anTr =a1*(n1*ajtxr+n2*ajtyr+n3*ajtzr+n1r*ajtx+n2r*ajty+n3r*ajtz)
315 anTrr=a1*(n1*ajtxrr+n2*ajtyrr+n3*ajtzrr+2.*(n1r*ajtxr+n2r*ajtyr+n3r*ajtzr)+n1rr*ajtx+n2rr*ajty+n3rr*ajtz)
316 anRr =a1*(n1*ajrxr+n2*ajryr+n3*ajrzr+n1r*ajrx+n2r*ajry+n3r*ajrz)
317 anRrr=a1*(n1*ajrxrr+n2*ajryrr+n3*ajrzrr+2.*(n1r*ajrxr+n2r*ajryr+n3r*ajrzr)+n1rr*ajrx+n2rr*ajry+n3rr*ajrz)
318 anSr =a1*(n1*ajsxr+n2*ajsyr+n3*ajszr+n1r*ajsx+n2r*ajsy+n3r*ajsz)
319 anSrr=a1*(n1*ajsxrr+n2*ajsyrr+n3*ajszrr+2.*(n1r*ajsxr+n2r*ajsyr+n3r*ajszr)+n1rr*ajsx+n2rr*ajsy+n3rr*ajsz)
322 anis=-(ajtx*ajtxs+ajty*ajtys+ajtz*ajtzs)*ani**3
323 aniss=-(ajtx*ajtxss+ajty*ajtyss+ajtz*ajtzss+ajtxs*ajtxs+ajtys*ajtys+ajtzs*ajtzs)*ani**3 -3.*(ajtx*ajtxs+ajty*ajtys+ajtz*ajtzs)*ani**2*anis
324 anirs=-(ajtx*ajtxrs+ajty*ajtyrs+ajtz*ajtzrs+ajtxr*ajtxs+ajtyr*ajtys+ajtzr*ajtzs)*ani**3 -3.*(ajtx*ajtxr+ajty*ajtyr+ajtz*ajtzr)*ani**2*anis
325 n1s=ajtxs*ani + ajtx*anis
326 n1ss=ajtxss*ani + 2.*ajtxs*anis + ajtx*aniss
327 n1rs=ajtxrs*ani + ajtxs*anir + ajtxr*anis + ajtx*anirs
328 n2s=ajtys*ani + ajty*anis
329 n2ss=ajtyss*ani + 2.*ajtys*anis + ajty*aniss
330 n2rs=ajtyrs*ani + ajtys*anir + ajtyr*anis + ajty*anirs
331 n3s=ajtzs*ani + ajtz*anis
332 n3ss=ajtzss*ani + 2.*ajtzs*anis + ajtz*aniss
333 n3rs=ajtzrs*ani + ajtzs*anir + ajtzr*anis + ajtz*anirs
335 anTs =a1*(n1*ajtxs+n2*ajtys+n3*ajtzs+n1s*ajtx+n2s*ajty+n3s*ajtz)
336 anTss=a1*(n1*ajtxss+n2*ajtyss+n3*ajtzss+2.*(n1s*ajtxs+n2s*ajtys+n3s*ajtzs)+n1ss*ajtx+n2ss*ajty+n3ss*ajtz)
337 anTrs=a1*(n1*ajtxrs+n2*ajtyrs+n3*ajtzrs +n1r*ajtxs+n2r*ajtys+n3r*ajtzs +n1s*ajtxr+n2s*ajtyr+n3s*ajtzr +n1rs*ajtx+n2rs*ajty+n3rs*ajtz)
338 anRs =a1*(n1*ajrxs+n2*ajrys+n3*ajrzs+n1s*ajrx+n2s*ajry+n3s*ajrz)
339 anRss=a1*(n1*ajrxss+n2*ajryss+n3*ajrzss+2.*(n1s*ajrxs+n2s*ajrys+n3s*ajrzs)+n1ss*ajrx+n2ss*ajry+n3ss*ajrz)
340 anRrs=a1*(n1*ajrxrs+n2*ajryrs+n3*ajrzrs +n1r*ajrxs+n2r*ajrys+n3r*ajrzs +n1s*ajrxr+n2s*ajryr+n3s*ajrzr +n1rs*ajrx+n2rs*ajry+n3rs*ajrz)
341 anSs =a1*(n1*ajsxs+n2*ajsys+n3*ajszs+n1s*ajsx+n2s*ajsy+n3s*ajsz)
342 anSss=a1*(n1*ajsxss+n2*ajsyss+n3*ajszss+2.*(n1s*ajsxs+n2s*ajsys+n3s*ajszs)+n1ss*ajsx+n2ss*ajsy+n3ss*ajsz)
343 anSrs=a1*(n1*ajsxrs+n2*ajsyrs+n3*ajszrs +n1r*ajsxs+n2r*ajsys+n3r*ajszs +n1s*ajsxr+n2s*ajsyr+n3s*ajszr +n1rs*ajsx+n2rs*ajsy+n3rs*ajsz)
345 ! Here are the expressions for the
normal derivatives
346 uut=(g-a0*uu-anR*uur-anS*uus)/anT
347 uurt=(gr-a0*uur-a0r*uu-anR*uurr-anRr*uur-anS*uurs-anSr*uus-anTr*uut)/anT
348 uurrt=(grr-a0*uurr-2*a0r*uur-a0rr*uu-anR*uurrr-2*anRr*uurr-anRrr*uur-anS*uurrs-2*anSr*uurs-anSrr*uus-2*anTr*uurt-anTrr*uut)/anT
349 uust=(gs-a0*uus-a0s*uu-anR*uurs-anRs*uur-anS*uuss-anSs*uus-anTs*uut)/anT
350 uusst=(gss-a0*uuss-2*a0s*uus-a0ss*uu-anR*uurss-2*anRs*uurs-anRss*uur-anS*uusss-2*anSs*uuss-anSss*uus-2*anTs*uust-anTss*uut)/anT
351 uurst=(grs-a0*uurs-a0r*uus-a0s*uur-anR*uurrs-anRs*uurr-anRr*uurs-anRrs*uur-anS*uurss-anSs*uurs-anSr*uuss-anSrs*uus-anTr*uust-anTs*uurt-anTrs*uut)/anT
352 uutt=(ff-cRR*uurr-cSS*uuss-cRT*uurt-cST*uust-cRS*uurs-ccT*uut-ccR*uur-ccS*uus-c0*uu)/cTT
353 uurtt=(ffr-cRR*uurrr-cSS*uurss-cRT*uurrt-cST*uurst-cRS*uurrs-ccT*uurt-ccR*uurr-ccS*uurs-c0*uur-cRRr*uurr-cSSr*uuss-cRTr*uurt-cSTr*uust-cRSr*uurs-ccTr*uut-ccRr*uur-ccSr*uus-c0r*uu-cTTr*uutt)/cTT
354 uustt=(ffs-cRR*uurrs-cSS*uusss-cRT*uurst-cST*uusst-cRS*uurss-ccT*uust-ccR*uurs-ccS*uuss-c0*uus-cRRs*uurr-cSSs*uuss-cRTs*uurt-cSTs*uust-cRSs*uurs-ccTs*uut-ccRs*uur-ccSs*uus-c0s*uu-cTTs*uutt)/cTT
356 unnn2=(fft-cRR*uurrt-cSS*uusst-cRT*uurtt-cST*uustt-cRS*uurst-ccT*uutt-ccR*uurt-ccS*uust-c0*uut-cRRt*uurr-cSSt*uuss-cRTt*uurt-cSTt*uust-cRSt*uurs-ccTt*uut-ccRt*uur-ccSt*uus-c0t*uu-cTTt*uutt)/cTT
357 un4=(g-a0*uu-anR*uur-anS*uus)/anT
360 u(i1-is1,
i2-is2,i3-is3)= u(i1+is1,
i2+is2,i3+is3) +nsign*(2.*dn)*( un4 + (dn**2/6.)*unnn2 )
361 u(i1-2*is1,
i2-2*is2,i3-2*is3)= u(i1+2*is1,
i2+2*is2,i3+2*is3) +nsign*(4.*dn)*( un4 + (2.*dn**2/3.)*unnn2 )