From a93580fbd306f4a0f33a9ec4b015b45155638cfb Mon Sep 17 00:00:00 2001 From: kronbichler Date: Wed, 10 Sep 2008 16:54:52 +0000 Subject: [PATCH] A few updates. git-svn-id: https://svn.dealii.org/trunk@16797 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/examples/step-32/step-32.cc | 87 +++++++++++++++++------------ 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/deal.II/examples/step-32/step-32.cc b/deal.II/examples/step-32/step-32.cc index 01fbca07d0..b4ca72e2a4 100644 --- a/deal.II/examples/step-32/step-32.cc +++ b/deal.II/examples/step-32/step-32.cc @@ -421,6 +421,8 @@ double BoussinesqFlowProblem::get_maximal_velocity () const const QGauss quadrature_formula(stokes_degree+2); const unsigned int n_q_points = quadrature_formula.size(); + BlockVector stokes_vector (stokes_solution); + FEValues fe_values (stokes_fe, quadrature_formula, update_values); std::vector > stokes_values(n_q_points, Vector(dim+1)); @@ -430,19 +432,20 @@ double BoussinesqFlowProblem::get_maximal_velocity () const cell = stokes_dof_handler.begin_active(), endc = stokes_dof_handler.end(); for (; cell!=endc; ++cell) - { - fe_values.reinit (cell); - fe_values.get_function_values (stokes_solution, stokes_values); + if (cell->subdomain_id() == (unsigned int)trilinos_communicator.MyPID()) + { + fe_values.reinit (cell); + fe_values.get_function_values (stokes_vector, stokes_values); - for (unsigned int q=0; q velocity; - for (unsigned int i=0; i velocity; + for (unsigned int i=0; i::get_extrapolated_temperature_range () const std::vector old_temperature_values(n_q_points); std::vector old_old_temperature_values(n_q_points); + Vector old_temperature_vector (old_temperature_solution); + Vector old_old_temperature_vector (old_old_temperature_solution); + double min_temperature = (1. + time_step/old_time_step) * old_temperature_solution.linfty_norm() + @@ -474,21 +480,22 @@ BoussinesqFlowProblem::get_extrapolated_temperature_range () const cell = temperature_dof_handler.begin_active(), endc = temperature_dof_handler.end(); for (; cell!=endc; ++cell) - { - fe_values.reinit (cell); - fe_values.get_function_values (old_temperature_solution, old_temperature_values); - fe_values.get_function_values (old_old_temperature_solution, old_old_temperature_values); - - for (unsigned int q=0; qsubdomain_id() == (unsigned int)trilinos_communicator.MyPID()) + { + fe_values.reinit (cell); + fe_values.get_function_values (old_temperature_vector, old_temperature_values); + fe_values.get_function_values (old_old_temperature_vector, old_old_temperature_values); + + for (unsigned int q=0; q::build_stokes_preconditioner () velocity_components[dim] = false; DoFTools::extract_constant_modes (stokes_dof_handler, velocity_components, null_space); + Amg_preconditioner->initialize(stokes_preconditioner_matrix.block(0,0), true, true, 5e-2, null_space, false); @@ -835,8 +843,6 @@ void BoussinesqFlowProblem::assemble_stokes_system () stokes_rhs=0; - Vector old_temperatures (old_temperature_solution); - QGauss quadrature_formula(stokes_degree+2); QGauss face_quadrature_formula(stokes_degree+2); @@ -884,6 +890,8 @@ void BoussinesqFlowProblem::assemble_stokes_system () const FEValuesExtractors::Vector velocities (0); const FEValuesExtractors::Scalar pressure (dim); + Vector old_temperature_vector (old_temperature_solution); + typename DoFHandler::active_cell_iterator cell = stokes_dof_handler.begin_active(), endc = stokes_dof_handler.end(); @@ -899,7 +907,7 @@ void BoussinesqFlowProblem::assemble_stokes_system () local_matrix = 0; local_rhs = 0; - temperature_fe_values.get_function_values (old_temperatures, + temperature_fe_values.get_function_values (old_temperature_vector, old_temperature_values); for (unsigned int q=0; q::assemble_stokes_system () local_dof_indices, stokes_rhs); } + stokes_matrix.compress(); stokes_rhs.compress(); @@ -1121,6 +1130,10 @@ void BoussinesqFlowProblem::assemble_temperature_system () global_T_range = get_extrapolated_temperature_range(); const double global_Omega_diameter = GridTools::diameter (triangulation); + Vector old_temperature_vector (old_temperature_solution); + Vector old_old_temperature_vector (old_old_temperature_solution); + BlockVector stokes_vector (stokes_solution); + typename DoFHandler::active_cell_iterator cell = temperature_dof_handler.begin_active(), endc = temperature_dof_handler.end(); @@ -1135,25 +1148,25 @@ void BoussinesqFlowProblem::assemble_temperature_system () temperature_fe_values.reinit (cell); stokes_fe_values.reinit (stokes_cell); - temperature_fe_values.get_function_values (old_temperature_solution, + temperature_fe_values.get_function_values (old_temperature_vector, old_temperature_values); - temperature_fe_values.get_function_values (old_old_temperature_solution, + temperature_fe_values.get_function_values (old_old_temperature_vector, old_old_temperature_values); - temperature_fe_values.get_function_gradients (old_temperature_solution, + temperature_fe_values.get_function_gradients (old_temperature_vector, old_temperature_grads); - temperature_fe_values.get_function_gradients (old_old_temperature_solution, + temperature_fe_values.get_function_gradients (old_old_temperature_vector, old_old_temperature_grads); - temperature_fe_values.get_function_hessians (old_temperature_solution, + temperature_fe_values.get_function_hessians (old_temperature_vector, old_temperature_hessians); - temperature_fe_values.get_function_hessians (old_old_temperature_solution, + temperature_fe_values.get_function_hessians (old_old_temperature_vector, old_old_temperature_hessians); temperature_right_hand_side.value_list (temperature_fe_values.get_quadrature_points(), gamma_values); - stokes_fe_values.get_function_values (stokes_solution, + stokes_fe_values.get_function_values (stokes_vector, present_stokes_values); const double nu @@ -1539,6 +1552,8 @@ int main (int argc, char *argv[]) (void)argv; #endif + //sleep (20); + try { deallog.depth_console (0); -- 2.39.5