https://mooseframework.inl.gov
Loading...
Searching...
No Matches
IncompressibleMomentumSPBase.h
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
10#pragma once
11
12#include "ScalarKernel.h"
13#include "ADScalarKernel.h"
14#include "FunctorInterface.h"
15
17
18template <bool is_ad>
20 : public std::conditional<is_ad, ADScalarKernel, ScalarKernel>::type,
21 public FunctorInterface
22{
23 using Base = typename std::conditional<is_ad, ADScalarKernel, ScalarKernel>::type;
24
25public:
27 virtual bool isADObject() const override { return is_ad; };
29
30protected:
31 virtual GenericReal<is_ad> computeQpResidual() override;
32 virtual Real computeQpJacobian() override;
33 virtual Real computeQpJacobianMDot();
34 virtual Real computeQpJacobianDP();
36 const GenericReal<is_ad> & G,
37 const GenericReal<is_ad> & Dh,
38 const unsigned int j);
39 virtual GenericReal<is_ad> massFlowRate() const = 0;
40 virtual GenericReal<is_ad> pressureDrop() const = 0;
42 const size_t _n_temps;
44 std::vector<const VariableValue *> _T;
46 const bool _is_implicit;
52 const size_t _n_segments;
54 std::vector<const Moose::Functor<GenericReal<is_ad>> *> _areas;
56 std::vector<const Moose::Functor<GenericReal<is_ad>> *> _perimeters;
58 std::vector<const Moose::Functor<GenericReal<is_ad>> *> _lengths;
60 std::vector<const Moose::Functor<GenericReal<is_ad>> *> _alphas;
62 std::vector<const Moose::Functor<GenericReal<is_ad>> *> _forms_losses;
64 std::vector<const Moose::Functor<GenericReal<is_ad>> *> _dPps;
66 std::vector<const Moose::Functor<GenericReal<is_ad>> *> _roughnesses;
69};
const double mu
Moose::GenericType< Real, is_ad > GenericReal
typename std::conditional< is_ad, ADScalarKernel, ScalarKernel >::type Base
std::vector< const Moose::Functor< GenericReal< is_ad > > * > _forms_losses
Forms loss coefficients of each segment.
std::vector< const Moose::Functor< GenericReal< is_ad > > * > _alphas
Angle with respect to the horizontal of each segment.
const size_t _n_temps
Number of coupled temperature variables.
virtual GenericReal< is_ad > computeQpResidual() override
std::vector< const Moose::Functor< GenericReal< is_ad > > * > _roughnesses
Wall roughness of each segment.
std::vector< const VariableValue * > _T
Coupled temperature variables.
const Moose::Functor< GenericReal< is_ad > > & _Pref
System reference pressure.
const bool _is_implicit
Property state integration flag.
std::vector< const Moose::Functor< GenericReal< is_ad > > * > _dPps
Pump pressure gains of each segment.
virtual GenericReal< is_ad > pressureDrop() const =0
std::vector< const Moose::Functor< GenericReal< is_ad > > * > _lengths
Length of each segment.
virtual GenericReal< is_ad > computeFrictionFactor(const GenericReal< is_ad > &mu, const GenericReal< is_ad > &G, const GenericReal< is_ad > &Dh, const unsigned int j)
const Moose::Functor< GenericReal< is_ad > > & _gravity
Gravitational acceleration in the vertical downward direction.
std::vector< const Moose::Functor< GenericReal< is_ad > > * > _perimeters
Wetted perimeter of each segment.
const size_t _n_segments
Number of geometrically/thermally unique segments.
virtual GenericReal< is_ad > massFlowRate() const =0
std::vector< const Moose::Functor< GenericReal< is_ad > > * > _areas
Flow area of each segment.
const SinglePhaseFluidProperties & _fp
Fluid properties object.
Common class for single phase fluid properties.