# 3. Allocate an object of the Stokes class stokes_problem = Stokes(V, subdomains=subdomains, boundaries=boundaries) mu_range = [(0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0., pi / 6.)] stokes_problem.set_mu_range(mu_range) # 4. Prepare reduction with a POD-Galerkin method reduced_basis_method = ReducedBasis(stokes_problem) reduced_basis_method.set_Nmax(25) reduced_basis_method.set_tolerance(1e-6) # 5. Perform the offline phase first_mu = (0.5, 0.5, 0.5, 0.5, 0.5, 0.) stokes_problem.set_mu(first_mu) reduced_basis_method.initialize_training_set( 100, sampling=LinearlyDependentUniformDistribution()) reduced_stokes_problem = reduced_basis_method.offline() # 6. Perform an online solve online_mu = (1.0, 1.0, 1.0, 1.0, 1.0, pi / 6.) reduced_stokes_problem.set_mu(online_mu) reduced_stokes_problem.solve() reduced_stokes_problem.export_solution(filename="online_solution") # 7. Perform an error analysis reduced_basis_method.initialize_testing_set( 100, sampling=LinearlyDependentUniformDistribution()) reduced_basis_method.error_analysis() # 8. Perform a speedup analysis reduced_basis_method.speedup_analysis()
(0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0., pi/6.) ] stokes_problem.set_mu_range(mu_range) # 4. Prepare reduction with a POD-Galerkin method pod_galerkin_method = PODGalerkin(stokes_problem) pod_galerkin_method.set_Nmax(25) pod_galerkin_method.set_tolerance(1e-6) # 5. Perform the offline phase pod_galerkin_method.initialize_training_set(100, sampling=LinearlyDependentUniformDistribution()) reduced_stokes_problem = pod_galerkin_method.offline() # 6. Perform an online solve online_mu = (1.0, 1.0, 1.0, 1.0, 1.0, pi/6.) reduced_stokes_problem.set_mu(online_mu) reduced_stokes_problem.solve() reduced_stokes_problem.export_solution(filename="online_solution") # 7. Perform an error analysis pod_galerkin_method.initialize_testing_set(100, sampling=LinearlyDependentUniformDistribution()) pod_galerkin_method.error_analysis() # 8. Perform a speedup analysis pod_galerkin_method.speedup_analysis()
(0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0., pi/6.) ] stokes_problem.set_mu_range(mu_range) # 4. Prepare reduction with a POD-Galerkin method reduced_basis_method = ReducedBasis(stokes_problem) reduced_basis_method.set_Nmax(25) reduced_basis_method.set_tolerance(1e-6) # 5. Perform the offline phase lifting_mu = (1.0, 1.0, 1.0, 1.0, 1.0, 0.0) stokes_problem.set_mu(lifting_mu) reduced_basis_method.initialize_training_set(100, sampling=LinearlyDependentUniformDistribution()) reduced_stokes_problem = reduced_basis_method.offline() # 6. Perform an online solve online_mu = (1.0, 1.0, 1.0, 1.0, 1.0, pi/6.) reduced_stokes_problem.set_mu(online_mu) reduced_stokes_problem.solve() reduced_stokes_problem.export_solution(filename="online_solution") # 7. Perform an error analysis reduced_basis_method.initialize_testing_set(100, sampling=LinearlyDependentUniformDistribution()) reduced_basis_method.error_analysis() # 8. Perform a speedup analysis reduced_basis_method.speedup_analysis()
mu_range = [ (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0., pi/6.) ] stokes_problem.set_mu_range(mu_range) # 4a. Prepare reduction with a POD-Galerkin method stokes_pod_galerkin_method = PODGalerkin(stokes_problem) stokes_pod_galerkin_method.set_Nmax(25) # 5a. Perform the offline phase stokes_pod_galerkin_method.initialize_training_set(100, sampling=LinearlyDependentUniformDistribution()) reduced_stokes_problem = stokes_pod_galerkin_method.offline() # 6a. Perform an online solve online_mu = (1.0, 1.0, 1.0, 1.0, 1.0, pi/6.) reduced_stokes_problem.set_mu(online_mu) reduced_stokes_problem.solve() reduced_stokes_problem.export_solution(filename="online_solution") # 2b. Create Finite Element space for advection diffusion problem element_c = FiniteElement("Lagrange", mesh.ufl_cell(), 1) C = FunctionSpace(mesh, element_c) # 3b. Allocate an object of the AdvectionDiffusionProblem class advection_diffusion_problem = AdvectionDiffusion(C, subdomains=subdomains, boundaries=boundaries, stokes_problem=stokes_problem) advection_diffusion_problem.set_mu_range(mu_range)
mu_range = [ (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0.5, 1.5), (0., pi / 6.) ] stokes_problem.set_mu_range(mu_range) # 4a. Prepare reduction with a POD-Galerkin method stokes_reduction_method = PODGalerkin(stokes_problem) stokes_reduction_method.set_Nmax(25) # 5a. Perform the offline phase stokes_reduction_method.initialize_training_set(100, sampling=LinearlyDependentUniformDistribution()) stokes_reduced_problem = stokes_reduction_method.offline() # 6a. Perform an online solve online_mu = (1.0, 1.0, 1.0, 1.0, 1.0, pi / 6.) stokes_reduced_problem.set_mu(online_mu) stokes_reduced_problem.solve() stokes_reduced_problem.export_solution(filename="online_solution") # 2b. Create Finite Element space for advection diffusion problem element_c = FiniteElement("Lagrange", mesh.ufl_cell(), 1) C = FunctionSpace(mesh, element_c) # 3b. Allocate an object of the AdvectionDiffusionProblem class advection_diffusion_problem = AdvectionDiffusion( C, subdomains=subdomains, boundaries=boundaries, stokes_problem=stokes_problem)