Theseus
Compressible flow solver
Loading...
Searching...
No Matches
LTETransport.hpp
Go to the documentation of this file.
1// Copyright (c) 2025-2026 Board of Trustees of the University of Illinois
2//
3// This file is part of Theseus.
4//
5// SPDX-License-Identifier: BSD-3-Clause
6#pragma once
7
8#include <cmath>
9#include "Physics.hpp"
10#include "GasState.hpp"
11
12namespace Theseus
13{
14
15 // ============================================================================
16 // LTETransport: LTE lookup for transport properties
17 // ============================================================================
18
20 {
21
22 template<typename EOSType, typename StateViewType>
23 MFEM_HOST_DEVICE
24 inline mfem::real_t viscosity(const Theseus::PhysicsConstants &phys,
25 const Theseus::StateLayout &L,
26 const EOSType &eos, const StateViewType &S,
27 const LTETables &lteTables) const
28 {
29#ifdef SUTHERLAND
30 // mu0 * T0pTs / (T + Ts) * (T / T0) * std::sqrt(T / T0);
31 const mfem::real_t temptr = eos.temperature(phys, L, S, thermoTables);
32 const mfem::real_t Trel = temptr / phys.T0;
33 const mfem::real_t T0pTs = phys.T0 + phys.Ts;
34 return phys.mu0 * T0pTs * Trel * std::sqrt(Trel) / (temptr + phys.Ts);
35#else
36 return eos.property_lookup(lteTables.L.mu_idx, phys, L, S, lteTables);
37#endif
38 }
39
40 template<typename EOSType, typename StateViewType>
41 MFEM_HOST_DEVICE
42 inline mfem::real_t bulk_viscosity(const Theseus::PhysicsConstants &phys,
43 const Theseus::StateLayout &L,
44 const EOSType &eos, const StateViewType &S,
45 const LTETables &lteTables) const
46 {
47 return phys.mu_bulk;
48 }
49
50 // Thermal cond kappa = mu * cp / Pr
51 template<typename EOSType, typename StateViewType>
52 MFEM_HOST_DEVICE
53 inline mfem::real_t thermal_conductivity(const Theseus::PhysicsConstants &phys,
54 const Theseus::StateLayout &L,
55 const EOSType &eos, const StateViewType &S,
56 const LTETables &lteTables) const
57 {
58 return eos.property_lookup(lteTables.L.lambda_idx, phys, L, S, lteTables);
59 }
60 };
61 // TODO: Consider refactoring; would be better (explicit) design
62 // struct SutherlandTransport {***} using phys.mu0, phys.T0, phys.Ts, etc.
63}
Definition AxisymmetricGeometry.hpp:15
Definition LTETransport.hpp:20
MFEM_HOST_DEVICE mfem::real_t viscosity(const Theseus::PhysicsConstants &phys, const Theseus::StateLayout &L, const EOSType &eos, const StateViewType &S, const LTETables &lteTables) const
Definition LTETransport.hpp:24
MFEM_HOST_DEVICE mfem::real_t bulk_viscosity(const Theseus::PhysicsConstants &phys, const Theseus::StateLayout &L, const EOSType &eos, const StateViewType &S, const LTETables &lteTables) const
Definition LTETransport.hpp:42
MFEM_HOST_DEVICE mfem::real_t thermal_conductivity(const Theseus::PhysicsConstants &phys, const Theseus::StateLayout &L, const EOSType &eos, const StateViewType &S, const LTETables &lteTables) const
Definition LTETransport.hpp:53
Definition Physics.hpp:14
mfem::real_t mu0
Definition Physics.hpp:40
mfem::real_t Ts
Definition Physics.hpp:42
mfem::real_t T0
Definition Physics.hpp:41
mfem::real_t mu_bulk
Definition Physics.hpp:39
Definition GasState.hpp:37