280 |
return out |
return out |
281 |
def makeContactDerivativeText(func,dim,func_name): |
def makeContactDerivativeText(func,dim,func_name): |
282 |
sh=func.shape |
sh=func.shape |
283 |
out="" |
out=2*intend+"n_contact=FunctionOnContactZero(self.domain).getNormal()\n" |
284 |
if len(sh)==dim+2: |
if len(sh)==dim+2: |
285 |
if sh[0]==1: |
if sh[0]==1: |
286 |
out2="" |
out2="" |
287 |
for j in range(sh[1]): |
for j in range(sh[1]): |
288 |
t=makeTermText(func[0,j]) |
t=makeTermText(func[0,j]) |
289 |
if not t == "0": |
if not t == "0": |
290 |
if len(out2)>0: out2+="+" |
if j==0: |
291 |
if j==0: out2+=t |
if len(out2)>0: out2+="+" |
292 |
|
out2+=t |
293 |
if len(out2)==0: |
if len(out2)==0: |
294 |
out+=2*intend+"%s=%s\n"%(func_name,0) |
out+=2*intend+"%s=%s\n"%(func_name,0) |
295 |
else: |
else: |
296 |
out+=2*intend+"%s=%s\n"%(func_name,out2) |
out+=2*intend+"%s=n_contact[0]*(%s)\n"%(func_name,out2) |
297 |
else: |
else: |
298 |
out+=2*intend+"%s=Data(0.,%s,FunctionOnContactZero(self.domain))\n"%(func_name,str(tuple(sh[:1]))) |
out+=2*intend+"%s=Data(0.,%s,FunctionOnContactZero(self.domain))\n"%(func_name,str(tuple(sh[:1]))) |
299 |
for i in range(sh[0]): |
for i in range(sh[0]): |
301 |
for j in range(sh[1]): |
for j in range(sh[1]): |
302 |
t=makeTermText(func[i,j]) |
t=makeTermText(func[i,j]) |
303 |
if not t == "0": |
if not t == "0": |
304 |
if len(out2)>0: out2+="+" |
if j==0: |
305 |
out2+="%s"%t |
if len(out2)>0: out2+="+" |
306 |
|
out2+="%s"%t |
307 |
if len(out2)>0: |
if len(out2)>0: |
308 |
out+=2*intend+"%s[%s]=%s\n"%(func_name,i,out2) |
out+=2*intend+"%s[%s]=n_contact[0]*(%s)\n"%(func_name,i,out2) |
309 |
else: |
else: |
310 |
raise RunTimeError,"KKK" |
raise RunTimeError,"KKK" |
311 |
return out |
return out |
344 |
if len(out2)==0: |
if len(out2)==0: |
345 |
out+=2*intend+"%s=%s\n"%(func_name,0) |
out+=2*intend+"%s=%s\n"%(func_name,0) |
346 |
else: |
else: |
347 |
out+=2*intend+"%s=%s\n"%(func_name,out2) |
out+=2*intend+"%s=%s%s%s\n"%(func_name,extra_pre,out2,extra) |
348 |
else: |
else: |
349 |
out+=2*intend+"%s=Data(0.,%s,FunctionOnBoundary(self.domain))\n"%(func_name,str(tuple(sh[:1]))) |
out+=2*intend+"%s=Data(0.,%s,FunctionOnBoundary(self.domain))\n"%(func_name,str(tuple(sh[:1]))) |
350 |
for i in range(sh[0]): |
for i in range(sh[0]): |
355 |
if len(out2)>0: out2+="+" |
if len(out2)>0: out2+="+" |
356 |
out2+="n[%s]*(%s)"%(j,t) |
out2+="n[%s]*(%s)"%(j,t) |
357 |
if len(out2)>0: |
if len(out2)>0: |
358 |
out+=2*intend+"%s[%s]=%s\n"%(func_name,i,out2) |
out+=2*intend+"%s[%s]=%s%s%s\n"%(func_name,i,extra_pre,out2,extra) |
359 |
else: |
else: |
360 |
raise RunTimeError,"KKK" |
raise RunTimeError,"KKK" |
361 |
return out |
return out |
468 |
if s==1: |
if s==1: |
469 |
for i in range(d): |
for i in range(d): |
470 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
471 |
body2=makeFunctionText(test_func,d,"u",typ=="Contact") |
body2=makeFunctionText(test_func,d,"u") |
472 |
body2+=2*intend+"B_test=Data(0.,(%d,),%s(self.domain))\n"%(d,func_i) |
body2+=2*intend+"B_test=Data(0.,(%d,),%s(self.domain))\n"%(d,func_i) |
473 |
if case == "Const" : |
if case == "Const" : |
474 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
487 |
args="B=B_test, Y=Y_test, y=y_test" |
args="B=B_test, Y=Y_test, y=y_test" |
488 |
else: |
else: |
489 |
div_B=makeDiv(B,d) |
div_B=makeDiv(B,d) |
490 |
body2+=makeFunctionText(-div_B,d,"Y_test",typ=="Contact") |
body2+=makeFunctionText(-div_B,d,"Y_test") |
491 |
body2+=makeNormalDerivativeText(B,d,"y_test",typ=="Contact") |
body2+=makeNormalDerivativeText(B,d,"y_test") |
492 |
body2+=makeContactDerivativeText(-B,d,"y_contact_test") |
body2+=makeContactDerivativeText(-B,d,"y_contact_test") |
493 |
args="B=B_test, Y=Y_test, y=y_test, y_contact=y_contact_test" |
args="B=B_test, Y=Y_test, y=y_test, y_contact=y_contact_test" |
494 |
makeTitle(d,coffo,solo,s,"B",case,typ,body2,mark="%s"%(i),pdeargs=args,add_jump=(typ=="Contact")) |
makeTitle(d,coffo,solo,s,"B",case,typ,body2,mark="%s"%(i),pdeargs=args) |
495 |
else: |
else: |
496 |
for p in range(s): |
for p in range(s): |
497 |
for i in range(d): |
for i in range(d): |
498 |
for q in range(s): |
for q in range(s): |
499 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
500 |
grad_test_func=makeGradient(test_func,d) |
grad_test_func=makeGradient(test_func,d) |
501 |
body2=makeFunctionText(test_func,d,"u",typ=="Contact") |
body2=makeFunctionText(test_func,d,"u") |
502 |
body2+=2*intend+"B_test=Data(0.,(%d,%d,%d),%s(self.domain))\n"%(s,d,s,func_i) |
body2+=2*intend+"B_test=Data(0.,(%d,%d,%d),%s(self.domain))\n"%(s,d,s,func_i) |
503 |
if case == "Const" : |
if case == "Const" : |
504 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
517 |
args="B=B_test, Y=Y_test, y=y_test" |
args="B=B_test, Y=Y_test, y=y_test" |
518 |
else: |
else: |
519 |
div_B=makeDiv(B,d) |
div_B=makeDiv(B,d) |
520 |
body2+=makeFunctionText(-div_B,d,"Y_test",typ=="Contact") |
body2+=makeFunctionText(-div_B,d,"Y_test") |
521 |
body2+=makeNormalDerivativeText(B,d,"y_test",typ=="Contact") |
body2+=makeNormalDerivativeText(B,d,"y_test") |
522 |
body2+=makeContactDerivativeText(B,d,"y_contact_test") |
body2+=makeContactDerivativeText(-B,d,"y_contact_test") |
523 |
args="B=B_test, Y=Y_test, y=y_test, y_contact=y_contact_test" |
args="B=B_test, Y=Y_test, y=y_test, y_contact=y_contact_test" |
524 |
makeTitle(d,coffo,solo,s,"B",case,typ,body2,mark="%s%s%s"%(p,i,q),pdeargs=args,add_jump=(typ=="Contact")) |
makeTitle(d,coffo,solo,s,"B",case,typ,body2,mark="%s%s%s"%(p,i,q),pdeargs=args) |
525 |
if typ=="Strong": |
if typ=="Strong": |
526 |
# coefficient C: |
# coefficient C: |
527 |
if s==1: |
if s==1: |