def velocity_x(x, y): if experiment == 1: val = x * x * (1. - x)**2 * (2. * y - 6. * y * y + 4 * y * y * y) if experiment == 2: val = 0. if experiment == 3: val = 0. if experiment == 4: val = 0 if experiment == 5: val, xxx, xxxx = solkz.SolKzSolution(x, y) if experiment == 6: val = 0 if experiment == 7: val = (2 * y - 1) * x * (1 - x) if experiment == 8: val = 0 if experiment == 9: val = x + x**2 - 2 * x * y + x**3 - 3 * x * y**2 + x**2 * y if experiment == 10: val = 0 if experiment == 11: val = 0 if experiment == 12: val = 0 if experiment == 13: val, xxx, xxx = solcx.SolCxSolution(x, y) if experiment == 14: val, xxx, xxx = solvi.solution(x, y) return val
def velocity_y(x, y): if experiment == 1: val = -y * y * (1. - y)**2 * (2. * x - 6. * x * x + 4 * x * x * x) if experiment == 2: val = 0. if experiment == 3: val = 0. if experiment == 4: val = 0 if experiment == 5: xxx, val, xxxx = solkz.SolKzSolution(x, y) if experiment == 6: val = 0 if experiment == 7: val = -(2 * x - 1) * y * (1 - y) if experiment == 8: val = 0 if experiment == 9: val = -y - 2 * x * y + y**2 - 3 * x**2 * y + y**3 - x * y**2 if experiment == 10: val = 0 if experiment == 11: val = 0 if experiment == 12: val = 0 if experiment == 13: xxx, val, xxx = solcx.SolCxSolution(x, y) if experiment == 14: xxx, val, xxx = solvi.solution(x, y) return val
def pressure(x, y): if experiment == 1: val = x * (1. - x) - 1. / 6. if experiment == 2: val = 0. if experiment == 3: val = 0. if experiment == 4: val = 0.5 - y if experiment == 5: xxx, xxxx, val = solkz.SolKzSolution(x, y) if experiment == 6: val = 0 if experiment == 7: val = 2 * x * (1 - 2 * y) if experiment == 8: val = -32000 * (y - Ly / 2) if experiment == 9: val = x * y + x + y + x**3 * y**2 - 4. / 3. if experiment == 10: val = 0 if experiment == 11: val = 0 if experiment == 12: val = 0 if experiment == 13: xxx, xxx, val = solcx.SolCxSolution(x, y) if experiment == 14: xxx, xxx, val = solvi.solution(x, y) return val
def velocity_y(x, y): if experiment == 1: val = -y * y * (1. - y)**2 * (2. * x - 6. * x * x + 4 * x * x * x) if experiment == 2: ui, val, pi = solkz.SolKzSolution(x, y) if experiment == 3: ui, val, pi = solcx.SolCxSolution(x, y) return val
def velocity_x(x, y): if experiment == 1: val = x * x * (1. - x)**2 * (2. * y - 6. * y * y + 4 * y * y * y) if experiment == 2: val, vi, pi = solkz.SolKzSolution(x, y) if experiment == 3: val, vi, pi = solcx.SolCxSolution(x, y) return val
def pressure(x, y): if experiment == 1: val = x * (1. - x) - 1. / 6. if experiment == 2: ui, vi, val = solkz.SolKzSolution(x, y) if experiment == 3: ui, vi, val = solcx.SolCxSolution(x, y) return val
def pressure(x, y): val = 0 if benchmark == 1: val = x * (1. - x) - 1. / 6. if benchmark == 4: val = x * y + x + y + x**3 * y**2 - 4 / 3 if benchmark == 5: val = 0 if benchmark == 6: ui, vi, val = solvi.solution(x, y) if benchmark == 7: ui, vi, val = solcx.SolCxSolution(x, y) return val
def velocity_y(x, y): if bench == 1: return c(x) * d(y) if bench == 4: ui, vi, pi = solcx.SolCxSolution(x, y) return vi if bench == 5: ui, vi, pi = solkz.SolKzSolution(x, y) return vi if bench == 6: ui, vi, pi = solvi.solution(x, y) return vi if bench == 9: return -y - 2 * x * y + y**2 - 3 * x**2 * y + y**3 - x * y**2
def velocity_x(x, y): if bench == 1: return a(x) * b(y) if bench == 4: ui, vi, pi = solcx.SolCxSolution(x, y) return ui if bench == 5: ui, vi, pi = solkz.SolKzSolution(x, y) return ui if bench == 6: ui, vi, pi = solvi.solution(x, y) return ui if bench == 9: return x + x**2 - 2 * x * y + x**3 - 3 * x * y**2 + x**2 * y
def velocity_x(x,y,case): if case==1: val=x*x*(1.-x)**2*(2.*y-6.*y*y+4*y*y*y) if case==2: val=x + x**2 - 2*x*y + x**3 -3*x*y**2 + x**2*y if case==3: val=0. if case==4: ui,vi,pi=solcx.SolCxSolution(x,y) val=ui if case==5: ui,vi,pi=solvi.solution(x,y) val=ui return val
def pressure(x,y,case): if case==1: val=x*(1.-x)-1./6. if case==2: val = x*y+x+y+x**3*y**2 -4./3. if case==3: val=0. if case==4: ui,vi,pi=solcx.SolCxSolution(x,y) val=pi if case==5: ui,vi,pi=solvi.solution(x,y) val=pi return val
def velocity_y(x,y,case): if case==1: val=-y*y*(1.-y)**2*(2.*x-6.*x*x+4*x*x*x) if case==2: val = -y - 2*x*y +y**2 - 3*x**2*y + y**3 -x*y**2 if case==3: val=0. if case==4: ui,vi,pi=solcx.SolCxSolution(x,y) val=vi if case==5: ui,vi,pi=solvi.solution(x,y) val=vi return val
def pressure(x, y): if bench == 1: return x * (1 - x) * (1 - 2 * y) if bench == 4: ui, vi, pi = solcx.SolCxSolution(x, y) return pi if bench == 5: ui, vi, pi = solkz.SolKzSolution(x, y) return pi if bench == 6: ui, vi, pi = solvi.solution(x, y) return pi if bench == 9: return x * y + x + y + x**3 * y**2 - 4 / 3
def pressure(x, y, experiment): if experiment == 1: val = x * (1. - x) - 1. / 6. if experiment == 2: val = 0 if experiment == 3: val = x * y + x + y + x**3 * y**2 - 4. / 3. if experiment == 4: val = 10 * ((x - 1. / 2.)**3 * y**2 + (1 - x)**3 * (y - 1. / 2.)**3) if experiment == 5: val = 1. - 2 * x if experiment == 6: u, v, p = solcx.SolCxSolution(x, y) val = p return val
def velocity_x(x, y, experiment): if experiment == 1: val = x * x * (1. - x)**2 * (2. * y - 6. * y * y + 4 * y * y * y) if experiment == 2: val = 0 if experiment == 3: val = x + x**2 - 2 * x * y + x**3 - 3 * x * y**2 + x**2 * y if experiment == 4: val = 200 * x**2 * (1 - x)**2 * y * (1 - y) * (1 - 2 * y) if experiment == 5: val = y * (1. - y) if experiment == 6: u, v, p = solcx.SolCxSolution(x, y) val = u return val
def velocity_y(x, y, experiment): if experiment == 1: val = -y * y * (1. - y)**2 * (2. * x - 6. * x * x + 4 * x * x * x) if experiment == 2: val = 0 if experiment == 3: val = -y - 2 * x * y + y**2 - 3 * x**2 * y + y**3 - x * y**2 if experiment == 4: val = -200 * x * (1 - x) * (1 - 2 * x) * y**2 * (1 - y)**2 if experiment == 5: val = 0. if experiment == 6: u, v, p = solcx.SolCxSolution(x, y) val = v return val
def velocity_y(x, y): val = 0 if benchmark == 1: val = -y * y * (1. - y)**2 * (2. * x - 6. * x * x + 4 * x * x * x) if benchmark == 4: val = -y - 2 * x * y + y**2 - 3 * x**2 * y + y**3 - x * y**2 if benchmark == 5: val = 0 if benchmark == 6: ui, val, pi = solvi.solution(x, y) if benchmark == 7: ui, val, pi = solcx.SolCxSolution(x, y) if benchmark == 9: val = 0 return val
def velocity_x(x, y): val = 0 if benchmark == 1: val = x * x * (1. - x)**2 * (2. * y - 6. * y * y + 4 * y * y * y) if benchmark == 4: val = x + x**2 - 2 * x * y + x**3 - 3 * x * y**2 + x**2 * y if benchmark == 5: val = 0 if benchmark == 6: val, vi, pi = solvi.solution(x, y) if benchmark == 7: val, vi, pi = solcx.SolCxSolution(x, y) if benchmark == 9 and y > 0.5: val = 16 * x**2 * (1 - x)**2 return val
################################################################# #p[:]-=np.sum(p)/nel #print("p (m,M) %.4f %.4f " %(np.min(p),np.max(p))) ################################################################# # compute error ################################################################# error_u = np.empty(nnp, dtype=np.float64) error_v = np.empty(nnp, dtype=np.float64) error_p = np.empty(nel, dtype=np.float64) for i in range(0, nnp): ui, vi, pi = solcx.SolCxSolution(x[i], y[i]) error_u[i] = u[i] - ui error_v[i] = v[i] - vi #end for for i in range(0, nel): ui, vi, pi = solcx.SolCxSolution(xc[i], yc[i]) error_p[i] = p[i] - pi #end for #np.savetxt('error_pressure.ascii',np.array([xc,yc,error_p]).T,header='# xc,yc,p') errv = 0. errp = 0. for iel in range(0, nel): for iq in [-1, 1]:
icon[4, counter] = (i) * 2 + 2 + (j) * 2 * nnx - 1 icon[5, counter] = (i) * 2 + 3 + (j) * 2 * nnx + nnx - 1 icon[6, counter] = (i) * 2 + 2 + (j) * 2 * nnx + nnx * 2 - 1 icon[7, counter] = (i) * 2 + 1 + (j) * 2 * nnx + nnx - 1 icon[8, counter] = (i) * 2 + 2 + (j) * 2 * nnx + nnx - 1 counter += 1 ################################################################# # assign nodal field values ################################################################# u = np.empty(nnp, dtype=np.float64) v = np.empty(nnp, dtype=np.float64) p = np.empty(nnp, dtype=np.float64) for i in range(0, nnp): u[i], v[i], p[i] = solcx.SolCxSolution(x[i], y[i]) ################################################################# dt = CFL_nb * min(Lx / nelx, Ly / nely) / np.max(np.sqrt(u**2 + v**2)) print(' -> dt= %.3e ' % dt) ################################################################# # marker setup ################################################################# start = time.time() nmarker_per_element = nmarker_per_dim**2 nmarker = nel * nmarker_per_element