def __init__(self, mesh_file, inflow_direction, finite_element=finite_elements.p2p1): super(SteadyConfiguration, self).__init__(finite_element=finite_element) # Model settings self.set_domain(GMeshDomain(mesh_file), warning=False) self.params['steady_state'] = True self.params['initial_condition'] = ConstantFlowInitialCondition(self) self.params['include_advection'] = True self.params['include_diffusion'] = True self.params['linear_divergence'] = False self.params['diffusion_coef'] = 3.0 self.params['quadratic_friction'] = True self.params['newton_solver'] = True self.params['friction'] = Constant(0.0025) self.params['theta'] = 1.0 # Boundary conditions bc = DirichletBCSet(self) bc.add_constant_flow(1, 2.0 + 1e-10, direction=inflow_direction) bc.add_analytic_eta(2, 0.0) self.params['bctype'] = 'strong_dirichlet' self.params['strong_bc'] = bc self.params['free_slip_on_sides'] = True # Optimisation settings self.params['functional_final_time_only'] = True self.params['automatic_scaling'] = True # Turbine settings self.params['turbine_pos'] = [] self.params['turbine_friction'] = [] self.params['turbine_x'] = 20. self.params['turbine_y'] = 20. self.params['controls'] = ['turbine_pos'] # Finally set some DOLFIN optimisation flags dolfin.parameters['form_compiler']['cpp_optimize'] = True dolfin.parameters['form_compiler']['cpp_optimize_flags'] = '-O3' dolfin.parameters['form_compiler']['optimize'] = True