def test_hex_contact_2D_order2_onFace(self): file="hex_contact_2D_order2_onFace.msh" ms1=Rectangle(1,1,2,l1=0.5,useElementsOnFace=True) ms2=Rectangle(1,1,2,l1=0.5,useElementsOnFace=True) ms2.setX(ms2.getX()+[0,0.5]) my_dom=JoinFaces([ms1,ms2],optimize=False) self.checker(my_dom,file)
# p+=dp U=U_new print("U:",inf(U),sup(U)) print("P:",inf(p),sup(p)) p_pos=clip(p,small) gg=grad(U) vol=gg[0,0]+gg[1,1]+U[0]/r gamma=sqrt(2*((gg[0,0]-vol/3)**2+(gg[1,1]-vol/3)**2+(U[0]/r-vol/3)**2+(gg[1,0]+gg[0,1])**2/2)) m=whereNegative(eta*gamma-alpha*p_pos) eta_d=m*eta+(1.-m)*alpha*p_pos/(gamma+small) print("viscosity =",inf(eta_d),sup(eta_d)) dev_stress=eta_d*(symmetric(gg)-2./3.*vol*kronecker(dom)) # # step size control: # len=inf(dom.getSize()) dt1=inf(dom.getSize()/(length(U)+small)) dt2=inf(0.5*ro*(len**2)/eta_d) dt=dt1*dt2/(dt1+dt2) print("new step size = ",dt) # # update geometry # dom.setX(dom.getX()+U*dt) t=t+dt if (istep-1)%w_step==0:saveVTK("u.%d.vtu"%((istep-1)/w_step),p=p,eta=eta_d,U=U_star,U_star=U_star,gamma=gamma) if istep == 3: 1/0
OMEGA0 = 1. ALPHA = pi / 4 T0 = 0 T_END = 2. * pi dt = 1e-3 * 10 * 10 E = 1.e-3 TEST_SUPG = False or True if DIM == 2: dom = Rectangle(NE, NE) else: dom = Brick(NE, NE, NE) u0 = dom.getX()[0] # saveVTK("u.%s.vtu"%0,u=u0) # print "XX"*80 dom.setX(2 * dom.getX() - 1) # set initial value x = dom.getX() r = sqrt(x[0]**2 + (x[1] - 1. / 3.)**2) # u0=whereNegative(r-1./3.)*wherePositive(wherePositive(abs(x[0])-0.05)+wherePositive(x[1]-0.5)) x = Function(dom).getX() if DIM == 2: V = OMEGA0 * (x[0] * [0, -1] + x[1] * [1, 0]) else: V = OMEGA0 * (x[0] * [0, cos(ALPHA), 0] + x[1] * [-cos(ALPHA), 0, sin(ALPHA)] + x[2] * [0., -sin(ALPHA), 0.]) #=================== fc = TransportPDE(dom, num_equations=1, theta=THETA) x = Function(dom).getX()
d=length(x0-x0h) sigma_h2=sqrt(integrate(length(x-x0h)**2 * u_h, Function(dom))) if DIM == 3: sigma_h2*=sqrt(2./3.) e=sigma_h2/sqrt(4*E*t)-1 # return a,b,c,e,1./(4*pi*E*t)**(DIM/2.) return d,e # return a,b,c,d,e if DIM==2: dom=Rectangle(NE,NE) else: dom=Brick(NE,NE,NE) dom.setX(2*dom.getX()-1) # set initial value x=dom.getX() u0=1/(4.*pi*E*T0)**(DIM/2.)*exp(-length(dom.getX()-getCenter(T0))**2/(4.*E*T0)) print("QUALITY ",QUALITY(T0,u0)) x=Function(dom).getX() if DIM == 2: V=OMEGA0*(x[0]*[0,-1]+x[1]*[1,0]) else: V=OMEGA0*(x[0]*[0,cos(ALPHA),0]+x[1]*[-cos(ALPHA),0,sin(ALPHA)]+x[2]*[0.,-sin(ALPHA),0.]) #=================== fc=TransportPDE(dom,num_equations=1,theta=THETA) x=Function(dom).getX()