def initialise_function_spaces(self): # define function spaces self.Q = FunctionSpace(self.mesh, self.disc[0], 1) self.H = FunctionSpace(self.mesh, self.disc[1], 1) self.PHI = FunctionSpace(self.mesh, self.disc[2], 1) self.PHI_D = FunctionSpace(self.mesh, self.disc[3], 1) self.R = FunctionSpace(self.mesh, 'R', 0) self.W = MixedFunctionSpace([self.Q, self.H, self.PHI, self.PHI_D]) self.WB = MixedFunctionSpace([self.R, self.R, self.R, self.R]) # generate dof_map sw_io.generate_dof_map(self) # define test functions (self.q_tf, self.h_tf, self.phi_tf, self.phi_d_tf) = \ TestFunctions(self.W) self.v = TestFunction(self.W) self.r_v = TestFunction(self.R) # initialise functions self.w = dict() self.w[0] = Function(self.W, name='U') self.wb_0 = Function(self.WB, name='WB0') self.wb_1 = Function(self.WB, name='WB1')
def initialise_function_spaces(self): # define geometry self.mesh = IntervalMesh(int(self.L_/self.dX_), 0.0, self.L_) self.n = FacetNormal(self.mesh)[0] self.dX = Constant(self.dX_) self.L = Constant(self.L_) # left boundary marked as 0, right as 1 class LeftBoundary(SubDomain): def inside(self, x, on_boundary): return x[0] < 0.5 + DOLFIN_EPS and on_boundary left_boundary = LeftBoundary() exterior_facet_domains = FacetFunction("uint", self.mesh) exterior_facet_domains.set_all(1) left_boundary.mark(exterior_facet_domains, 0) self.ds = Measure("ds")[exterior_facet_domains] # define function spaces self.q_FS = FunctionSpace(self.mesh, self.q_disc, self.q_degree) self.h_FS = FunctionSpace(self.mesh, self.h_disc, self.h_degree) self.phi_FS = FunctionSpace(self.mesh, self.phi_disc, self.phi_degree) self.phi_d_FS = FunctionSpace(self.mesh, self.phi_d_disc, self.phi_d_degree) self.cg_FS = FunctionSpace(self.mesh, "CG", 1) self.var_N_FS = FunctionSpace(self.mesh, "R", 0) self.W = MixedFunctionSpace([self.q_FS, self.cg_FS, self.h_FS, self.cg_FS, self.phi_FS, self.cg_FS, self.phi_d_FS, self.var_N_FS, self.var_N_FS]) self.X_FS = FunctionSpace(self.mesh, "CG", 1) # generate dof_map sw_io.generate_dof_map(self) # define test functions (self.q_tf, self.q_cg_tf, self.h_tf, self.h_cg_tf, self.phi_tf, self.phi_cg_tf, self.phi_d_tf, self.x_N_tf, self.u_N_tf) = TestFunctions(self.W) # initialise functions X_ = project(Expression('x[0]'), self.X_FS) self.X = Function(X_, name='X') self.w = dict() self.w[0] = Function(self.W, name='U')