https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
19
24
25std::vector<ADReal>
26ADNumericalFlux3EqnBase::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];
33 U_3d[THMVACE3D::RHOVA] = 0;
34 U_3d[THMVACE3D::RHOWA] = 0;
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
43std::vector<ADReal>
44ADNumericalFlux3EqnBase::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
58void
59ADNumericalFlux3EqnBase::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}
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.
static InputParameters validParams()
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.
ADNumericalFlux3EqnBase(const InputParameters &parameters)
Abstract base class for computing and caching internal or boundary fluxes for 1D conservation law sys...
static InputParameters validParams()
static const unsigned int N_FLUX_OUTPUTS
Number of numerical flux function outputs for 1D.
static const unsigned int N_FLUX_INPUTS
Number of numerical flux function inputs for 1D.
static const unsigned int N_FLUX_INPUTS
Number of numerical flux function inputs for 3D.
static const unsigned int N_FLUX_OUTPUTS
Number of numerical flux function outputs for 3D.