ABLATE Source Documentation  0.12.33
sutherland.hpp
1 #ifndef ABLATELIBRARY_SUTHERLAND_HPP
2 #define ABLATELIBRARY_SUTHERLAND_HPP
3 
4 #include <eos/eos.hpp>
5 #include <memory>
6 #include "transportModel.hpp"
7 
8 namespace ablate::eos::transport {
9 
10 class Sutherland : public TransportModel {
11  private:
15  const std::shared_ptr<eos::EOS> eos;
16 
20  const std::vector<TransportProperty> enabledProperties;
21 
22  // constant values
23  inline const static PetscReal pr = 0.707;
24  inline const static PetscReal muo = 1.716e-5;
25  inline const static PetscReal to = 273.e+0;
26  inline const static PetscReal so = 111.e+0;
27  inline const static PetscReal sc = 0.707;
28 
38  static PetscErrorCode SutherlandConductivityFunction(const PetscReal conserved[], PetscReal* property, void* ctx);
39  static PetscErrorCode SutherlandConductivityTemperatureFunction(const PetscReal conserved[], PetscReal temperature, PetscReal* property, void* ctx);
40  static PetscErrorCode SutherlandViscosityFunction(const PetscReal conserved[], PetscReal* property, void* ctx);
41  static PetscErrorCode SutherlandViscosityTemperatureFunction(const PetscReal conserved[], PetscReal temperature, PetscReal* property, void* ctx);
42  static PetscErrorCode SutherlandDiffusivityFunction(const PetscReal conserved[], PetscReal* property, void* ctx);
43  static PetscErrorCode SutherlandDiffusivityTemperatureFunction(const PetscReal conserved[], PetscReal temperature, PetscReal* property, void* ctx);
44  static PetscErrorCode SutherlandZeroFunction(const PetscReal conserved[], PetscReal* property, void* ctx);
45  static PetscErrorCode SutherlandZeroTemperatureFunction(const PetscReal conserved[], PetscReal temperature, PetscReal* property, void* ctx);
48  public:
49  explicit Sutherland(std::shared_ptr<eos::EOS> eos, const std::vector<TransportProperty>& enabledProperties = {});
50 
57  [[nodiscard]] ThermodynamicFunction GetTransportFunction(TransportProperty property, const std::vector<domain::Field>& fields) const override;
58 
65  [[nodiscard]] ThermodynamicTemperatureFunction GetTransportTemperatureFunction(TransportProperty property, const std::vector<domain::Field>& fields) const override;
66 };
67 } // namespace ablate::eos::transport
68 
69 #endif // ABLATELIBRARY_SUTHERLAND_HPP
Definition: sutherland.hpp:10
ThermodynamicFunction GetTransportFunction(TransportProperty property, const std::vector< domain::Field > &fields) const override
Definition: sutherland.cpp:79
ThermodynamicTemperatureFunction GetTransportTemperatureFunction(TransportProperty property, const std::vector< domain::Field > &fields) const override
Definition: sutherland.cpp:102
Definition: transportModel.hpp:10