6#include <deal.II/base/exceptions.h>
7#include <deal.II/numerics/vector_tools.h>
9#include <boost/geometry/core/cs.hpp>
24#include <prismspf/config.h>
28template <
unsigned int dim,
unsigned int degree,
typename number>
42 solve_context->get_matrix_free_manager().get_shared_matrix_free_levels())
84 init(
const std::list<DependencyMap> &all_dependeny_sets)
117 if (
solve_context->get_simulation_timer().get_increment() == 0 &&
125 if (
solve_context->get_simulation_timer().get_increment() == 0)
127 solutions.apply_initial_condition_for_old_fields();
155 solutions.prepare_for_solution_transfer();
180 for (
const auto &global_index :
solve_block.field_indices)
182 bool initialized_from_file =
false;
185 const auto &initial_condition_parameters =
188 for (
const auto &initial_condition_file :
189 initial_condition_parameters.get_initial_condition_files())
192 std::find(initial_condition_file.simulation_variable_names.begin(),
193 initial_condition_file.simulation_variable_names.end(),
195 if (name_it != initial_condition_file.simulation_variable_names.end())
198 solutions.get_solution_vector(global_index).zero_out_ghost_values();
199 dealii::VectorTools::interpolate(
201 solve_context->get_dof_manager().get_field_dof_handler(global_index),
204 solve_context->get_field_attributes()[global_index].field_type,
205 initial_condition_file,
207 solutions.get_solution_vector(global_index));
209 initialized_from_file =
true;
214 if (!initialized_from_file)
216 solutions.get_solution_vector(global_index).zero_out_ghost_values();
217 dealii::VectorTools::interpolate(
219 solve_context->get_dof_manager().get_field_dof_handler(global_index),
222 solve_context->get_field_attributes()[global_index].field_type,
224 solutions.get_solution_vector(global_index));
226 solutions.apply_initial_condition_for_old_fields();
276PRISMS_PF_END_NAMESPACE
Class that manages solution initialization and swapping with old solutions.
Definition group_solution_handler.h:68
Function for user-implemented initial conditions. These are only ever calculated for explicit time de...
Definition initial_conditions.h:37
Function for read-in of initial conditions.
Definition initial_conditions.h:69
Structure to hold the attributes of a solve-block.
Definition solve_block.h:59
This class provides context for a solver with ptrs to all the relevant dependencies.
Definition solve_context.h:34
void execute_solution_transfer()
Execute solution transfer (for AMR).
Definition solver_base.h:162
void set_initial_condition()
Set the initial conditions.
Definition solver_base.h:178
virtual void reinit()
Reinitialize the solution vectors & apply constraints.
Definition solver_base.h:97
const SolveBlock & get_solve_block() const
Get the solver context.
Definition solver_base.h:252
virtual void update()
Update the fields.
Definition solver_base.h:135
std::vector< SolverBase< dim, degree, number > * > aux_solvers
Definition solver_base.h:273
const GroupSolutionHandler< dim, number > & get_solution_manager() const
Get the solution handler.
Definition solver_base.h:234
virtual void solve()
Solve for a single update step.
Definition solver_base.h:115
virtual void print()
Print information about the solver to summary.log.
Definition solver_base.h:171
void prepare_for_solution_transfer()
Prepare for solution transfer (for AMR).
Definition solver_base.h:153
virtual ~SolverBase()=default
Destructor.
SolverBase(const SolverBase &solver_base)=delete
Copy constructor.
SolverBase(SolverBase &&solver_base) noexcept=delete
Move constructor.
SolverBase(SolveBlock _solve_block, const SolveContext< dim, degree, number > &_solve_context)
Constructor.
Definition solver_base.h:36
virtual void solve_impl()
Solve implementation.
Definition solver_base.h:108
virtual void init(const std::list< DependencyMap > &all_dependeny_sets)
Initialize the solver.
Definition solver_base.h:84
SolverBase & operator=(SolverBase &&solver_base) noexcept=delete
Move assignment.
GroupSolutionHandler< dim, number > solutions
Solution vectors for fields handled by this solver.
Definition solver_base.h:271
const SolveContext< dim, degree, number > * solve_context
Solver context provides access to external information.
Definition solver_base.h:266
SolveBlock solve_block
Information about the solve block this handler is responsible for.
Definition solver_base.h:261
SolverBase & operator=(const SolverBase &solver_base)=delete
Copy assignment.
virtual void update_ghosts()
Update the ghosts.
Definition solver_base.h:144
GroupSolutionHandler< dim, number > & get_solution_manager()
Get the solution handler.
Definition solver_base.h:243
static const dealii::MappingQ1< dim > mapping
Mappings to and from reference cell.
Definition system_wide.h:36
Definition conditional_ostreams.cc:20
Definition vectorized_operations.h:17
@ Primary
Primary fields are initialized explicitly through initial conditions rather than through the solver o...
Definition solve_block.h:33
Information about what fields need to be held onto. This will likely get refactored to be an oldest a...
Definition dependency_extents.h:31
unsigned int oldest_age
Definition dependency_extents.h:32