https://mooseframework.inl.gov
ADNumericalFlux3EqnBase.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "THMIndicesVACE.h"
12 
15 {
17  return params;
18 }
19 
21  : NumericalFlux1D(parameters)
22 {
23 }
24 
25 std::vector<ADReal>
26 ADNumericalFlux3EqnBase::convert1DInputTo3D(const std::vector<ADReal> & U_1d) const
27 {
28  const auto n_passives = U_1d.size() - THMVACE1D::N_FLUX_INPUTS;
29 
30  std::vector<ADReal> U_3d(THMVACE3D::N_FLUX_INPUTS + n_passives);
31  U_3d[THMVACE3D::RHOA] = U_1d[THMVACE1D::RHOA];
32  U_3d[THMVACE3D::RHOUA] = U_1d[THMVACE1D::RHOUA];
33  U_3d[THMVACE3D::RHOVA] = 0;
34  U_3d[THMVACE3D::RHOWA] = 0;
35  U_3d[THMVACE3D::RHOEA] = U_1d[THMVACE1D::RHOEA];
36  U_3d[THMVACE3D::AREA] = U_1d[THMVACE1D::AREA];
37  for (const auto i : make_range(n_passives))
39 
40  return U_3d;
41 }
42 
43 std::vector<ADReal>
44 ADNumericalFlux3EqnBase::convert3DFluxTo1D(const std::vector<ADReal> & F_3d) const
45 {
46  const auto n_passives = F_3d.size() - THMVACE3D::N_FLUX_OUTPUTS;
47 
48  std::vector<ADReal> F_1d(THMVACE1D::N_FLUX_OUTPUTS + n_passives);
49  F_1d[THMVACE1D::MASS] = F_3d[THMVACE3D::MASS];
52  for (const auto i : make_range(n_passives))
54 
55  return F_1d;
56 }
57 
58 void
59 ADNumericalFlux3EqnBase::transform3DFluxDirection(std::vector<ADReal> & F_3d, Real nLR_dot_d) const
60 {
61  F_3d[THMVACE3D::MASS] *= nLR_dot_d;
62  F_3d[THMVACE3D::ENERGY] *= nLR_dot_d;
63 
64  const auto n_passives = F_3d.size() - THMVACE3D::N_FLUX_OUTPUTS;
65  for (const auto i : make_range(n_passives))
66  F_3d[THMVACE3D::N_FLUX_OUTPUTS + i] *= nLR_dot_d;
67 }
static InputParameters validParams()
Abstract base class for computing and caching internal or boundary fluxes for 1D conservation law sys...
static const unsigned int N_FLUX_OUTPUTS
Number of numerical flux function outputs for 3D.
virtual std::vector< ADReal > convert1DInputTo3D(const std::vector< ADReal > &U_1d) const override
Converts a 1D flux input vector to a 3D flux input vector.
ADNumericalFlux3EqnBase(const InputParameters &parameters)
static InputParameters validParams()
static const unsigned int N_FLUX_INPUTS
Number of numerical flux function inputs for 1D.
static const unsigned int N_FLUX_OUTPUTS
Number of numerical flux function outputs for 1D.
IntRange< T > make_range(T beg, T end)
virtual std::vector< ADReal > convert3DFluxTo1D(const std::vector< ADReal > &F_3d) const override
Converts a 3D flux vector to a 1D flux vector.
virtual void transform3DFluxDirection(std::vector< ADReal > &F_3d, Real nLR_dot_d) const override
Applies direction transformation to a 3D flux vector.
static const unsigned int N_FLUX_INPUTS
Number of numerical flux function inputs for 3D.