1 c File generated by ogmg/neumann.maple
2 c Fourth-order BC
for mixed boundary condition
using the
normal derivative of the PDE
3 c BC: an1*ur+an2*us+an0*u = g
4 c PDE: c11*urr + c12*urs + c22*uss + c1*ur + c2*us + c0 *u = f
5 c PDE.r: urrr = b0*u + b1*us + b2*uss + b3*usss + bf
7 c real alpha1,alpha2,a1,a2,a0
8 c real rxi,ryi,sxi,syi,rxr,rxs,sxr,sxs,ryr,rys,syr,sys
10 c real rxrr,rxrs,rxss,ryrr,ryrs,ryss
11 c real sxrr,sxrs,sxss,syrr,syrs,syss
12 c real rxx,ryy,sxx,syy
13 c real rxxr,ryyr,rxxs,ryys, sxxr,syyr,sxxs,syys
14 c real rxNormI,rxNormIs,rxNormIss,rxNormIr,rxNormIrr
15 c real n1,n1s,n1ss,n2,n2s,n2ss
16 c real an1,an1s,an1ss,an2,an2s,an2ss
17 c real an1r,an1rr,an2r,an2rs
18 c real ff,ffs,ffr,g,gs,gss
19 c real c11,c11r,c11s,c12,c12r,c12s,c22,c22r,c22s,c1,c1r,c1s,c2,c2r,c2s,c0,c0r,c0s
22 #beginMacro fourthOrderNeumannEquationBC(DIR,DIM)
59 rxxr=rxi*rxrr+rxr*rxr + sxi*rxrs + sxr*rxs
60 ryyr=ryi*ryrr+ryr*ryr + syi*ryrs + syr*rys
62 rxxs=rxi*rxrs+rxs*rxr + sxi*rxss + sxs*rxs
63 ryys=ryi*ryrs+rys*ryr + syi*ryss + sys*rys
65 sxxr=rxi*sxrr+rxr*sxr + sxi*sxrs + sxr*sxs
66 syyr=ryi*syrr+ryr*syr + syi*syrs + syr*sys
68 sxxs=rxi*sxrs+rxs*sxr + sxi*sxss + sxs*sxs
69 syys=ryi*syrs+rys*syr + syi*syss + sys*sys
71 alpha1=a1*nsign ! nsign=2*side-1
75 rxNormI=1./sqrt(rxi**2+ryi**2)
76 rxNormIs=-(rxi*rxs+ryi*rys)*rxNormI**3
77 rxNormIss=-(rxi*rxss+ryi*ryss+rxs*rxs+rys*rys)*rxNormI**3 -3.*(rxi*rxs+ryi*rys)*rxNormI**2*rxNormIs
80 n1s=rxs*rxNormI + rxi*rxNormIs
81 n1ss=rxss*rxNormI + 2.*rxs*rxNormIs + rxi*rxNormIss
83 n2s=rys*rxNormI + ryi*rxNormIs
84 n2ss=ryss*rxNormI + 2.*rys*rxNormIs + ryi*rxNormIss
85 an1=alpha1*(n1*rxi+n2*ryi)
86 an2=alpha2*(n1*sxi+n2*syi)
87 an1s=alpha1*(n1*rxs+n2*rys+n1s*rxi+n2s*ryi)
88 an1ss=alpha1*(n1*rxss+n2*ryss+2.*(n1s*rxs+n2s*rys)+n1ss*rxi+n2ss*ryi)
89 an2s=alpha2*(n1*sxs+n2*sys + n1s*sxi+n2s*syi)
90 an2ss=alpha2*(n1*sxss+n2*syss + 2.*(n1s*sxs+n2s*sys) + n1ss*sxi+n2ss*syi)
92 sxNormI=1./sqrt(sxi**2+syi**2)
93 sxNormIr=-(sxi*sxr+syi*syr)*sxNormI**3
94 sxNormIrr=-(sxi*sxrr+syi*syrr+sxr*sxr+syr*syr)*sxNormI**3 -3.*(sxi*sxr+syi*syr)*sxNormI**2*sxNormIr
97 n1r=sxr*sxNormI + sxi*sxNormIr
98 n1rr=sxrr*sxNormI + 2.*sxr*sxNormIr + sxi*sxNormIrr
100 n2r=syr*sxNormI + syi*sxNormIr
101 n2rr=syrr*sxNormI + 2.*syr*sxNormIr + syi*sxNormIrr
102 an1=alpha1*(n1*rxi+n2*ryi)
103 an2=alpha2*(n1*sxi+n2*syi)
104 an1r=alpha1*(n1*rxr+n1r*rxi + n2*ryr+n2r*ryi)
105 an1rr=alpha1*(n1*rxrr+n2*ryrr+ 2.*(n1r*rxr+n2r*ryr) + n1rr*rxi+n2rr*ryi)
106 an2r=alpha2*(n1*sxr+n1r*sxi + n2*syr+n2r*syi)
107 an2rr=alpha2*(n1*sxrr+n2*syrr+ 2.*(n1r*sxr+n2r*syr) + n1rr*sxi+n2rr*syi)
111 c11r=2.*(rxi*rxr+ryi*ryr)
112 c11s=2.*(rxi*rxs+ryi*rys)
113 c12=2.*(rxi*sxi+ryi*syi)
114 c12r=2.*(rxr*sxi+rxi*sxr + ryr*syi+ ryi*syr)
115 c12s=2.*(rxs*sxi+rxi*sxs + rys*syi+ ryi*sys)
117 c22r=2.*(sxi*sxr+syi*syr)
118 c22s=2.*(sxi*sxs+syi*sys)
129 c Coefficients of u(i1-2,i2,i3) u(i1-1,i2,i3) u(i1,i2,i3) u(i1+1,i2,i3) u(i1+2,i2,i3)
132 c u0 =-1/ds**2*(b0*ds**2-2*b2)
136 b0=(-c12*c1s*an1**2*c11*a0-c12*c11s*an1**3*c0-c11s*an1*c12**2*an1s*a0+c12**2*c11*an1ss*an1*a0+c1*an1**3*c11*c0-c0r*an1**3*c11**2+c12*c11s*an1**2*c1*a0-c22*c11**2*an1ss*an1*a0+c12*c12s*an1*c11*an1s*a0+2*c22*c11**2*an1s**2*a0-c2*an1*c11**2*an1s*a0+c12*c0s*an1**3*c11+c0*an1**2*c11**2*a0+c11r*an1*c11*c12*an1s*a0-2*c12**2*c11*an1s**2*a0-c1**2*an1**2*c11*a0+2*c12*c1*an1*c11*an1s*a0-c11r*an1**2*c11*c1*a0-c12r*an1*c11**2*an1s*a0+c11r*an1**3*c11*c0+c1r*an1**2*c11**2*a0)/an1**3/c11**3
138 b1=(c22*c11**2*an2ss*an1**2-c12*c11s*an1**3*c2+c12*c2s*an1**3*c11+c12*c0*an1**3*c11+c11s*an1**2*c12**2*a0+c11s*an1**2*c12**2*an2s-2*c12**2*c11*an1s**2*an2-c12**2*c11*an2ss*an1**2+c11r*an1**3*c11*c2-c12*c12s*an1**2*c11*a0-c12*c12s*an1**2*c11*an2s-2*c12*c1*an1**2*c11*a0-2*c12*c1*an1**2*c11*an2s+c11r*an1*c11*c12*an1s*an2+c12**2*c11*an1ss*an1*an2+2*c12**2*c11*an1s*a0*an1+2*c12**2*c11*an1s*an2s*an1-c11r*an1**2*c11*c1*an2-c11r*an1**2*c11*c12*an2s-c1**2*an1**2*c11*an2+2*c22*c11**2*an1s**2*an2+c12*c12s*an1*c11*an1s*an2-c12r*an1*c11**2*an1s*an2+2*c12*c1*an1*c11*an1s*an2-c12*c1s*an1**2*c11*an2-c2*an1*c11**2*an1s*an2-c22*c11**2*an1ss*an1*an2-2*c22*c11**2*an1s*a0*an1-2*c22*c11**2*an1s*an2s*an1+c12*c11s*an1**2*c1*an2-c11s*an1*c12**2*an1s*an2+c0*an1**2*c11**2*an2+c2*an1**2*c11**2*a0+c2*an1**2*c11**2*an2s+c1*an1**3*c11*c2+c1r*an1**2*c11**2*an2+c12r*an1**2*c11**2*a0+c12r*an1**2*c11**2*an2s-c11r*an1**2*c11*c12*a0-c2r*an1**3*c11**2)/an1**3/c11**3
140 b2=(-c11r*an1**2*c11*c12*an2-2*c12**2*c11*an2s*an1**2-c12*c11s*an1**3*c22-2*c12*c1*an1**2*c11*an2+c12*c2*an1**3*c11-c12*c12s*an1**2*c11*an2+c11s*an1**2*c12**2*an2-c22r*an1**3*c11**2+2*c22*c11**2*an2s*an1**2+c22*c11**2*a0*an1**2+c12*c22s*an1**3*c11-2*c22*c11**2*an1s*an2*an1+c11r*an1**3*c11*c22+c1*an1**3*c11*c22+c2*an1**2*c11**2*an2-c12**2*c11*a0*an1**2+c12r*an1**2*c11**2*an2+2*c12**2*c11*an1s*an2*an1)/an1**3/c11**3
142 b3=(c12*c22*an1**3*c11-c12**2*c11*an2*an1**2+c22*c11**2*an2*an1**2)/an1**3/c11**3
144 bf=(-c11r*an1*c11*c12*an1s+c11r*an1**2*c11*c1+2*c12**2*c11*an1s**2-c12**2*c11*an1ss*an1+c11s*an1*c12**2*an1s-2*c12*c1*an1*c11*an1s-c12*c12s*an1*c11*an1s+c12*c1s*an1**2*c11-c12*c11s*an1**2*c1-2*c22*c11**2*an1s**2+c22*c11**2*an1ss*an1+c1**2*an1**2*c11+c2*an1*c11**2*an1s-c0*an1**2*c11**2+c12r*an1*c11**2*an1s-c1r*an1**2*c11**2)/an1**3/c11**3*g+(-c11s*an1**2*c12**2-c2*an1**2*c11**2+2*c12*c1*an1**2*c11+2*c22*c11**2*an1s*an1+c11r*an1**2*c11*c12-c12r*an1**2*c11**2-2*c12**2*c11*an1s*an1+c12*c12s*an1**2*c11)/an1**3/c11**3*gs+(-c22*c11**2*an1**2+c12**2*c11*an1**2)/an1**3/c11**3*gss-c12/c11**2*ffs+1/c11*ffr+(-c11r*an1**3*c11*ff-c1*an1**3*c11*ff+c12*c11s*an1**3*ff)/an1**3/c11**3
147 b0=(-c12*c2r*an2**2*c22*a0-c12*c22r*an2**3*c0-c22r*an2*c12**2*an2r*a0+c12**2*c22*an2rr*an2*a0+c2*an2**3*c22*c0-c0s*an2**3*c22**2+c12*c22r*an2**2*c2*a0-c11*c22**2*an2rr*an2*a0+c12*c12r*an2*c22*an2r*a0+2*c11*c22**2*an2r**2*a0-c1*an2*c22**2*an2r*a0+c12*c0r*an2**3*c22+c0*an2**2*c22**2*a0+c22s*an2*c22*c12*an2r*a0-2*c12**2*c22*an2r**2*a0-c2**2*an2**2*c22*a0+2*c12*c2*an2*c22*an2r*a0-c22s*an2**2*c22*c2*a0-c12s*an2*c22**2*an2r*a0+c22s*an2**3*c22*c0+c2s*an2**2*c22**2*a0)/an2**3/c22**3
149 b1=(c11*c22**2*an1rr*an2**2-c12*c22r*an2**3*c1+c12*c1r*an2**3*c22+c12*c0*an2**3*c22+c22r*an2**2*c12**2*a0+c22r*an2**2*c12**2*an1r-2*c12**2*c22*an2r**2*an1-c12**2*c22*an1rr*an2**2+c22s*an2**3*c22*c1-c12*c12r*an2**2*c22*a0-c12*c12r*an2**2*c22*an1r-2*c12*c2*an2**2*c22*a0-2*c12*c2*an2**2*c22*an1r+c22s*an2*c22*c12*an2r*an1+c12**2*c22*an2rr*an2*an1+2*c12**2*c22*an2r*a0*an2+2*c12**2*c22*an2r*an1r*an2-c22s*an2**2*c22*c2*an1-c22s*an2**2*c22*c12*an1r-c2**2*an2**2*c22*an1+2*c11*c22**2*an2r**2*an1+c12*c12r*an2*c22*an2r*an1-c12s*an2*c22**2*an2r*an1+2*c12*c2*an2*c22*an2r*an1-c12*c2r*an2**2*c22*an1-c1*an2*c22**2*an2r*an1-c11*c22**2*an2rr*an2*an1-2*c11*c22**2*an2r*a0*an2-2*c11*c22**2*an2r*an1r*an2+c12*c22r*an2**2*c2*an1-c22r*an2*c12**2*an2r*an1+c0*an2**2*c22**2*an1+c1*an2**2*c22**2*a0+c1*an2**2*c22**2*an1r+c2*an2**3*c22*c1+c2s*an2**2*c22**2*an1+c12s*an2**2*c22**2*a0+c12s*an2**2*c22**2*an1r-c22s*an2**2*c22*c12*a0-c1s*an2**3*c22**2)/an2**3/c22**3
151 b2=(-c22s*an2**2*c22*c12*an1-2*c12**2*c22*an1r*an2**2-c12*c22r*an2**3*c11-2*c12*c2*an2**2*c22*an1+c12*c1*an2**3*c22-c12*c12r*an2**2*c22*an1+c22r*an2**2*c12**2*an1-c11s*an2**3*c22**2+2*c11*c22**2*an1r*an2**2+c11*c22**2*a0*an2**2+c12*c11r*an2**3*c22-2*c11*c22**2*an2r*an1*an2+c22s*an2**3*c22*c11+c2*an2**3*c22*c11+c1*an2**2*c22**2*an1-c12**2*c22*a0*an2**2+c12s*an2**2*c22**2*an1+2*c12**2*c22*an2r*an1*an2)/an2**3/c22**3
153 b3=(c12*c11*an2**3*c22-c12**2*c22*an1*an2**2+c11*c22**2*an1*an2**2)/an2**3/c22**3
155 bf=(-c22s*an2*c22*c12*an2r+c22s*an2**2*c22*c2+2*c12**2*c22*an2r**2-c12**2*c22*an2rr*an2+c22r*an2*c12**2*an2r-2*c12*c2*an2*c22*an2r-c12*c12r*an2*c22*an2r+c12*c2r*an2**2*c22-c12*c22r*an2**2*c2-2*c11*c22**2*an2r**2+c11*c22**2*an2rr*an2+c2**2*an2**2*c22+c1*an2*c22**2*an2r-c0*an2**2*c22**2+c12s*an2*c22**2*an2r-c2s*an2**2*c22**2)/an2**3/c22**3*g+(-c22r*an2**2*c12**2-c1*an2**2*c22**2+2*c12*c2*an2**2*c22+2*c11*c22**2*an2r*an2+c22s*an2**2*c22*c12-c12s*an2**2*c22**2-2*c12**2*c22*an2r*an2+c12*c12r*an2**2*c22)/an2**3/c22**3*gr+(-c11*c22**2*an2**2+c12**2*c22*an2**2)/an2**3/c22**3*grr-c12/c22**2*ffr+1/c22*ffs+(-c22s*an2**3*c22*ff-c2*an2**3*c22*ff+c12*c22r*an2**3*ff)/an2**3/c22**3