Exemple #1
0
    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')
Exemple #2
0
    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')