/[escript]/trunk/finley/test/python/gentest
ViewVC logotype

Diff of /trunk/finley/test/python/gentest

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 773 by gross, Fri Jul 7 10:10:00 2006 UTC revision 1072 by gross, Thu Mar 29 06:44:30 2007 UTC
# Line 315  def makeContactDerivativeText(func,dim,f Line 315  def makeContactDerivativeText(func,dim,f
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:
# Line 325  def makeNormalDerivativeText(func,dim,fu Line 325  def makeNormalDerivativeText(func,dim,fu
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.])"
# Line 351  def makeNormalDerivativeText(func,dim,fu Line 351  def makeNormalDerivativeText(func,dim,fu
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]):
# Line 410  def makeFunctionText(func,dim,func_name, Line 410  def makeFunctionText(func,dim,func_name,
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:
# Line 429  for s in [1,2,3]: Line 434  for s in [1,2,3]:
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)
# Line 439  for s in [1,2,3]: Line 444  for s in [1,2,3]:
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:
# Line 455  for s in [1,2,3]: Line 464  for s in [1,2,3]:
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)
# Line 465  for s in [1,2,3]: Line 474  for s in [1,2,3]:
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)
# Line 492  for s in [1,2,3]: Line 509  for s in [1,2,3]:
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):
# Line 512  for s in [1,2,3]: Line 533  for s in [1,2,3]:
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)
# Line 522  for s in [1,2,3]: Line 543  for s in [1,2,3]:
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:
# Line 543  for s in [1,2,3]: Line 568  for s in [1,2,3]:
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)
# Line 552  for s in [1,2,3]: Line 577  for s in [1,2,3]:
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):
# Line 561  for s in [1,2,3]: Line 586  for s in [1,2,3]:
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)
# Line 569  for s in [1,2,3]: Line 594  for s in [1,2,3]:
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:
# Line 582  for s in [1,2,3]: Line 607  for s in [1,2,3]:
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:
# Line 595  for s in [1,2,3]: Line 620  for s in [1,2,3]:
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)
# Line 603  for s in [1,2,3]: Line 628  for s in [1,2,3]:
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:
# Line 618  for s in [1,2,3]: Line 643  for s in [1,2,3]:
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)
# Line 640  for s in [1,2,3]: Line 665  for s in [1,2,3]:
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:
# Line 654  for s in [1,2,3]: Line 679  for s in [1,2,3]:
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)
# Line 676  for s in [1,2,3]: Line 701  for s in [1,2,3]:
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                 #================================                 #================================
# Line 685  print "import numarray" Line 710  print "import numarray"
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 *"
# Line 720  print "import numarray" Line 780  print "import numarray"
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])"

Legend:
Removed from v.773  
changed lines
  Added in v.1072

  ViewVC Help
Powered by ViewVC 1.1.26