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 355691 : NumericalFlux1D::initialize()
32 : {
33 355691 : _cached_flux_elem_id = libMesh::invalid_uint;
34 355691 : _cached_flux_side_id = libMesh::invalid_uint;
35 355691 : }
36 :
37 : void
38 355691 : NumericalFlux1D::execute()
39 : {
40 355691 : }
41 :
42 : void
43 285334 : NumericalFlux1D::finalize()
44 : {
45 285334 : }
46 :
47 : void
48 70357 : NumericalFlux1D::threadJoin(const UserObject &)
49 : {
50 70357 : }
51 :
52 : const std::vector<ADReal> &
53 50138579 : 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 50138579 : if (_cached_flux_elem_id != ielem || _cached_flux_side_id != iside)
61 : {
62 4370678 : _cached_flux_elem_id = ielem;
63 4370678 : _cached_flux_side_id = iside;
64 :
65 4370678 : const auto UL_3d = convert1DInputTo3D(UL_1d);
66 4370678 : const auto UR_3d = convert1DInputTo3D(UR_1d);
67 :
68 : const RealVectorValue nLR(nLR_dot_d, 0, 0);
69 : RealVectorValue t1, t2;
70 4370678 : THM::computeOrthogonalDirections(nLR, t1, t2);
71 :
72 4370678 : calcFlux(UL_3d, UR_3d, nLR, t1, t2, _FL_3d, _FR_3d);
73 :
74 4370678 : transform3DFluxDirection(_FL_3d, nLR_dot_d);
75 4370678 : transform3DFluxDirection(_FR_3d, nLR_dot_d);
76 :
77 4370678 : _FL_1d = convert3DFluxTo1D(_FL_3d);
78 8741356 : _FR_1d = convert3DFluxTo1D(_FR_3d);
79 : }
80 :
81 50138579 : if (res_side_is_left)
82 25159608 : return _FL_1d;
83 : else
84 24978971 : return _FR_1d;
85 : }
86 :
87 : const std::vector<ADReal> &
88 136247 : 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 136247 : if (_cached_flux_elem_id != ielem || _cached_flux_side_id != iside)
97 : {
98 136247 : _cached_flux_elem_id = ielem;
99 136247 : _cached_flux_side_id = iside;
100 :
101 136247 : calcFlux(UL_3d, UR_3d, nLR, t1, t2, _FL_3d, _FR_3d);
102 : }
103 :
104 136247 : return _FL_3d;
105 : }
|