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)
def test_setXError(self): domain=Rectangle(NE,NE) x=domain.getX() z=interpolate(x, Function(domain)) self.assertRaises(ValueError, domain.setX, z) del x del z del domain
def test_setXError(self): domain = Rectangle(NE, NE) x = domain.getX() z = interpolate(x, Function(domain)) self.assertRaises(ValueError, domain.setX, z) del x del z del domain
def setUp(self): self.domain = Rectangle(NE, NE + 1) self.domain_with_different_number_of_samples = Rectangle( 2 * NE, NE + 1) self.domain_with_different_number_of_data_points_per_sample = Rectangle( 2 * NE, NE + 1, integrationOrder=2) self.domain_with_different_sample_ordering = Rectangle(NE, NE + 1, optimize=True) self.filename_base = DUDLEY_WORKDIR
def test_mesh_dump_to_NetCDF_rectangle(self): mydomain1 = Rectangle(n0=NE0, n1=NE1, order=1, l0=1., l1=1., optimize=False) dumpfile = os.path.join(DUDLEY_WORKDIR, "tempfile.mesh.nc") mydomain1.dump(dumpfile) mydomain2 = LoadMesh(dumpfile) self.domainsEqual(mydomain1, mydomain2)
def test_data_dump_to_NetCDF_rectangle(self): mydomain1 = Rectangle(n0=NE0, n1=NE1, order=1, l0=1., l1=1., optimize=False) d1 = Data(mydomain1.getMPIRank(), Function(mydomain1)) d1.expand() dumpfile = os.path.join(DUDLEY_WORKDIR, "tempfile.dump.nc") d1.dump(dumpfile) d2 = load(dumpfile, mydomain1) self.assertTrue(Lsup(abs(d1 - d2)) <= REL_TOL, "data objects differ")
def test_connectivity_info(self): if hasFeature("boostnumpy"): domain = Rectangle(n0=3, n1=4) testvalues = domain.getConnectivityInfo() correctvalues = [[0., 1., 5., 4.], [1., 2., 6., 5.], [2., 3., 7., 6.], [4., 5., 9., 8.], [5., 6., 10., 9.], [6., 7., 11., 10.], [8., 9., 13., 12.], [9., 10., 14., 13.], [10., 11., 15., 14.], [12., 13., 17., 16.], [13., 14., 18., 17.], [14., 15., 19., 18.]] for i in range(0, testvalues.shape[0]): for j in range(0, 4): self.assertEqual(testvalues[i][j], correctvalues[i][j])
def test_Rectangle_optimize_order1(self): mydomain1 = Rectangle(n0=NE0, n1=NE1, order=1, l0=1., l1=1., optimize=False) mydomain2 = Rectangle(n0=NE0, n1=NE1, order=1, l0=1., l1=1., optimize=True) self.domainsEqual(mydomain1, mydomain2)
def setUp(self): self.workdir = DUDLEY_WORKDIR NE0 = NE NE1 = NE + 1 self.domain = Rectangle(NE0, NE1) self.functionspaces = [ContinuousFunction] # number of total data points for each function space self.linecounts = [(NE0 + 1) * (NE1 + 1) + 1] # number of masked points, i.e. where X[0] is non-zero self.linecounts_masked = [NE0 * (NE1 + 1) + 1] # expected values in first line of masked data = [ X[:], X[0] ] self.firstline = [[1. / NE0, 0., 1. / NE0]] if getMPISizeWorld() == 1: self.functionspaces += [ Function, ReducedFunction, FunctionOnBoundary, ReducedFunctionOnBoundary ] self.linecounts += [121, 41, 37, 19] self.linecounts_masked += [116, 41, 27, 14] self.firstline += [[.125, 0., .125], [ .16666666666666667, .0666666666666667, .166666666666667 ], [.05283121635129676, 0., .05283121635129676], [.125, 0., .125]]
def fixme_test_mesh_read_rectangle_from_dudley_file(self): mydomain1 = Rectangle(n0=8, n1=10, order=1, l0=1., l1=1., optimize=False) mydomain2 = ReadMesh( os.path.join(DUDLEY_TEST_MESH_PATH, "rectangle_8x10.fly")) self.domainsEqual(mydomain1, mydomain2)
def test_connectivity_info(self): if hasFeature("boostnumpy"): domain = Rectangle(n0=3, n1=4) testvalues = domain.getConnectivityInfo() if (domain.getDescription() == 'FinleyMesh'): correctvalues = [[0., 1., 5., 4.], [1., 2., 6., 5.], [2., 3., 7., 6.], [4., 5., 9., 8.], [5., 6., 10., 9.], [6., 7., 11., 10.], [8., 9., 13., 12.], [9., 10., 14., 13.], [10., 11., 15., 14.], [12., 13., 17., 16.], [13., 14., 18., 17.], [14., 15., 19., 18.]] jlim = 4 elif (domain.getDescription() == 'DudleyMesh'): correctvalues = [[0., 1., 5.], [0., 5., 4.], [1., 2., 5.], [2., 6., 5.], [2., 3., 7.], [2., 7., 6.], [4., 5., 9.], [4., 9., 8.], [5., 6., 9.], [6., 10., 9.], [6., 7., 11.], [6., 11., 10.], [8., 9., 13.], [8., 13., 12.], [9., 10., 13.], [10., 14., 13.], [10., 11., 15.], [10., 15., 14.], [12., 13., 17.], [12., 17., 16.], [13., 14., 17.], [14., 18., 17.], [14., 15., 19.], [14., 19., 18.]] jlim = 3 else: msg = "Unrecognised domain type %s" % domain.getDescription() self.assertEqual(1, -1, msg) for i in range(0, testvalues.shape[0]): for j in range(0, jlim): self.assertEqual(testvalues[i][j], correctvalues[i][j])
def setUp(self): self.domain = Rectangle(NE0, NE1, optimize=OPTIMIZE) self.package = SolverOptions.TRILINOS self.method = SolverOptions.TFQMR self.preconditioner = SolverOptions.GAUSS_SEIDEL
# dimensions: L0 = 1. L1 = 1. # height of k interface: H = L1 * 0.75 # bottom temperature: T_bot = 100 # location, size and value of heat source xc = [0.3, 0.4] r = 0.1 Qc = 3000 # two values for k k0 = 1 k1 = 10 # create domain: mydomain = Rectangle(l0=L0, l1=L1, n0=20, n1=20) x = mydomain.getX() # set variable k k = k0 + (k1 - k0) * wherePositive(x[1] - H) # boundary temperature T_D = T_bot / L1 * (L1 - x[1]) # heat source Q = Qc * whereNegative(length(x - xc) - r) # create PDE and set coefficients: mypde = LinearPDE(mydomain) mypde.setSymmetryOn() # set PDE coefficients: mypde.setValue(A=k*kronecker(mydomain),Y=Q, r=T_D, \ q=whereZero(x[1])+whereZero(x[1]-L1)) # get temperature: T = mypde.getSolution()
#solver settings dt = 0.001 t_step = 0 t_step_end = 2000 TOL = 1.0e-5 max_iter=400 verbose=True useUzawa=True #define mesh l0=0.9142 l1=1.0 n0=200 n1=200 mesh=Rectangle(l0=l0, l1=l1, order=2, n0=n0, n1=n1) #get mesh dimensions numDim = mesh.getDim() #get element size h = Lsup(mesh.getSize()) #level set parameters tolerance = 1.0e-6 reinit_max = 30 reinit_each = 3 alpha = 1 smooth = alpha*h #boundary conditions x = mesh.getX() #left + bottom + right + top
alpha_w = 1.00 alpha = 1.00*1000000. Pen=0. B=100. nstep = 3000 dt = 1. small = EPSILON w_step=max(int(nstep/50),1)*0+1 toler = 0.001 teta1 = 0.5 teta2 = 0.5 teta3 = 1 # =0 split A; =1 split B # create domain: dom=Rectangle(int(nel*L/min(L,H)),int(nel*H/min(L,H)),order=1, l0=L, l1=H) x=dom.getX() momentumStep1=LinearPDESystem(dom) momentumStep1.setValue(q=whereZero(x[0])*[1.,0.]+whereZero(x[1])*[0.,1.]) # fix x0=0 and x1=0 face_mask=whereZero(FunctionOnBoundary(dom).getX()[1]) pressureStep2=LinearSinglePDE(dom) pressureStep2.setReducedOrderOn() pressureStep2.setValue(q=whereZero(x[0]-L)+whereZero(x[1]-H)) momentumStep3=LinearPDESystem(dom) momentumStep3.setValue(q=whereZero(x[0])*[1.,0.]+whereZero(x[1])*[0.,1.]) # # initial values:
__license__="""Licensed under the Apache License, version 2.0 http://www.apache.org/licenses/LICENSE-2.0""" __url__="https://launchpad.net/escript-finley" import sys # get the tools we want to use from esys.escript import * from esys.weipa import saveVTK try: from esys.dudley import Rectangle # some parameters L0=1. L1=1. T_bot=100 # generate n0 x n1 elements over [0,l0] x [0,l1] mydomain=Rectangle(l0=L0,l1=L1,n0=20,n1=20) # print spatial dimension: print("dimension = ",mydomain.getDim()) # get coordinates of points in domain: x=mydomain.getX() print(x) # set a function T_D=T_bot/L1*(L1-x[1]) # save T_D for visualisation saveVTK("u.vtu",T=T_D) except ImportError: print("Dudley module not available")
def setUp(self): self.domain = Rectangle(NE, NE) self.tol = 0.001
def setUp(self): self.order = 1 self.domain = Rectangle(n0=NE, n1=NE)
def setUp(self): self.domain = Rectangle(l0=1.,l1=1.,n0=10, n1=10)
def setUp(self): self.domain = Rectangle(NE, NE) self.order = 1
a = inf(u_h) b = sup(u_h) * (4 * pi * E * t)**(DIM / 2.) - 1. c = integrate(u_h, Function(dom)) - 1. x0 = getCenter(t) x0h = integrate(x * u_h, Function(dom)) 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:
c=integrate(u_h,Function(dom))-1. x0=getCenter(t) x0h=integrate(x*u_h,Function(dom)) 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.])
#solver settings dt = 0.001 t_step = 0 t_step_end = 2000 TOL = 1.0e-5 max_iter = 400 verbose = True useUzawa = True #define mesh l0 = 0.9142 l1 = 1.0 n0 = 200 n1 = 200 mesh = Rectangle(l0=l0, l1=l1, order=2, n0=n0, n1=n1) #get mesh dimensions numDim = mesh.getDim() #get element size h = Lsup(mesh.getSize()) #level set parameters tolerance = 1.0e-6 reinit_max = 30 reinit_each = 3 alpha = 1 smooth = alpha * h #boundary conditions x = mesh.getX() #left + bottom + right + top
def setUp(self): self.boundary_tag_list = [1, 2, 10, 20] self.domain = Rectangle(NE, NE + 1) self.rdomain = self.domain
def setUp(self): self.domain = Rectangle(NE, NE + 1) self.functionspace = FunctionOnBoundary(self.domain) self.workdir = DUDLEY_WORKDIR
def XXX(dim, tend, dt, s, h, b, c, d, c_dir="x", d_dir="x", a=1., CN=True): """ dim - sparial dimension s - width of initial profile h - mesh size """ v_c = c / a * getDirection(dim, c_dir) v_d = d / a * getDirection(dim, d_dir) v = (v_c + v_d) E = b / a if VERBOSITY: print("=" * 100) print( "XX Start test dim = %d , h=%e, b=%e, c=%e, d=%e, c_dir=%s, d_dir=%s, a=%e, s=%e" % (dim, h, b, c, d, c_dir, d_dir, a, s)) print("=" * 100) print("initial width s = ", s) print("diffusion = ", E) print("total velocity = ", v) print("tend = ", tend) print("tolerance = ", TOL) print("number of elements over s =", s / h) b0 = sqrt(-log(TAU) * 4 * (s**2 + E * tend)) b1 = sqrt(-log(TAU)) * 2 * s X0_0 = max(b1, -v[0] * tend + b0) X0_1 = max(b1, -v[1] * tend + b0) l_0 = X0_0 + max(v[0] * tend + b0, b1) l_1 = X0_1 + max(v[1] * tend + b0, b1) NE_0 = max(int(l_0 / h + 0.5), 1) NE_1 = max(int(l_1 / h + 0.5), 1) if dim == 2: if VERBOSITY: print("%d x %d grid over %e x %e with element size %e." % (NE_0, NE_1, l_0, l_1, h)) if NE_0 * NE_1 > NE_MAX: raise ValueError("too many elements %s." % (NE_0 * NE_1, )) dom = Rectangle(n0=NE_0, n1=NE_1, l0=l_0, l1=l_1) x0 = [X0_0, X0_1] else: X0_2 = max(b1, -v[2] * tend + b0) l_2 = X0_2 + max(v[2] * tend + b0, b1) NE_2 = max(int(l_2 / h + 0.5), 1) if VERBOSITY: print( "%d x %d x %d grid over %e x %e x %e with element size %e." % (NE_0, NE_1, NE_2, l_0, l_1, l_2, h)) if NE_0 * NE_1 * NE_2 > NE_MAX: raise ValueError("too many elements %s." % (NE_0 * NE_1 * NE_2, )) dom = Brick(n0=NE_0, n1=NE_1, ne2=NE_2, l0=l_0, l1=l_1, l2=l_2) x0 = [X0_0, X0_1, X0_2] if VERBOSITY: print("initial location = ", x0) print("XX", interpolate(uRef(dom, 0., E, s, v, x0), FunctionOnBoundary(dom))) fc_BE = TransportPDE(dom, numEquations=1, useBackwardEuler=True) fc_BE.setValue(M=a, A=-b * kronecker(dom), B=-v_d * a, C=-v_c * a) fc_BE.getSolverOptions().setVerbosity(VERBOSITY) fc_BE.getSolverOptions().setTolerance(TOL) # fc_BE.getSolverOptions().setPreconditioner( fc_BE.getSolverOptions().GAUSS_SEIDEL) fc_BE.getSolverOptions().setNumSweeps(5) if VERBOSITY: print("Backward Euler Transport created") fc_CN = TransportPDE(dom, numEquations=1, useBackwardEuler=False) fc_CN.setValue(M=a, A=-b * kronecker(dom), B=-v_d * a, C=-v_c * a) fc_CN.getSolverOptions().setVerbosity(VERBOSITY) fc_CN.getSolverOptions().setTolerance(TOL) #fc_CN.getSolverOptions().setPreconditioner(fc_CN.getSolverOptions().GAUSS_SEIDEL) fc_CN.getSolverOptions().setNumSweeps(2) if VERBOSITY: print("Crank Nicolson Transport created") dt_CN = fc_CN.getSafeTimeStepSize() if VERBOSITY: print("time step size by Crank Nicolson=", dt_CN) U0 = uRef(dom, 0, E, s, v, x0) U0_e = uRef(dom, 0, E, s, v, x0, True) fc_CN.setInitialSolution(U0) fc_BE.setInitialSolution(U0) initial_error_L2 = sqrt(integrate((U0 - U0_e)**2)) if VERBOSITY: print("initial Lsup = ", Lsup(U0), Lsup(U0_e)) print("initial integral = ", integrate(U0_e)) print("initial error = ", initial_error_L2) print("used time step size =", dt) if not CN: n = int(ceil(tend / dt)) if VERBOSITY: print("Solve Backward Euler:") print("substeps : ", n) t0 = clock() for i in range(n): u = fc_BE.getSolution(dt) t0 = clock() - t0 else: if VERBOSITY: print("Solve Crank Nicolson:") dt = dt_CN t0 = clock() u = fc_CN.getSolution(tend) t0 = clock() - t0 out = QUALITY(u, uRef(dom, tend, E, s, v, x0, True)) print("XX", interpolate(uRef(dom, tend, E, s, v, x0), FunctionOnBoundary(dom))) out['time'] = t0 out['tend'] = tend out['dt'] = dt out['dx'] = h if abs(b) > 0: out["peclet"] = length(v) * s / b else: out["peclet"] = 9999999. # saveVTK("bb.vtu",u0=U0,u_CN=u_CN, uRef=uRef(dom,dt2,E,s,v,X0) ) return out
t=dataMgr.getValue('t') t_vis=dataMgr.getValue('t_vis') n=dataMgr.getValue('n') dt=dataMgr.getValue('dt') stress=dataMgr.getValue('stress') v=dataMgr.getValue('v') p=dataMgr.getValue('p') T=dataMgr.getValue('T') if CREATE_TOPO: topography=dataMgr.getValue('topography') #diagnostics_file=FileWriter(DIAGNOSTICS_FN,append=True) print(("<%s> Restart at time step %d (t=%e) completed."%(time.asctime(),n,t))) else: if DIM==2: dom=Rectangle(int(ceil(L*NE/H)),NE,l0=L/H,l1=1,order=-1,optimize=True) else: dom=Brick(int(ceil(L*NE/H)),int(ceil(L*NE/H)),NE,l0=L/H,l1=L/H,l2=1,order=-1,optimize=True) x=dom.getX() T=Scalar(1,Solution(dom)) for d in range(DIM): if d == DIM-1: T*=sin(x[d]/H*pi) else: T*=cos(x[d]/L*pi) T=(1.-x[DIM-1])+PERT*T v=Vector(0,Solution(dom)) stress=Tensor(0,Function(dom)) x2=ReducedSolution(dom).getX() p=Ra*(x2[DIM-1]-0.5*x2[DIM-1]**2-0.5)
from math import pi, ceil NE=128 NE=4 DIM=2 THETA=0.5 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])
from esys.dudley import Rectangle, Brick from math import pi, ceil NE = 128 NE = 4 DIM = 2 THETA = 0.5 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])
print("Dudley module not available") else: # end of simulation time t_end=0.1 # time step size: dt=0.01 # dimensions: L0=1.;L1=1. # location, size and value of heat source xc=[0.3,0.4]; r=0.1; Qc=3000 # material parameter k=1; rhocp=100; # bottom temperature: T_bot=100 # generate domain: mydomain=Rectangle(l0=L0,l1=L1,n0=20,n1=20) x=mydomain.getX() # set boundray temperature: T_D=T_bot/L1*(L1-x[1]) # set heat source: Q=Qc*whereNegative(length(x-xc)-r) # generate domain: mypde=LinearPDE(mydomain) mypde.setSymmetryOn() # set PDE coefficients: mypde.setValue(A=dt*k*kronecker(mydomain), D=dt*rhocp, r=T_D, q=whereZero(x[1])+whereZero(x[1]-L1)) # initial temperature T=T_D # step counter and time marker: N=0; t=0
def setUp(self): self.domain = Rectangle(NE, NE + 1) self.functionspace = FunctionOnBoundary( self.domain ) # due to a bug in escript python needs to hold a reference to the domain self.workdir = DUDLEY_WORKDIR
def getMesh(NE_X, NE_Y, t, d, o, fullOrder, r, l_X): if t == "Hex": if d == 2: dom = Rectangle(n0=NE_X, n1=NE_Y, l0=l_X, order=o, useFullElementOrder=fullOrder, useElementsOnFace=r, optimize=True) else: Brick() dom = Brick(n0=NE_X, n1=NE_Y, n2=NE_Y, l0=l_X, order=o, useFullElementOrder=fullOrder, useElementsOnFace=r, optimize=True) else: des = Design(dim=d, order=o, element_size=min(l_X / max(3, NE_X), 1. / max(3, NE_Y)), keep_files=True) des.setScriptFileName("tester.geo") if d == 2: p0 = Point(0., 0.) p1 = Point(l_X, 0.) p2 = Point(l_X, 1.) p3 = Point(0., 1.) l01 = Line(p0, p1) l12 = Line(p1, p2) l23 = Line(p2, p3) l30 = Line(p3, p0) s = PlaneSurface(CurveLoop(l01, l12, l23, l30)) des.addItems(s, l01, l12, l23, l30) else: p000 = Point(0., 0., 0.) p100 = Point(l_X, 0., 0.) p010 = Point(0., 1., 0.) p110 = Point(l_X, 1., 0.) p001 = Point(0., 0., 1.) p101 = Point(l_X, 0., 1.) p011 = Point(0., 1., 1.) p111 = Point(l_X, 1., 1.) l10 = Line(p000, p100) l20 = Line(p100, p110) l30 = Line(p110, p010) l40 = Line(p010, p000) l11 = Line(p000, p001) l21 = Line(p100, p101) l31 = Line(p110, p111) l41 = Line(p010, p011) l12 = Line(p001, p101) l22 = Line(p101, p111) l32 = Line(p111, p011) l42 = Line(p011, p001) bottom = PlaneSurface(-CurveLoop(l10, l20, l30, l40)) top = PlaneSurface(CurveLoop(l12, l22, l32, l42)) front = PlaneSurface(CurveLoop(l10, l21, -l12, -l11)) back = PlaneSurface(CurveLoop(l30, l41, -l32, -l31)) left = PlaneSurface(CurveLoop(l11, -l42, -l41, l40)) right = PlaneSurface(CurveLoop(-l21, l20, l31, -l22)) vol = Volume(SurfaceLoop(bottom, top, front, back, left, right)) des.addItems(vol) dom = MakeDomain(des) return dom
def setUp(self): self.domain = Rectangle(NE, NE + 1)
def setUp(self): self.domain = Rectangle(NE, NE + 1) self.mainfs = Function(self.domain) self.otherfs = Solution(self.domain)
def setUp(self): self.domain = Rectangle(NE0, NE1, optimize=OPTIMIZE) self.package = SolverOptions.MKL self.method = SolverOptions.DIRECT
def setUp(self): self.domain = Rectangle(NE0, NE1, optimize=OPTIMIZE) self.package = SolverOptions.TRILINOS self.method = SolverOptions.PCG self.preconditioner = SolverOptions.JACOBI