include/meltpooldg/compressible_flow/dg_operation.hpp Source File

Developer Documentation: include/meltpooldg/compressible_flow/dg_operation.hpp Source File
Developer Documentation
dg_operation.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/function.h>
4
5#include <deal.II/lac/la_parallel_vector.h>
6
21
22#include <memory>
23#include <string>
24
26{
41 template <int dim, typename number, int n_species = 1>
43 {
44 public:
45 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
46
57 explicit DGOperation(const ScratchData<dim, dim, number> &scratch_data,
58 const OperationData<number> &flow_data,
59 const MaterialPhaseData<number> &material_data_in,
60 unsigned int flow_dof_idx = 0,
61 unsigned int flow_quad_idx = 0);
62
68 void
69 reinit();
70
77 void
78 solve(const number current_time, const number time_step);
79
85 void
86 distribute_dofs(dealii::DoFHandler<dim> &dof_handler) const;
87
97 void
98 set_boundary_conditions(const std::shared_ptr<SimulationCaseBase<dim, number>> &simulation_case,
99 const std::string &operation_name);
100
108 void
109 set_body_force(std::unique_ptr<dealii::Function<dim>> body_force_in);
110
130 void
132 std::shared_ptr<ExternalFlowForce<dim, number, n_species>> external_force_residuum,
133 std::shared_ptr<ExternalFlowForceJacobian<dim, number, n_species>> external_force_jacobian);
134
145 number
146 compute_time_step_size(bool do_print = false) const;
147
153 void
154 set_initial_condition(const dealii::Function<dim> &function);
155
161 void
163
167 const VectorType &
168 get_solution() const;
169
173 VectorType &
174 get_solution();
175
179 const dealii::DoFHandler<dim> &
180 get_dof_handler() const;
181
182 private:
185
188 std::unique_ptr<TimeIntegration::TimeIntegratorBase<number>> time_integrator;
189
194 std::variant<DGOperatorExplicit<dim, number, n_species>,
198
201
207 number
209
215 number
217
224 static std::variant<DGOperatorExplicit<dim, number, n_species>,
228
232 void
234 };
235
236
238 template <int dim, typename number, int n_species>
239 const dealii::LinearAlgebra::distributed::Vector<number> &
241 {
242 return flow_scratch_data.solution_history.get_current_solution();
243 }
244
245 template <int dim, typename number, int n_species>
246 dealii::LinearAlgebra::distributed::Vector<number> &
248 {
249 return flow_scratch_data.solution_history.get_current_solution();
250 }
251
252 template <int dim, typename number, int n_species>
253 const dealii::DoFHandler<dim> &
255 {
256 return flow_scratch_data.scratch_data.get_dof_handler(flow_scratch_data.dof_idx);
257 }
258
259} // namespace MeltPoolDG::CompressibleFlow
Definition dg_operation.hpp:43
void solve(const number current_time, const number time_step)
Solves the compressible Navier-Stokes equations for a single time step.
Definition dg_operation.cpp:102
number compute_minimum_density() const
Compute the minimum density currently occurring in the flow field.
Definition dg_operation.cpp:214
void attach_output_vectors(GenericDataOut< dim, number > &data_out) const
Attach the solution to the passed data out object.
Definition dg_operation.cpp:359
void setup_time_integrator()
Definition dg_operation.cpp:413
void add_external_force(std::shared_ptr< ExternalFlowForce< dim, number, n_species > > external_force_residuum, std::shared_ptr< ExternalFlowForceJacobian< dim, number, n_species > > external_force_jacobian)
Definition dg_operation.cpp:190
number compute_convective_time_step_limit() const
Compute the convective time step limit for the current mesh and flow field.
Definition dg_operation.cpp:252
const dealii::DoFHandler< dim > & get_dof_handler() const
Constant getter function for the DoFHandler.
Definition dg_operation.hpp:254
const VectorType & get_solution() const
Constant getter function for the current solution vector.
Definition dg_operation.hpp:240
void set_initial_condition(const dealii::Function< dim > &function)
Set the solution vector to the passed initial flow field state.
Definition dg_operation.cpp:157
static std::variant< DGOperatorExplicit< dim, number, n_species >, DGOperatorImplicit< dim, number >, DGOperatorImplicitExplicit< dim, number > > setup_operator(OperationScratchData< dim, number > &flow_scratch_data)
Definition dg_operation.cpp:373
void set_boundary_conditions(const std::shared_ptr< SimulationCaseBase< dim, number > > &simulation_case, const std::string &operation_name)
Set the boundary conditions.
Definition dg_operation.cpp:140
std::unique_ptr< TimeIntegration::TimeIntegratorBase< number > > time_integrator
Definition dg_operation.hpp:188
OutputManager< dim, number > output_manager
Object containing the data post processor for the different output options.
Definition dg_operation.hpp:200
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition dg_operation.hpp:45
OperationScratchData< dim, number > flow_scratch_data
Scratch data for compressible flows.
Definition dg_operation.hpp:184
void distribute_dofs(dealii::DoFHandler< dim > &dof_handler) const
Distribute the degrees of freedom to the passed dof handler object.
Definition dg_operation.cpp:94
void set_body_force(std::unique_ptr< dealii::Function< dim > > body_force_in)
Set a body force, e.g. gravity, specified by the passed function.
Definition dg_operation.cpp:149
void reinit()
Set up the required internal data structures.
Definition dg_operation.cpp:85
number compute_time_step_size(bool do_print=false) const
Compute the maximum time step size.
Definition dg_operation.cpp:326
std::variant< DGOperatorExplicit< dim, number, n_species >, DGOperatorImplicit< dim, number >, DGOperatorImplicitExplicit< dim, number > > flow_operator
Definition dg_operation.hpp:197
Operator for the matrix-free evaluation of a compressible single-phase flow cutDG formulation for imp...
Definition dg_operator_implicit_explicit.hpp:21
Operator for the matrix-free evaluation of a compressible single-phase flow cutDG formulation for imp...
Definition dg_operator_implicit.hpp:24
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
Base class for managing a simulation case in a parallel computing environment.
Definition simulation_case_base.hpp:44
This file contains various functions that can be used to set and evaluate boundary conditions for the...
Definition boundary_condition_functions.hpp:17
An abstract interface for defining external forces acting on the fluid that must be evaluated and inc...
Definition utils.hpp:131
Collection of material parameters for a specific fluid phase.
Definition material.hpp:119
Collection of parameters required by the compressible Navier-Stokes operator.
Definition operation_data.hpp:35
Scratch data structure for compressible single-phase flow solvers.
Definition operation_scratch_data.hpp:33
Definition output_post_processor.hpp:318