From f7bb98ce77cad19796955c61c1f97bed4cf012ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com>
Date: Tue, 25 May 2021 17:17:16 +0200
Subject: [PATCH] Remove temporary perfect gas utilities

---
 src/language/modules/SchemeModule.cpp |  78 --------
 src/scheme/CMakeLists.txt             |   3 +-
 src/scheme/PerfectGas.cpp             | 248 --------------------------
 src/scheme/PerfectGas.hpp             |  32 ----
 4 files changed, 1 insertion(+), 360 deletions(-)
 delete mode 100644 src/scheme/PerfectGas.cpp
 delete mode 100644 src/scheme/PerfectGas.hpp

diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp
index d6f9227f4..0b6610762 100644
--- a/src/language/modules/SchemeModule.cpp
+++ b/src/language/modules/SchemeModule.cpp
@@ -25,8 +25,6 @@
 #include <scheme/NumberedBoundaryDescriptor.hpp>
 #include <scheme/SymmetryBoundaryConditionDescriptor.hpp>
 
-#include <scheme/PerfectGas.hpp>
-
 #include <memory>
 
 SchemeModule::SchemeModule()
@@ -150,82 +148,6 @@ SchemeModule::SchemeModule()
 
                               ));
 
-  this
-    ->_addBuiltinFunction("perfect_gas_epsilon_from_rho_p_gamma",
-                          std::make_shared<BuiltinFunctionEmbedder<
-                            std::shared_ptr<const IDiscreteFunction>(const std::shared_ptr<const IDiscreteFunction>&,
-                                                                     const std::shared_ptr<const IDiscreteFunction>&,
-                                                                     const std::shared_ptr<const IDiscreteFunction>&)>>(
-
-                            [](const std::shared_ptr<const IDiscreteFunction>& rho,
-                               const std::shared_ptr<const IDiscreteFunction>& p,
-                               const std::shared_ptr<const IDiscreteFunction>& gamma)
-                              -> std::shared_ptr<const IDiscreteFunction> {
-                              return perfect_gas::epsilonFromRhoPGamma(rho, p, gamma);
-                            }
-
-                            ));
-
-  this
-    ->_addBuiltinFunction("perfect_gas_p_from_rho_epsilon_gamma",
-                          std::make_shared<BuiltinFunctionEmbedder<
-                            std::shared_ptr<const IDiscreteFunction>(const std::shared_ptr<const IDiscreteFunction>&,
-                                                                     const std::shared_ptr<const IDiscreteFunction>&,
-                                                                     const std::shared_ptr<const IDiscreteFunction>&)>>(
-
-                            [](const std::shared_ptr<const IDiscreteFunction>& rho,
-                               const std::shared_ptr<const IDiscreteFunction>& epsilon,
-                               const std::shared_ptr<const IDiscreteFunction>& gamma)
-                              -> std::shared_ptr<const IDiscreteFunction> {
-                              return perfect_gas::pFromRhoEpsilonGamma(rho, epsilon, gamma);
-                            }
-
-                            ));
-
-  this
-    ->_addBuiltinFunction("perfect_gas_sound_speed",
-                          std::make_shared<BuiltinFunctionEmbedder<
-                            std::shared_ptr<const IDiscreteFunction>(const std::shared_ptr<const IDiscreteFunction>&,
-                                                                     const std::shared_ptr<const IDiscreteFunction>&,
-                                                                     const std::shared_ptr<const IDiscreteFunction>&)>>(
-
-                            [](const std::shared_ptr<const IDiscreteFunction>& rho,
-                               const std::shared_ptr<const IDiscreteFunction>& p,
-                               const std::shared_ptr<const IDiscreteFunction>& gamma)
-                              -> std::shared_ptr<const IDiscreteFunction> {
-                              return perfect_gas::soundSpeed(rho, p, gamma);
-                            }
-
-                            ));
-
-  this
-    ->_addBuiltinFunction("E_from_epsilon_u",
-                          std::make_shared<BuiltinFunctionEmbedder<
-                            std::shared_ptr<const IDiscreteFunction>(const std::shared_ptr<const IDiscreteFunction>&,
-                                                                     const std::shared_ptr<const IDiscreteFunction>&)>>(
-
-                            [](const std::shared_ptr<const IDiscreteFunction>& epsilon,
-                               const std::shared_ptr<const IDiscreteFunction>& u)
-                              -> std::shared_ptr<const IDiscreteFunction> {
-                              return perfect_gas::totalEnergyFromEpsilonU(epsilon, u);
-                            }
-
-                            ));
-
-  this
-    ->_addBuiltinFunction("epsilon_from_E_u",
-                          std::make_shared<BuiltinFunctionEmbedder<
-                            std::shared_ptr<const IDiscreteFunction>(const std::shared_ptr<const IDiscreteFunction>&,
-                                                                     const std::shared_ptr<const IDiscreteFunction>&)>>(
-
-                            [](const std::shared_ptr<const IDiscreteFunction>& E,
-                               const std::shared_ptr<const IDiscreteFunction>& u)
-                              -> std::shared_ptr<const IDiscreteFunction> {
-                              return perfect_gas::epsilonFromTotalEnergyU(E, u);
-                            }
-
-                            ));
-
   this->_addBuiltinFunction("glace_solver",
                             std::make_shared<BuiltinFunctionEmbedder<std::tuple<
                               std::shared_ptr<const IMesh>, std::shared_ptr<const IDiscreteFunction>,
diff --git a/src/scheme/CMakeLists.txt b/src/scheme/CMakeLists.txt
index b9a24259f..2131f2fec 100644
--- a/src/scheme/CMakeLists.txt
+++ b/src/scheme/CMakeLists.txt
@@ -5,5 +5,4 @@ add_library(
   AcousticSolver.cpp
   DiscreteFunctionInterpoler.cpp
   DiscreteFunctionUtils.cpp
-  DiscreteFunctionVectorInterpoler.cpp
-  PerfectGas.cpp)
+  DiscreteFunctionVectorInterpoler.cpp)
diff --git a/src/scheme/PerfectGas.cpp b/src/scheme/PerfectGas.cpp
deleted file mode 100644
index 56cca334d..000000000
--- a/src/scheme/PerfectGas.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-#include <scheme/PerfectGas.hpp>
-
-#include <scheme/DiscreteFunctionP0.hpp>
-#include <scheme/DiscreteFunctionUtils.hpp>
-
-namespace perfect_gas
-{
-template <size_t Dimension, typename DataType>
-std::shared_ptr<IDiscreteFunction>
-soundSpeed(const DiscreteFunctionP0<Dimension, DataType>& rho,
-           const DiscreteFunctionP0<Dimension, DataType>& p,
-           const DiscreteFunctionP0<Dimension, DataType>& gamma)
-{
-  using MeshType       = Mesh<Connectivity<Dimension>>;
-  std::shared_ptr mesh = std::dynamic_pointer_cast<const MeshType>(rho.mesh());
-
-  DiscreteFunctionP0<Dimension, DataType> sound_speed{mesh};
-
-  parallel_for(
-    mesh->numberOfCells(),
-    PUGS_LAMBDA(CellId cell_id) { sound_speed[cell_id] = std::sqrt(gamma[cell_id] * p[cell_id] / rho[cell_id]); });
-
-  return std::make_shared<DiscreteFunctionP0<Dimension, DataType>>(sound_speed);
-}
-
-std::shared_ptr<IDiscreteFunction>
-soundSpeed(const std::shared_ptr<const IDiscreteFunction>& rho,
-           const std::shared_ptr<const IDiscreteFunction>& p,
-           const std::shared_ptr<const IDiscreteFunction>& gamma)
-{
-  std::shared_ptr<const IMesh> mesh = getCommonMesh({rho, p, gamma});
-  if (not mesh.use_count()) {
-    throw NormalError("rho, p and gamma are not defined on the same mesh");
-  }
-
-  switch (mesh->dimension()) {
-  case 1: {
-    return soundSpeed(dynamic_cast<const DiscreteFunctionP0<1, double>&>(*rho),
-                      dynamic_cast<const DiscreteFunctionP0<1, double>&>(*p),
-                      dynamic_cast<const DiscreteFunctionP0<1, double>&>(*gamma));
-  }
-  case 2: {
-    return soundSpeed(dynamic_cast<const DiscreteFunctionP0<2, double>&>(*rho),
-                      dynamic_cast<const DiscreteFunctionP0<2, double>&>(*p),
-                      dynamic_cast<const DiscreteFunctionP0<2, double>&>(*gamma));
-  }
-  case 3: {
-    return soundSpeed(dynamic_cast<const DiscreteFunctionP0<3, double>&>(*rho),
-                      dynamic_cast<const DiscreteFunctionP0<3, double>&>(*p),
-                      dynamic_cast<const DiscreteFunctionP0<3, double>&>(*gamma));
-  }
-  default: {
-    throw UnexpectedError("invalid mesh dimension");
-  }
-  }
-}
-
-template <size_t Dimension, typename DataType>
-std::shared_ptr<IDiscreteFunction>
-epsilonFromRhoPGamma(const DiscreteFunctionP0<Dimension, DataType>& rho,
-                     const DiscreteFunctionP0<Dimension, DataType>& p,
-                     const DiscreteFunctionP0<Dimension, DataType>& gamma)
-{
-  using MeshType       = Mesh<Connectivity<Dimension>>;
-  std::shared_ptr mesh = std::dynamic_pointer_cast<const MeshType>(rho.mesh());
-
-  DiscreteFunctionP0<Dimension, DataType> epsilon{mesh};
-
-  parallel_for(
-    mesh->numberOfCells(),
-    PUGS_LAMBDA(CellId cell_id) { epsilon[cell_id] = p[cell_id] / ((gamma[cell_id] - 1) * rho[cell_id]); });
-
-  return std::make_shared<DiscreteFunctionP0<Dimension, DataType>>(epsilon);
-}
-
-std::shared_ptr<IDiscreteFunction>
-epsilonFromRhoPGamma(const std::shared_ptr<const IDiscreteFunction>& rho,
-                     const std::shared_ptr<const IDiscreteFunction>& p,
-                     const std::shared_ptr<const IDiscreteFunction>& gamma)
-{
-  std::shared_ptr<const IMesh> mesh = getCommonMesh({rho, p, gamma});
-  if (not mesh.use_count()) {
-    throw NormalError("rho, p and gamma are not defined on the same mesh");
-  }
-
-  switch (mesh->dimension()) {
-  case 1: {
-    return epsilonFromRhoPGamma(dynamic_cast<const DiscreteFunctionP0<1, double>&>(*rho),
-                                dynamic_cast<const DiscreteFunctionP0<1, double>&>(*p),
-                                dynamic_cast<const DiscreteFunctionP0<1, double>&>(*gamma));
-  }
-  case 2: {
-    return epsilonFromRhoPGamma(dynamic_cast<const DiscreteFunctionP0<2, double>&>(*rho),
-                                dynamic_cast<const DiscreteFunctionP0<2, double>&>(*p),
-                                dynamic_cast<const DiscreteFunctionP0<2, double>&>(*gamma));
-  }
-  case 3: {
-    return epsilonFromRhoPGamma(dynamic_cast<const DiscreteFunctionP0<3, double>&>(*rho),
-                                dynamic_cast<const DiscreteFunctionP0<3, double>&>(*p),
-                                dynamic_cast<const DiscreteFunctionP0<3, double>&>(*gamma));
-  }
-  default: {
-    throw UnexpectedError("invalid mesh dimension");
-  }
-  }
-}
-
-template <size_t Dimension, typename DataType>
-std::shared_ptr<IDiscreteFunction>
-pFromRhoEpsilonGamma(const DiscreteFunctionP0<Dimension, DataType>& rho,
-                     const DiscreteFunctionP0<Dimension, DataType>& epsilon,
-                     const DiscreteFunctionP0<Dimension, DataType>& gamma)
-{
-  using MeshType       = Mesh<Connectivity<Dimension>>;
-  std::shared_ptr mesh = std::dynamic_pointer_cast<const MeshType>(rho.mesh());
-
-  DiscreteFunctionP0<Dimension, DataType> p{mesh};
-
-  parallel_for(
-    mesh->numberOfCells(),
-    PUGS_LAMBDA(CellId cell_id) { p[cell_id] = ((gamma[cell_id] - 1) * rho[cell_id]) * epsilon[cell_id]; });
-
-  return std::make_shared<DiscreteFunctionP0<Dimension, DataType>>(p);
-}
-
-std::shared_ptr<IDiscreteFunction>
-pFromRhoEpsilonGamma(const std::shared_ptr<const IDiscreteFunction>& rho,
-                     const std::shared_ptr<const IDiscreteFunction>& epsilon,
-                     const std::shared_ptr<const IDiscreteFunction>& gamma)
-{
-  std::shared_ptr<const IMesh> mesh = getCommonMesh({rho, epsilon, gamma});
-  if (not mesh.use_count()) {
-    throw NormalError("rho, epsilon and gamma are not defined on the same mesh");
-  }
-
-  switch (mesh->dimension()) {
-  case 1: {
-    return pFromRhoEpsilonGamma(dynamic_cast<const DiscreteFunctionP0<1, double>&>(*rho),
-                                dynamic_cast<const DiscreteFunctionP0<1, double>&>(*epsilon),
-                                dynamic_cast<const DiscreteFunctionP0<1, double>&>(*gamma));
-  }
-  case 2: {
-    return pFromRhoEpsilonGamma(dynamic_cast<const DiscreteFunctionP0<2, double>&>(*rho),
-                                dynamic_cast<const DiscreteFunctionP0<2, double>&>(*epsilon),
-                                dynamic_cast<const DiscreteFunctionP0<2, double>&>(*gamma));
-  }
-  case 3: {
-    return pFromRhoEpsilonGamma(dynamic_cast<const DiscreteFunctionP0<3, double>&>(*rho),
-                                dynamic_cast<const DiscreteFunctionP0<3, double>&>(*epsilon),
-                                dynamic_cast<const DiscreteFunctionP0<3, double>&>(*gamma));
-  }
-  default: {
-    throw UnexpectedError("invalid mesh dimension");
-  }
-  }
-}
-
-template <size_t Dimension, typename DataType>
-std::shared_ptr<IDiscreteFunction>
-totalEnergyFromEpsilonU(const DiscreteFunctionP0<Dimension, DataType>& epsilon,
-                        const DiscreteFunctionP0<Dimension, TinyVector<Dimension, DataType>>& u)
-{
-  using MeshType       = Mesh<Connectivity<Dimension>>;
-  std::shared_ptr mesh = std::dynamic_pointer_cast<const MeshType>(epsilon.mesh());
-
-  DiscreteFunctionP0<Dimension, DataType> E{mesh};
-
-  parallel_for(
-    mesh->numberOfCells(),
-    PUGS_LAMBDA(CellId cell_id) { E[cell_id] = epsilon[cell_id] + 0.5 * dot(u[cell_id], u[cell_id]); });
-
-  return std::make_shared<DiscreteFunctionP0<Dimension, DataType>>(epsilon);
-}
-
-std::shared_ptr<IDiscreteFunction>
-totalEnergyFromEpsilonU(const std::shared_ptr<const IDiscreteFunction>& epsilon,
-                        const std::shared_ptr<const IDiscreteFunction>& u)
-{
-  std::shared_ptr<const IMesh> mesh = getCommonMesh({epsilon, u});
-  if (not mesh.use_count()) {
-    throw NormalError("epsilon and u are not defined on the same mesh");
-  }
-
-  switch (mesh->dimension()) {
-  case 1: {
-    return totalEnergyFromEpsilonU(dynamic_cast<const DiscreteFunctionP0<1, double>&>(*epsilon),
-                                   dynamic_cast<const DiscreteFunctionP0<1, TinyVector<1, double>>&>(*u));
-  }
-  case 2: {
-    return totalEnergyFromEpsilonU(dynamic_cast<const DiscreteFunctionP0<2, double>&>(*epsilon),
-                                   dynamic_cast<const DiscreteFunctionP0<2, TinyVector<2, double>>&>(*u));
-  }
-  case 3: {
-    return totalEnergyFromEpsilonU(dynamic_cast<const DiscreteFunctionP0<3, double>&>(*epsilon),
-                                   dynamic_cast<const DiscreteFunctionP0<3, TinyVector<3, double>>&>(*u));
-  }
-  default: {
-    throw UnexpectedError("invalid mesh dimension");
-  }
-  }
-}
-
-template <size_t Dimension, typename DataType>
-std::shared_ptr<IDiscreteFunction>
-epsilonFromTotalEnergyU(const DiscreteFunctionP0<Dimension, DataType>& E,
-                        const DiscreteFunctionP0<Dimension, TinyVector<Dimension, DataType>>& u)
-{
-  using MeshType       = Mesh<Connectivity<Dimension>>;
-  std::shared_ptr mesh = std::dynamic_pointer_cast<const MeshType>(u.mesh());
-
-  DiscreteFunctionP0<Dimension, DataType> epsilon{mesh};
-
-  parallel_for(
-    mesh->numberOfCells(),
-    PUGS_LAMBDA(CellId cell_id) { epsilon[cell_id] = E[cell_id] - 0.5 * dot(u[cell_id], u[cell_id]); });
-
-  return std::make_shared<DiscreteFunctionP0<Dimension, DataType>>(epsilon);
-}
-
-std::shared_ptr<IDiscreteFunction>
-epsilonFromTotalEnergyU(const std::shared_ptr<const IDiscreteFunction>& E,
-                        const std::shared_ptr<const IDiscreteFunction>& u)
-{
-  std::shared_ptr<const IMesh> mesh = getCommonMesh({E, u});
-  if (not mesh.use_count()) {
-    throw NormalError("E and u are not defined on the same mesh");
-  }
-
-  switch (mesh->dimension()) {
-  case 1: {
-    return epsilonFromTotalEnergyU(dynamic_cast<const DiscreteFunctionP0<1, double>&>(*E),
-                                   dynamic_cast<const DiscreteFunctionP0<1, TinyVector<1, double>>&>(*u));
-  }
-  case 2: {
-    return epsilonFromTotalEnergyU(dynamic_cast<const DiscreteFunctionP0<2, double>&>(*E),
-                                   dynamic_cast<const DiscreteFunctionP0<2, TinyVector<2, double>>&>(*u));
-  }
-  case 3: {
-    return epsilonFromTotalEnergyU(dynamic_cast<const DiscreteFunctionP0<3, double>&>(*E),
-                                   dynamic_cast<const DiscreteFunctionP0<3, TinyVector<3, double>>&>(*u));
-  }
-  default: {
-    throw UnexpectedError("invalid mesh dimension");
-  }
-  }
-}
-
-}   // namespace perfect_gas
diff --git a/src/scheme/PerfectGas.hpp b/src/scheme/PerfectGas.hpp
deleted file mode 100644
index fb7b9d212..000000000
--- a/src/scheme/PerfectGas.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef PERFECT_GAS_HPP
-#define PERFECT_GAS_HPP
-
-#include <scheme/IDiscreteFunction.hpp>
-
-namespace perfect_gas
-{
-std::shared_ptr<IDiscreteFunction> soundSpeed(const std::shared_ptr<const IDiscreteFunction>& rho,
-                                              const std::shared_ptr<const IDiscreteFunction>& p,
-                                              const std::shared_ptr<const IDiscreteFunction>& gamma);
-
-std::shared_ptr<IDiscreteFunction> epsilonFromRhoPGamma(const std::shared_ptr<const IDiscreteFunction>& rho,
-                                                        const std::shared_ptr<const IDiscreteFunction>& p,
-                                                        const std::shared_ptr<const IDiscreteFunction>& gamma);
-
-std::shared_ptr<IDiscreteFunction> pFromRhoEpsilonGamma(const std::shared_ptr<const IDiscreteFunction>& rho,
-                                                        const std::shared_ptr<const IDiscreteFunction>& epsilon,
-                                                        const std::shared_ptr<const IDiscreteFunction>& gamma);
-
-// This is a temporary function
-// Todo: TO REMOVE
-std::shared_ptr<IDiscreteFunction> totalEnergyFromEpsilonU(const std::shared_ptr<const IDiscreteFunction>& epsilon,
-                                                           const std::shared_ptr<const IDiscreteFunction>& u);
-
-// This is a temporary function
-// Todo: TO REMOVE
-std::shared_ptr<IDiscreteFunction> epsilonFromTotalEnergyU(const std::shared_ptr<const IDiscreteFunction>& E,
-                                                           const std::shared_ptr<const IDiscreteFunction>& u);
-
-}   // namespace perfect_gas
-
-#endif   // PERFECT_GAS_HPP
-- 
GitLab