Line data Source code
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 :
10 : #include "NumericalFlux1D.h"
11 : #include "THMUtils.h"
12 :
13 : InputParameters
14 8930 : NumericalFlux1D::validParams()
15 : {
16 8930 : InputParameters params = GeneralUserObject::validParams();
17 8930 : return params;
18 : }
19 :
20 4876 : NumericalFlux1D::NumericalFlux1D(const InputParameters & parameters)
21 : : ThreadedGeneralUserObject(parameters),
22 :
23 4876 : _cached_flux_elem_id(libMesh::invalid_uint),
24 4876 : _cached_flux_side_id(libMesh::invalid_uint),
25 :
26 4876 : _last_region_index(0)
27 : {
28 4876 : }
29 :
30 : void
31 353317 : NumericalFlux1D::initialize()
32 : {
33 353317 : _cached_flux_elem_id = libMesh::invalid_uint;
34 353317 : _cached_flux_side_id = libMesh::invalid_uint;
35 353317 : }
36 :
37 : void
38 353317 : NumericalFlux1D::execute()
39 : {
40 353317 : }
41 :
42 : void
43 283730 : NumericalFlux1D::finalize()
44 : {
45 283730 : }
46 :
47 : void
48 69587 : NumericalFlux1D::threadJoin(const UserObject &)
49 : {
50 69587 : }
51 :
52 : const std::vector<ADReal> &
53 50068299 : NumericalFlux1D::getFlux(const unsigned int iside,
54 : const dof_id_type ielem,
55 : bool res_side_is_left,
56 : const std::vector<ADReal> & UL_1d,
57 : const std::vector<ADReal> & UR_1d,
58 : Real nLR_dot_d) const
59 : {
60 50068299 : if (_cached_flux_elem_id != ielem || _cached_flux_side_id != iside)
61 : {
62 4363757 : _cached_flux_elem_id = ielem;
63 4363757 : _cached_flux_side_id = iside;
64 :
65 4363757 : const auto UL_3d = convert1DInputTo3D(UL_1d);
66 4363757 : const auto UR_3d = convert1DInputTo3D(UR_1d);
67 :
68 : const RealVectorValue nLR(nLR_dot_d, 0, 0);
69 : RealVectorValue t1, t2;
70 4363757 : THM::computeOrthogonalDirections(nLR, t1, t2);
71 :
72 4363757 : calcFlux(UL_3d, UR_3d, nLR, t1, t2, _FL_3d, _FR_3d);
73 :
74 4363757 : transform3DFluxDirection(_FL_3d, nLR_dot_d);
75 4363757 : transform3DFluxDirection(_FR_3d, nLR_dot_d);
76 :
77 4363757 : _FL_1d = convert3DFluxTo1D(_FL_3d);
78 4363757 : _FR_1d = convert3DFluxTo1D(_FR_3d);
79 4363757 : }
80 :
81 50068299 : if (res_side_is_left)
82 25123902 : return _FL_1d;
83 : else
84 24944397 : return _FR_1d;
85 : }
86 :
87 : const std::vector<ADReal> &
88 134457 : NumericalFlux1D::getFlux3D(const unsigned int iside,
89 : const dof_id_type ielem,
90 : const std::vector<ADReal> & UL_3d,
91 : const std::vector<ADReal> & UR_3d,
92 : const RealVectorValue & nLR,
93 : const RealVectorValue & t1,
94 : const RealVectorValue & t2) const
95 : {
96 134457 : if (_cached_flux_elem_id != ielem || _cached_flux_side_id != iside)
97 : {
98 134457 : _cached_flux_elem_id = ielem;
99 134457 : _cached_flux_side_id = iside;
100 :
101 134457 : calcFlux(UL_3d, UR_3d, nLR, t1, t2, _FL_3d, _FR_3d);
102 : }
103 :
104 134457 : return _FL_3d;
105 : }
|