315 |
raise RunTimeError,"KKK" |
raise RunTimeError,"KKK" |
316 |
return out |
return out |
317 |
|
|
318 |
def makeNormalDerivativeText(func,dim,func_name,add_jump=False): |
def makeNormalDerivativeText(func,dim,func_name,func_pre,add_jump=False): |
319 |
sh=func.shape |
sh=func.shape |
320 |
out="" |
out="" |
321 |
if add_jump: |
if add_jump: |
325 |
extra="" |
extra="" |
326 |
extra_pre="" |
extra_pre="" |
327 |
|
|
328 |
out=2*intend+"x_boundary=FunctionOnBoundary(self.domain).getX()\n" |
out=2*intend+"x_boundary=%sFunctionOnBoundary(self.domain).getX()\n"%func_pre |
329 |
if dim==3: |
if dim==3: |
330 |
out+=2*intend+"n=%swhereZero(x_boundary[0] ,self.ABS_TOL)*numarray.array([-1., 0., 0.])"%extra_pre |
out+=2*intend+"n=%swhereZero(x_boundary[0] ,self.ABS_TOL)*numarray.array([-1., 0., 0.])"%extra_pre |
331 |
out+="+whereZero(x_boundary[0]-1.,self.ABS_TOL)*numarray.array([ 1., 0., 0.])" |
out+="+whereZero(x_boundary[0]-1.,self.ABS_TOL)*numarray.array([ 1., 0., 0.])" |
351 |
else: |
else: |
352 |
out+=2*intend+"%s=%s%s%s\n"%(func_name,extra_pre,out2,extra) |
out+=2*intend+"%s=%s%s%s\n"%(func_name,extra_pre,out2,extra) |
353 |
else: |
else: |
354 |
out+=2*intend+"%s=Data(0.,%s,FunctionOnBoundary(self.domain))\n"%(func_name,str(tuple(sh[:1]))) |
out+=2*intend+"%s=Data(0.,%s,%sFunctionOnBoundary(self.domain))\n"%(func_name,str(tuple(sh[:1])),func_pre) |
355 |
for i in range(sh[0]): |
for i in range(sh[0]): |
356 |
out2="" |
out2="" |
357 |
for j in range(sh[1]): |
for j in range(sh[1]): |
410 |
for s in [1,2,3]: |
for s in [1,2,3]: |
411 |
for d in [2,3]: |
for d in [2,3]: |
412 |
for typ in ["Strong","Weak", "Contact"]: |
for typ in ["Strong","Weak", "Contact"]: |
413 |
for coffo in ["Full", "Reduced" ]: |
# for coffo in ["Full", "Reduced" ]: |
414 |
|
for coffo in [ "Reduced" ]: |
415 |
if coffo=="Full": |
if coffo=="Full": |
416 |
func_i="Function" |
func_i="" |
417 |
|
arg_post="" |
418 |
else: |
else: |
419 |
func_i="ReducedFunction" |
func_i="Reduced" |
420 |
|
arg_post="_reduced" |
421 |
for case in ["Const", "Vario" ]: |
for case in ["Const", "Vario" ]: |
422 |
for solo in [1, 2 ]: |
for solo in [1, 2 ]: |
423 |
if typ in ["Strong","Weak"]: |
if typ in ["Strong","Weak"]: |
424 |
# coefficient A: |
# coefficient A: |
425 |
if case=="Vario" and typ=="Weak": |
if case=="Vario" and typ=="Weak": |
426 |
order=solo |
order=solo |
427 |
|
elif coffo=="Reduced" and case=="Vario": |
428 |
|
order=1 |
429 |
else: |
else: |
430 |
order=solo |
order=solo |
431 |
if s==1: |
if s==1: |
434 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
435 |
grad_test_func=makeGradient(test_func,d) |
grad_test_func=makeGradient(test_func,d) |
436 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
437 |
body2+=2*intend+"A_test=Data(0.,(%d,%d),%s(self.domain))\n"%(d,d,func_i) |
body2+=2*intend+"A_test=Data(0.,(%d,%d),%sFunction(self.domain))\n"%(d,d,func_i) |
438 |
if case == "Const" : |
if case == "Const" : |
439 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
440 |
body2+=2*intend+"A_test[%d,%d]=%s\n"%(i,j,f) |
body2+=2*intend+"A_test[%d,%d]=%s\n"%(i,j,f) |
444 |
A_x_grad=multiplyByFandX(1.,i,grad_test_func,(0,j),(1,d),(0,i)) |
A_x_grad=multiplyByFandX(1.,i,grad_test_func,(0,j),(1,d),(0,i)) |
445 |
if typ=="Weak": |
if typ=="Weak": |
446 |
body2+=makeFunctionText(A_x_grad,d,"X_test") |
body2+=makeFunctionText(A_x_grad,d,"X_test") |
447 |
args="A=A_test, X=X_test" |
args="A%s=A_test, X%s=X_test"%(arg_post,arg_post) |
448 |
else: |
else: |
449 |
div_A_x_grad=makeDiv(A_x_grad,d) |
div_A_x_grad=makeDiv(A_x_grad,d) |
450 |
body2+=makeFunctionText(-div_A_x_grad,d,"Y_test") |
body2+=makeFunctionText(-div_A_x_grad,d,"Y_test") |
451 |
body2+=makeNormalDerivativeText(A_x_grad,d,"y_test") |
if solo==2 and case=="Const": |
452 |
args="A=A_test, Y=Y_test, y=y_test" |
body2+=makeNormalDerivativeText(A_x_grad,d,"y_test","") |
453 |
|
args="A%s=A_test, Y%s=Y_test, y=y_test"%(arg_post,arg_post) |
454 |
|
else: |
455 |
|
body2+=makeNormalDerivativeText(A_x_grad,d,"y_test",func_i) |
456 |
|
args="A%s=A_test, Y%s=Y_test, y%s=y_test"%(arg_post,arg_post,arg_post) |
457 |
|
|
458 |
makeTitle(d,coffo,solo,s,"A",case,typ,body2,mark="%s%s"%(i,j),pdeargs=args) |
makeTitle(d,coffo,solo,s,"A",case,typ,body2,mark="%s%s"%(i,j),pdeargs=args) |
459 |
else: |
else: |
464 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
465 |
grad_test_func=makeGradient(test_func,d) |
grad_test_func=makeGradient(test_func,d) |
466 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
467 |
body2+=2*intend+"A_test=Data(0.,(%d,%d,%d,%d),%s(self.domain))\n"%(s,d,s,d,func_i) |
body2+=2*intend+"A_test=Data(0.,(%d,%d,%d,%d),%sFunction(self.domain))\n"%(s,d,s,d,func_i) |
468 |
if case == "Const" : |
if case == "Const" : |
469 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
470 |
body2+=2*intend+"A_test[%d,%d,%d,%d]=%s\n"%(p,i,q,j,f) |
body2+=2*intend+"A_test[%d,%d,%d,%d]=%s\n"%(p,i,q,j,f) |
474 |
A_x_grad=multiplyByFandX(1.,i,grad_test_func,(q,j),(s,d),(p,i)) |
A_x_grad=multiplyByFandX(1.,i,grad_test_func,(q,j),(s,d),(p,i)) |
475 |
if typ=="Weak": |
if typ=="Weak": |
476 |
body2+=makeFunctionText(A_x_grad,d,"X_test") |
body2+=makeFunctionText(A_x_grad,d,"X_test") |
477 |
args="A=A_test, X=X_test" |
args="A%s=A_test, X%s=X_test"%(arg_post,arg_post) |
478 |
else: |
else: |
479 |
div_A_x_grad=makeDiv(A_x_grad,d) |
div_A_x_grad=makeDiv(A_x_grad,d) |
480 |
body2+=makeFunctionText(-div_A_x_grad,d,"Y_test") |
body2+=makeFunctionText(-div_A_x_grad,d,"Y_test") |
481 |
body2+=makeNormalDerivativeText(A_x_grad,d,"y_test") |
if solo==2 and case=="Const": |
482 |
args="A=A_test, Y=Y_test, y=y_test" |
body2+=makeNormalDerivativeText(A_x_grad,d,"y_test","") |
483 |
|
args="A%s=A_test, Y%s=Y_test, y=y_test"%(arg_post,arg_post) |
484 |
|
else: |
485 |
|
body2+=makeNormalDerivativeText(A_x_grad,d,"y_test",func_i) |
486 |
|
args="A%s=A_test, Y%s=Y_test, y%s=y_test"%(arg_post,arg_post,arg_post) |
487 |
makeTitle(d,coffo,solo,s,"A",case,typ,body2,mark="%s%s%s%s"%(p,i,q,j),pdeargs=args) |
makeTitle(d,coffo,solo,s,"A",case,typ,body2,mark="%s%s%s%s"%(p,i,q,j),pdeargs=args) |
488 |
# coefficient B: |
# coefficient B: |
489 |
if typ in ["Strong","Weak"] or coffo=="Full": |
if typ in ["Strong","Weak"] or coffo=="Full": |
490 |
if case=="Vario" and typ=="Weak": |
if case=="Vario" and typ=="Weak": |
491 |
order=solo-1 |
order=solo-1 |
492 |
|
elif coffo=="Reduced" and case=="Vario": |
493 |
|
order=0 |
494 |
|
elif coffo=="Reduced": |
495 |
|
order=solo-1 |
496 |
else: |
else: |
497 |
order=solo |
order=solo |
498 |
if s==1: |
if s==1: |
499 |
for i in range(d): |
for i in range(d): |
500 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
501 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
502 |
body2+=2*intend+"B_test=Data(0.,(%d,),%s(self.domain))\n"%(d,func_i) |
body2+=2*intend+"B_test=Data(0.,(%d,),%sFunction(self.domain))\n"%(d,func_i) |
503 |
if case == "Const" : |
if case == "Const" : |
504 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
505 |
body2+=2*intend+"B_test[%d]=%s\n"%(i,f) |
body2+=2*intend+"B_test[%d]=%s\n"%(i,f) |
509 |
B=multiplyByFandX(1.,i,test_func,(0,),(1,d),(0,i)) |
B=multiplyByFandX(1.,i,test_func,(0,),(1,d),(0,i)) |
510 |
if typ=="Weak": |
if typ=="Weak": |
511 |
body2+=makeFunctionText(B,d,"X_test") |
body2+=makeFunctionText(B,d,"X_test") |
512 |
args="B=B_test, X=X_test" |
args="B%s=B_test, X%s=X_test"%(arg_post,arg_post) |
513 |
elif typ=="Strong": |
elif typ=="Strong": |
514 |
div_B=makeDiv(B,d) |
div_B=makeDiv(B,d) |
515 |
body2+=makeFunctionText(-div_B,d,"Y_test") |
body2+=makeFunctionText(-div_B,d,"Y_test") |
516 |
body2+=makeNormalDerivativeText(B,d,"y_test") |
if solo==2 and case=="Const": |
517 |
args="B=B_test, Y=Y_test, y=y_test" |
body2+=makeNormalDerivativeText(B,d,"y_test","") |
518 |
|
args="B%s=B_test, Y%s=Y_test, y=y_test"%(arg_post,arg_post) |
519 |
|
else: |
520 |
|
body2+=makeNormalDerivativeText(B,d,"y_test",func_i) |
521 |
|
args="B%s=B_test, Y%s=Y_test, y%s=y_test"%(arg_post,arg_post,arg_post) |
522 |
else: |
else: |
523 |
div_B=makeDiv(B,d) |
div_B=makeDiv(B,d) |
524 |
body2+=makeFunctionText(-div_B,d,"Y_test") |
body2+=makeFunctionText(-div_B,d,"Y_test") |
525 |
body2+=makeNormalDerivativeText(B,d,"y_test") |
body2+=makeNormalDerivativeText(B,d,"y_test",func_i) |
526 |
body2+=makeContactDerivativeText(-B,d,"y_contact_test") |
body2+=makeContactDerivativeText(-B,d,"y_contact_test") |
527 |
args="B=B_test, Y=Y_test, y=y_test, y_contact=y_contact_test" |
args="B%s=B_test, Y%s=Y_test, y%s=y_test, y_contact%s=y_contact_test"%(arg_post,arg_post,arg_post,arg_post) |
528 |
makeTitle(d,coffo,solo,s,"B",case,typ,body2,mark="%s"%(i),pdeargs=args) |
makeTitle(d,coffo,solo,s,"B",case,typ,body2,mark="%s"%(i),pdeargs=args) |
529 |
else: |
else: |
530 |
for p in range(s): |
for p in range(s): |
533 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
534 |
grad_test_func=makeGradient(test_func,d) |
grad_test_func=makeGradient(test_func,d) |
535 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
536 |
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),%sFunction(self.domain))\n"%(s,d,s,func_i) |
537 |
if case == "Const" : |
if case == "Const" : |
538 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
539 |
body2+=2*intend+"B_test[%d,%d,%d]=%s\n"%(p,i,q,f) |
body2+=2*intend+"B_test[%d,%d,%d]=%s\n"%(p,i,q,f) |
543 |
B=multiplyByFandX(1.,i,test_func,(q,),(s,d),(p,i)) |
B=multiplyByFandX(1.,i,test_func,(q,),(s,d),(p,i)) |
544 |
if typ=="Weak": |
if typ=="Weak": |
545 |
body2+=makeFunctionText(B,d,"X_test") |
body2+=makeFunctionText(B,d,"X_test") |
546 |
args="B=B_test, X=X_test" |
args="B%s=B_test, X%s=X_test"%(arg_post,arg_post) |
547 |
elif typ=="Strong": |
elif typ=="Strong": |
548 |
div_B=makeDiv(B,d) |
div_B=makeDiv(B,d) |
549 |
body2+=makeFunctionText(-div_B,d,"Y_test") |
body2+=makeFunctionText(-div_B,d,"Y_test") |
550 |
body2+=makeNormalDerivativeText(B,d,"y_test") |
if solo==2 and case=="Const": |
551 |
args="B=B_test, Y=Y_test, y=y_test" |
body2+=makeNormalDerivativeText(B,d,"y_test","") |
552 |
|
args="B%s=B_test, Y%s=Y_test, y=y_test"%(arg_post,arg_post) |
553 |
|
else: |
554 |
|
body2+=makeNormalDerivativeText(B,d,"y_test",func_i) |
555 |
|
args="B%s=B_test, Y%s=Y_test, y%s=y_test"%(arg_post,arg_post,arg_post) |
556 |
else: |
else: |
557 |
div_B=makeDiv(B,d) |
div_B=makeDiv(B,d) |
558 |
body2+=makeFunctionText(-div_B,d,"Y_test") |
body2+=makeFunctionText(-div_B,d,"Y_test") |
559 |
body2+=makeNormalDerivativeText(B,d,"y_test") |
body2+=makeNormalDerivativeText(B,d,"y_test",func_i) |
560 |
body2+=makeContactDerivativeText(-B,d,"y_contact_test") |
body2+=makeContactDerivativeText(-B,d,"y_contact_test") |
561 |
args="B=B_test, Y=Y_test, y=y_test, y_contact=y_contact_test" |
args="B%s=B_test, Y%s=Y_test, y%s=y_test, y_contact=y_contact_test%s"%(arg_post,arg_post,arg_post,arg_post) |
562 |
makeTitle(d,coffo,solo,s,"B",case,typ,body2,mark="%s%s%s"%(p,i,q),pdeargs=args) |
makeTitle(d,coffo,solo,s,"B",case,typ,body2,mark="%s%s%s"%(p,i,q),pdeargs=args) |
563 |
if typ=="Strong": |
if typ=="Strong": |
564 |
# coefficient C: |
# coefficient C: |
568 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
569 |
grad_test_func=makeGradient(test_func,d) |
grad_test_func=makeGradient(test_func,d) |
570 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
571 |
body2+=2*intend+"C_test=Data(0.,(%d,),%s(self.domain))\n"%(d,func_i) |
body2+=2*intend+"C_test=Data(0.,(%d,),%sFunction(self.domain))\n"%(d,func_i) |
572 |
if case == "Const" : |
if case == "Const" : |
573 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
574 |
body2+=2*intend+"C_test[%d]=%s\n"%(j,f) |
body2+=2*intend+"C_test[%d]=%s\n"%(j,f) |
577 |
body2+=2*intend+"C_test[%d]=x[%i]\n"%(j,j) |
body2+=2*intend+"C_test[%d]=x[%i]\n"%(j,j) |
578 |
C_x_grad=multiplyByFandX(1,j,grad_test_func,(0,j),(1,),(0,)) |
C_x_grad=multiplyByFandX(1,j,grad_test_func,(0,j),(1,),(0,)) |
579 |
body2+=makeFunctionText(C_x_grad,d,"Y_test") |
body2+=makeFunctionText(C_x_grad,d,"Y_test") |
580 |
args="C=C_test, Y=Y_test" |
args="C%s=C_test, Y%s=Y_test"%(arg_post,arg_post) |
581 |
makeTitle(d,coffo,solo,s,"C",case,typ,body2,mark="%s"%(j),pdeargs=args) |
makeTitle(d,coffo,solo,s,"C",case,typ,body2,mark="%s"%(j),pdeargs=args) |
582 |
else: |
else: |
583 |
for p in range(s): |
for p in range(s): |
586 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
587 |
grad_test_func=makeGradient(test_func,d) |
grad_test_func=makeGradient(test_func,d) |
588 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
589 |
body2+=2*intend+"C_test=Data(0.,(%d,%d,%d),%s(self.domain))\n"%(s,s,d,func_i) |
body2+=2*intend+"C_test=Data(0.,(%d,%d,%d),%sFunction(self.domain))\n"%(s,s,d,func_i) |
590 |
if case == "Const" : |
if case == "Const" : |
591 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
592 |
body2+=2*intend+"C_test[%d,%d,%d]=%s\n"%(p,q,j,f) |
body2+=2*intend+"C_test[%d,%d,%d]=%s\n"%(p,q,j,f) |
594 |
else: |
else: |
595 |
body2+=2*intend+"C_test[%d,%d,%d]=x[%i]\n"%(p,q,j,j) |
body2+=2*intend+"C_test[%d,%d,%d]=x[%i]\n"%(p,q,j,j) |
596 |
C_x_grad=multiplyByFandX(1.,j,grad_test_func,(q,j),(s,),(p,)) |
C_x_grad=multiplyByFandX(1.,j,grad_test_func,(q,j),(s,),(p,)) |
597 |
args="C=C_test, Y=Y_test" |
args="C%s=C_test, Y%s=Y_test"%(arg_post,arg_post) |
598 |
body2+=makeFunctionText(C_x_grad,d,"Y_test") |
body2+=makeFunctionText(C_x_grad,d,"Y_test") |
599 |
makeTitle(d,coffo,solo,s,"C",case,typ,body2,mark="%s%s%s"%(p,q,j),pdeargs=args) |
makeTitle(d,coffo,solo,s,"C",case,typ,body2,mark="%s%s%s"%(p,q,j),pdeargs=args) |
600 |
# coefficient D: |
# coefficient D: |
607 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
608 |
if case == "Const" : |
if case == "Const" : |
609 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
610 |
body2+=2*intend+"D_test=Data(%s,(),%s(self.domain))\n"%(f,func_i) |
body2+=2*intend+"D_test=Data(%s,(),%sFunction(self.domain))\n"%(f,func_i) |
611 |
D=multiplyByFandX(f,-1,test_func,(0,),(1,),(0,)) |
D=multiplyByFandX(f,-1,test_func,(0,),(1,),(0,)) |
612 |
else: |
else: |
613 |
body2+=2*intend+"D_test=%s(self.domain).getX()[0]\n"%func_i |
body2+=2*intend+"D_test=%sFunction(self.domain).getX()[0]\n"%func_i |
614 |
D=multiplyByFandX(1,0,test_func,(0,),(1,),(0,)) |
D=multiplyByFandX(1,0,test_func,(0,),(1,),(0,)) |
615 |
args="D=D_test, Y=Y_test" |
args="D%s=D_test, Y%s=Y_test"%(arg_post,arg_post) |
616 |
body2+=makeFunctionText(D,d,"Y_test") |
body2+=makeFunctionText(D,d,"Y_test") |
617 |
makeTitle(d,coffo,solo,s,"D",case,typ,body2,mark="",pdeargs=args) |
makeTitle(d,coffo,solo,s,"D",case,typ,body2,mark="",pdeargs=args) |
618 |
else: |
else: |
620 |
for q in range(s): |
for q in range(s): |
621 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
622 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
623 |
body2+=2*intend+"D_test=Data(0.,(%d,%d),%s(self.domain))\n"%(s,s,func_i) |
body2+=2*intend+"D_test=Data(0.,(%d,%d),%sFunction(self.domain))\n"%(s,s,func_i) |
624 |
if case == "Const" : |
if case == "Const" : |
625 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
626 |
body2+=2*intend+"D_test[%d,%d]=%s\n"%(p,q,f) |
body2+=2*intend+"D_test[%d,%d]=%s\n"%(p,q,f) |
628 |
else: |
else: |
629 |
body2+=2*intend+"D_test[%d,%d]=x[0]\n"%(p,q) |
body2+=2*intend+"D_test[%d,%d]=x[0]\n"%(p,q) |
630 |
D=multiplyByFandX(1.,0,test_func,(q,),(s,),(p,)) |
D=multiplyByFandX(1.,0,test_func,(q,),(s,),(p,)) |
631 |
args="D=D_test, Y=Y_test" |
args="D%s=D_test, Y%s=Y_test"%(arg_post,arg_post) |
632 |
body2+=makeFunctionText(D,d,"Y_test") |
body2+=makeFunctionText(D,d,"Y_test") |
633 |
makeTitle(d,coffo,solo,s,"D",case,typ,body2,mark="%s%s"%(p,q),pdeargs=args) |
makeTitle(d,coffo,solo,s,"D",case,typ,body2,mark="%s%s"%(p,q),pdeargs=args) |
634 |
if coffo=="Full": |
if coffo in ["Full", "Reduced"]: |
635 |
if case=="Vario": |
if case=="Vario": |
636 |
order=solo-1 |
order=solo-1 |
637 |
else: |
else: |
643 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
644 |
if case == "Const" : |
if case == "Const" : |
645 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
646 |
body2+=2*intend+"d_test=Data(%s,(),FunctionOnBoundary(self.domain))\n"%(f,) |
body2+=2*intend+"d_test=Data(%s,(),%sFunctionOnBoundary(self.domain))\n"%(f,func_i) |
647 |
D=multiplyByFandX(f,-1,test_func,(0,),(1,),(0,)) |
D=multiplyByFandX(f,-1,test_func,(0,),(1,),(0,)) |
648 |
else: |
else: |
649 |
body2+=2*intend+"d_test=interpolate(x[0],FunctionOnBoundary(self.domain))\n" |
body2+=2*intend+"d_test=interpolate(x[0],%sFunctionOnBoundary(self.domain))\n"%(func_i,) |
650 |
D=multiplyByFandX(1.,0,test_func,(0,),(1,),(0,)) |
D=multiplyByFandX(1.,0,test_func,(0,),(1,),(0,)) |
651 |
body2+=makeFunctionText(D,d,"y_test") |
body2+=makeFunctionText(D,d,"y_test") |
652 |
args="d=d_test, y=y_test" |
args="d%s=d_test, y%s=y_test"%(arg_post,arg_post) |
653 |
makeTitle(d,coffo,solo,s,"d",case,typ,body2,mark="",pdeargs=args) |
makeTitle(d,coffo,solo,s,"d",case,typ,body2,mark="",pdeargs=args) |
654 |
else: |
else: |
655 |
for p in range(s): |
for p in range(s): |
656 |
for q in range(s): |
for q in range(s): |
657 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
658 |
body2=makeFunctionText(test_func,d,"u") |
body2=makeFunctionText(test_func,d,"u") |
659 |
body2+=2*intend+"d_test=Data(0.,(%d,%d),FunctionOnBoundary(self.domain))\n"%(s,s) |
body2+=2*intend+"d_test=Data(0.,(%d,%d),%sFunctionOnBoundary(self.domain))\n"%(s,s,func_i) |
660 |
if case == "Const" : |
if case == "Const" : |
661 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
662 |
body2+=2*intend+"d_test[%d,%d]=%s\n"%(p,q,f) |
body2+=2*intend+"d_test[%d,%d]=%s\n"%(p,q,f) |
665 |
body2+=2*intend+"d_test[%d,%d]=x[0]\n"%(p,q) |
body2+=2*intend+"d_test[%d,%d]=x[0]\n"%(p,q) |
666 |
|
|
667 |
D=multiplyByFandX(1.,0,test_func,(q,),(s,),(p,)) |
D=multiplyByFandX(1.,0,test_func,(q,),(s,),(p,)) |
668 |
args="d=d_test, y=y_test" |
args="d%s=d_test, y%s=y_test"%(arg_post,arg_post) |
669 |
body2+=makeFunctionText(D,d,"y_test") |
body2+=makeFunctionText(D,d,"y_test") |
670 |
makeTitle(d,coffo,solo,s,"d",case,typ,body2,mark="%s%s"%(p,q),pdeargs=args) |
makeTitle(d,coffo,solo,s,"d",case,typ,body2,mark="%s%s"%(p,q),pdeargs=args) |
671 |
# coefficient d_contact: |
# coefficient d_contact: |
679 |
body2=makeFunctionText(test_func,d,"u",add_jump=True) |
body2=makeFunctionText(test_func,d,"u",add_jump=True) |
680 |
if case == "Const" : |
if case == "Const" : |
681 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
682 |
body2+=2*intend+"d_contact_test=Data(%s,(),FunctionOnContactZero(self.domain))\n"%(f,) |
body2+=2*intend+"d_contact_test=Data(%s,(),%sFunctionOnContactZero(self.domain))\n"%(f,func_i) |
683 |
D=multiplyByFandX(f,-1,test_func,(0,),(1,),(0,)) |
D=multiplyByFandX(f,-1,test_func,(0,),(1,),(0,)) |
684 |
else: |
else: |
685 |
body2+=2*intend+"d_contact_test=interpolate(x[0],FunctionOnContactZero(self.domain))\n" |
body2+=2*intend+"d_contact_test=interpolate(x[0],%sFunctionOnContactZero(self.domain))\n"%func_i |
686 |
D=multiplyByFandX(1.,0,test_func,(0,),(1,),(0,)) |
D=multiplyByFandX(1.,0,test_func,(0,),(1,),(0,)) |
687 |
body2+=makeFunctionText(D,d,"y_contact_test") |
body2+=makeFunctionText(D,d,"y_contact_test") |
688 |
args="d_contact=d_contact_test, y_contact=y_contact_test" |
args="d_contact%s=d_contact_test, y_contact%s=y_contact_test"%(arg_post,arg_post) |
689 |
makeTitle(d,coffo,solo,s,"d_contact",case,typ,body2,mark="",pdeargs=args,add_jump=True) |
makeTitle(d,coffo,solo,s,"d_contact",case,typ,body2,mark="",pdeargs=args,add_jump=True) |
690 |
else: |
else: |
691 |
for p in range(s): |
for p in range(s): |
692 |
for q in range(s): |
for q in range(s): |
693 |
test_func=makeTestSolution(order,s,d) |
test_func=makeTestSolution(order,s,d) |
694 |
body2=makeFunctionText(test_func,d,"u",add_jump=True) |
body2=makeFunctionText(test_func,d,"u",add_jump=True) |
695 |
body2+=2*intend+"d_contact_test=Data(0.,(%d,%d),FunctionOnContactZero(self.domain))\n"%(s,s) |
body2+=2*intend+"d_contact_test=Data(0.,(%d,%d),%sFunctionOnContactZero(self.domain))\n"%(s,s,func_i) |
696 |
if case == "Const" : |
if case == "Const" : |
697 |
f=int(8*random.random())+1 |
f=int(8*random.random())+1 |
698 |
body2+=2*intend+"d_contact_test[%d,%d]=%s\n"%(p,q,f) |
body2+=2*intend+"d_contact_test[%d,%d]=%s\n"%(p,q,f) |
701 |
body2+=2*intend+"d_contact_test[%d,%d]=x[0]\n"%(p,q) |
body2+=2*intend+"d_contact_test[%d,%d]=x[0]\n"%(p,q) |
702 |
D=multiplyByFandX(1.,0,test_func,(q,),(s,),(p,)) |
D=multiplyByFandX(1.,0,test_func,(q,),(s,),(p,)) |
703 |
body2+=makeFunctionText(D,d,"y_contact_test") |
body2+=makeFunctionText(D,d,"y_contact_test") |
704 |
args="d_contact=d_contact_test, y_contact=y_contact_test" |
args="d_contact%s=d_contact_test, y_contact%s=y_contact_test"%(arg_post,arg_post) |
705 |
makeTitle(d,coffo,solo,s,"d_contact",case,typ,body2,mark="%s%s"%(p,q),pdeargs=args,add_jump=True |
makeTitle(d,coffo,solo,s,"d_contact",case,typ,body2,mark="%s%s"%(p,q),pdeargs=args,add_jump=True |
706 |
) |
) |
707 |
#================================ |
#================================ |
710 |
print "from esys.escript import *" |
print "from esys.escript import *" |
711 |
print "from esys.finley import Rectangle,Brick" |
print "from esys.finley import Rectangle,Brick" |
712 |
print "class Test_assemblage_2Do1(unittest.TestCase):" |
print "class Test_assemblage_2Do1(unittest.TestCase):" |
713 |
print t_prog["2Do1"] |
if len(t_prog["2Do1"])>0: |
714 |
|
print t_prog["2Do1"] |
715 |
|
else: |
716 |
|
print " pass" |
717 |
print "class Test_assemblage_2Do1_Reduced(unittest.TestCase):" |
print "class Test_assemblage_2Do1_Reduced(unittest.TestCase):" |
718 |
print t_prog["2Do1_reduced"] |
if len(t_prog["2Do1_reduced"])>0: |
719 |
|
print t_prog["2Do1_reduced"] |
720 |
|
else: |
721 |
|
print " pass" |
722 |
print "class Test_assemblage_2Do1_Contact(unittest.TestCase):" |
print "class Test_assemblage_2Do1_Contact(unittest.TestCase):" |
723 |
print t_prog["2Do1_contact"] |
if len(t_prog["2Do1_contact"])>0: |
724 |
|
print t_prog["2Do1_contact"] |
725 |
|
else: |
726 |
|
print " pass" |
727 |
|
|
728 |
print "class Test_assemblage_2Do2(unittest.TestCase):" |
print "class Test_assemblage_2Do2(unittest.TestCase):" |
729 |
print t_prog["2Do2"] |
if len(t_prog["2Do2"])>0: |
730 |
|
print t_prog["2Do2"] |
731 |
|
else: |
732 |
|
print " pass" |
733 |
print "class Test_assemblage_2Do2_Reduced(unittest.TestCase):" |
print "class Test_assemblage_2Do2_Reduced(unittest.TestCase):" |
734 |
print t_prog["2Do2_reduced"] |
if len(t_prog["2Do2_reduced"])>0: |
735 |
|
print t_prog["2Do2_reduced"] |
736 |
|
else: |
737 |
|
print " pass" |
738 |
print "class Test_assemblage_2Do2_Contact(unittest.TestCase):" |
print "class Test_assemblage_2Do2_Contact(unittest.TestCase):" |
739 |
print t_prog["2Do2_contact"] |
if len(t_prog["2Do2_contact"])>0: |
740 |
|
print t_prog["2Do2_contact"] |
741 |
|
else: |
742 |
|
print " pass" |
743 |
|
|
744 |
print "class Test_assemblage_3Do1(unittest.TestCase):" |
print "class Test_assemblage_3Do1(unittest.TestCase):" |
745 |
print t_prog["3Do1"] |
if len(t_prog["3Do1"])>0: |
746 |
|
print t_prog["3Do1"] |
747 |
|
else: |
748 |
|
print " pass" |
749 |
print "class Test_assemblage_3Do1_Reduced(unittest.TestCase):" |
print "class Test_assemblage_3Do1_Reduced(unittest.TestCase):" |
750 |
print t_prog["3Do1_reduced"] |
if len(t_prog["3Do1_reduced"])>0: |
751 |
|
print t_prog["3Do1_reduced"] |
752 |
|
else: |
753 |
|
print " pass" |
754 |
print "class Test_assemblage_3Do1_Contact(unittest.TestCase):" |
print "class Test_assemblage_3Do1_Contact(unittest.TestCase):" |
755 |
print t_prog["3Do1_contact"] |
if len(t_prog["3Do1_contact"])>0: |
756 |
|
print t_prog["3Do1_contact"] |
757 |
|
else: |
758 |
|
print " pass" |
759 |
|
|
760 |
print "class Test_assemblage_3Do2(unittest.TestCase):" |
print "class Test_assemblage_3Do2(unittest.TestCase):" |
761 |
print t_prog["3Do2"] |
if len(t_prog["3Do2"])>0: |
762 |
|
print t_prog["3Do2"] |
763 |
|
else: |
764 |
|
print " pass" |
765 |
print "class Test_assemblage_3Do2_Reduced(unittest.TestCase):" |
print "class Test_assemblage_3Do2_Reduced(unittest.TestCase):" |
766 |
print t_prog["3Do2_reduced"] |
if len(t_prog["3Do2_reduced"])>0: |
767 |
|
print t_prog["3Do2_reduced"] |
768 |
|
else: |
769 |
|
print " pass" |
770 |
print "class Test_assemblage_3Do2_contact(unittest.TestCase):" |
print "class Test_assemblage_3Do2_contact(unittest.TestCase):" |
771 |
print t_prog["3Do2_contact"] |
if len(t_prog["3Do2_contact"])>0: |
772 |
|
print t_prog["3Do2_contact"] |
773 |
|
else: |
774 |
|
print " pass" |
775 |
|
|
776 |
print "from esys.escript import *" |
print "from esys.escript import *" |
777 |
print "from esys.finley import *" |
print "from esys.finley import *" |
780 |
print "import unittest" |
print "import unittest" |
781 |
print "NE=2 # number of element sin each spatial direction (must be even)" |
print "NE=2 # number of element sin each spatial direction (must be even)" |
782 |
|
|
783 |
print "class Test_Finley_assemblage_2Do1(Test_assemblage_2Do1):" |
print "class Test_Finley_assemblage_2Do1(Test_assemblage_2Do2_Reduced):" |
784 |
print " RES_TOL=1.e-7" |
print " RES_TOL=1.e-7" |
785 |
print " ABS_TOL=1.e-8" |
print " ABS_TOL=1.e-8" |
786 |
print " def setUp(self):" |
print " def setUp(self):" |
787 |
print " self.domain =Rectangle(NE,NE,1)" |
print " self.domain =Rectangle(NE,NE,2)" |
788 |
print "class Test_Finley_assemblage_2Do1_Contact(Test_assemblage_2Do1_Contact):" |
print "class Test_Finley_assemblage_2Do1_Contact(Test_assemblage_2Do2_Contact):" |
789 |
print " RES_TOL=1.e-7" |
print " RES_TOL=1.e-7" |
790 |
print " ABS_TOL=1.e-8" |
print " ABS_TOL=1.e-8" |
791 |
print " def setUp(self):" |
print " def setUp(self):" |
792 |
print " d1 = Rectangle(n0=int(NE/2),n1=NE,l0=0.5,order=1,useElementsOnFace=True)" |
print " d1 = Rectangle(n0=int(NE/2),n1=NE,l0=0.5,order=2,useElementsOnFace=True)" |
793 |
print " x1 = ContinuousFunction(d1).getX()" |
print " x1 = ContinuousFunction(d1).getX()" |
794 |
print " ContinuousFunction(d1).setTags(1,Scalar(1,ContinuousFunction(d1)))" |
print " ContinuousFunction(d1).setTags(1,Scalar(1,ContinuousFunction(d1)))" |
795 |
print " d2 = Rectangle(n0=int(NE/2),n1=NE,l0=0.5,order=1,useElementsOnFace=True)" |
print " d2 = Rectangle(n0=int(NE/2),n1=NE,l0=0.5,order=2,useElementsOnFace=True)" |
796 |
print " ContinuousFunction(d2).setTags(2,Scalar(1,ContinuousFunction(d2)))" |
print " ContinuousFunction(d2).setTags(2,Scalar(1,ContinuousFunction(d2)))" |
797 |
print " d2.setX(d2.getX()+[0.5,0.])" |
print " d2.setX(d2.getX()+[0.5,0.])" |
798 |
print " self.domain = JoinFaces([d1,d2])" |
print " self.domain = JoinFaces([d1,d2])" |