Overture  Version 25
neumannEquationBC.h
Go to the documentation of this file.
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
6 
7 c real alpha1,alpha2,a1,a2,a0
8 c real rxi,ryi,sxi,syi,rxr,rxs,sxr,sxs,ryr,rys,syr,sys
9 c real rxx,ryy,sxx,syy
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
20 c real b0,b1,b2,b3,bf
21 
22 #beginMacro fourthOrderNeumannEquationBC(DIR,DIM)
23  #If #DIM == "3"
24  stop 45
25  #End
26  rxi=rx(i1,i2,i3)
27  ryi=ry(i1,i2,i3)
28  sxi=sx(i1,i2,i3)
29  syi=sy(i1,i2,i3)
30 
31  rxr=rxr2(i1,i2,i3)
32  rxs=rxs2(i1,i2,i3)
33  ryr=ryr2(i1,i2,i3)
34  rys=rys2(i1,i2,i3)
35 
36  sxr=sxr2(i1,i2,i3)
37  sxs=sxs2(i1,i2,i3)
38  syr=syr2(i1,i2,i3)
39  sys=sys2(i1,i2,i3)
40 
41  rxx=rxx22(i1,i2,i3)
42  ryy=ryy22(i1,i2,i3)
43  rxrr=rxrr2(i1,i2,i3)
44  rxrs=rxrs2(i1,i2,i3)
45  rxss=rxss2(i1,i2,i3)
46  ryrr=ryrr2(i1,i2,i3)
47  ryrs=ryrs2(i1,i2,i3)
48  ryss=ryss2(i1,i2,i3)
49 
50  sxx=sxx22(i1,i2,i3)
51  syy=syy22(i1,i2,i3)
52  sxrr=sxrr2(i1,i2,i3)
53  sxrs=sxrs2(i1,i2,i3)
54  sxss=sxss2(i1,i2,i3)
55  syrr=syrr2(i1,i2,i3)
56  syrs=syrs2(i1,i2,i3)
57  syss=syss2(i1,i2,i3)
58 
59  rxxr=rxi*rxrr+rxr*rxr + sxi*rxrs + sxr*rxs
60  ryyr=ryi*ryrr+ryr*ryr + syi*ryrs + syr*rys
61 
62  rxxs=rxi*rxrs+rxs*rxr + sxi*rxss + sxs*rxs
63  ryys=ryi*ryrs+rys*ryr + syi*ryss + sys*rys
64 
65  sxxr=rxi*sxrr+rxr*sxr + sxi*sxrs + sxr*sxs
66  syyr=ryi*syrr+ryr*syr + syi*syrs + syr*sys
67 
68  sxxs=rxi*sxrs+rxs*sxr + sxi*sxss + sxs*sxs
69  syys=ryi*syrs+rys*syr + syi*syss + sys*sys
70 
71  alpha1=a1*nsign ! nsign=2*side-1
72  alpha2=a1*nsign
73 
74  #If #DIR == "R"
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
78 
79  n1=rxi*rxNormI
80  n1s=rxs*rxNormI + rxi*rxNormIs
81  n1ss=rxss*rxNormI + 2.*rxs*rxNormIs + rxi*rxNormIss
82  n2=ryi*rxNormI
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)
91  #Else
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
95 
96  n1=sxi*sxNormI
97  n1r=sxr*sxNormI + sxi*sxNormIr
98  n1rr=sxrr*sxNormI + 2.*sxr*sxNormIr + sxi*sxNormIrr
99  n2=syi*sxNormI
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)
108  #End
109 
110  c11=rxi**2+ryi**2
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)
116  c22=sxi**2+syi**2
117  c22r=2.*(sxi*sxr+syi*syr)
118  c22s=2.*(sxi*sxs+syi*sys)
119  c1=rxx+ryy
120  c1r=rxxr+ryyr
121  c1s=rxxs+ryys
122  c2=sxx+syy
123  c2r=sxxr+syyr
124  c2s=sxxs+syys
125  c0=0.
126  c0r=0.
127  c0s=0.
128 
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)
130 c um2=-1/2/dr**3
131 c um1=1/dr**3
132 c u0 =-1/ds**2*(b0*ds**2-2*b2)
133 c up1=-1/dr**3
134 c up2=1/2/dr**3
135  #If #DIR == "R"
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
137 
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
139 
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
141 
142  b3=(c12*c22*an1**3*c11-c12**2*c11*an2*an1**2+c22*c11**2*an2*an1**2)/an1**3/c11**3
143 
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
145 
146  #Else
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
148 
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
150 
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
152 
153  b3=(c12*c11*an2**3*c22-c12**2*c22*an1*an2**2+c11*c22**2*an1*an2**2)/an2**3/c22**3
154 
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
156 
157  #End
158 
159 #endMacro