Skip to content
Snippets Groups Projects
Commit 1579367a authored by Alexandre Gangloff's avatar Alexandre Gangloff
Browse files

Create LocalDtHyperelasticSolver files

parent df6924b6
No related branches found
No related tags found
No related merge requests found
...@@ -16,6 +16,7 @@ add_library( ...@@ -16,6 +16,7 @@ add_library(
PolynomialReconstruction.cpp PolynomialReconstruction.cpp
Order2AcousticSolver.cpp Order2AcousticSolver.cpp
Order2HyperelasticSolver.cpp Order2HyperelasticSolver.cpp
Order2LocalDtHyperelasticSolver.cpp
) )
target_link_libraries( target_link_libraries(
......
This diff is collapsed.
#ifndef LOCAL_DT_HYPERELASTIC_SOLVER_HPP
#define LOCAL_DT_HYPERELASTIC_SOLVER_HPP
#include <mesh/MeshTraits.hpp>
#include <memory>
#include <tuple>
#include <vector>
class DiscreteFunctionVariant;
class IBoundaryConditionDescriptor;
class MeshVariant;
class ItemValueVariant;
class SubItemValuePerItemVariant;
class DiscreteFunctionVariant;
class Order2LocalDtHyperelasticSolverHandler
{
public:
enum class SolverType
{
Glace,
Eucclhyd
};
private:
struct IOrder2LocalDtHyperelasticSolver
{
virtual std::tuple<const std::shared_ptr<const ItemValueVariant>,
const std::shared_ptr<const SubItemValuePerItemVariant>>
compute_fluxes(
const SolverType& solver_type,
const std::shared_ptr<const DiscreteFunctionVariant>& rho,
const std::shared_ptr<const DiscreteFunctionVariant>& aL,
const std::shared_ptr<const DiscreteFunctionVariant>& aT,
const std::shared_ptr<const DiscreteFunctionVariant>& u,
const std::shared_ptr<const DiscreteFunctionVariant>& sigma,
const std::vector<std::shared_ptr<const IBoundaryConditionDescriptor>>& bc_descriptor_list) const = 0;
virtual std::tuple<std::shared_ptr<const MeshVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>>
apply_fluxes(const double& dt,
const std::shared_ptr<const DiscreteFunctionVariant>& rho,
const std::shared_ptr<const DiscreteFunctionVariant>& u,
const std::shared_ptr<const DiscreteFunctionVariant>& E,
const std::shared_ptr<const DiscreteFunctionVariant>& CG,
const std::shared_ptr<const ItemValueVariant>& ur,
const std::shared_ptr<const SubItemValuePerItemVariant>& Fjr) const = 0;
virtual std::tuple<std::shared_ptr<const MeshVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const MeshVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>>
apply(const SolverType& solver_type,
const double& dt1,
const size_t& q,
const std::shared_ptr<const DiscreteFunctionVariant>& rho1,
const std::shared_ptr<const DiscreteFunctionVariant>& rho2,
const std::shared_ptr<const DiscreteFunctionVariant>& u1,
const std::shared_ptr<const DiscreteFunctionVariant>& u2,
const std::shared_ptr<const DiscreteFunctionVariant>& E1,
const std::shared_ptr<const DiscreteFunctionVariant>& E2,
const std::shared_ptr<const DiscreteFunctionVariant>& CG1,
const std::shared_ptr<const DiscreteFunctionVariant>& CG2,
const std::shared_ptr<const DiscreteFunctionVariant>& aL1,
const std::shared_ptr<const DiscreteFunctionVariant>& aL2,
const std::shared_ptr<const DiscreteFunctionVariant>& aT1,
const std::shared_ptr<const DiscreteFunctionVariant>& aT2,
const std::shared_ptr<const DiscreteFunctionVariant>& sigma1,
const std::shared_ptr<const DiscreteFunctionVariant>& sigma2,
const std::vector<std::shared_ptr<const IBoundaryConditionDescriptor>>& bc_descriptor_list1,
const std::vector<std::shared_ptr<const IBoundaryConditionDescriptor>>& bc_descriptor_list2,
const double& mu,
const double& lambda) const = 0;
virtual std::tuple<std::shared_ptr<const MeshVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const MeshVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>,
std::shared_ptr<const DiscreteFunctionVariant>>
apply(const SolverType& solver_type,
const double& dt1,
const std::shared_ptr<const DiscreteFunctionVariant>& rho1,
const std::shared_ptr<const DiscreteFunctionVariant>& rho2,
const std::shared_ptr<const DiscreteFunctionVariant>& u1,
const std::shared_ptr<const DiscreteFunctionVariant>& u2,
const std::shared_ptr<const DiscreteFunctionVariant>& E1,
const std::shared_ptr<const DiscreteFunctionVariant>& E2,
const std::shared_ptr<const DiscreteFunctionVariant>& CG1,
const std::shared_ptr<const DiscreteFunctionVariant>& CG2,
const std::shared_ptr<const DiscreteFunctionVariant>& aL1,
const std::shared_ptr<const DiscreteFunctionVariant>& aL2,
const std::shared_ptr<const DiscreteFunctionVariant>& aT1,
const std::shared_ptr<const DiscreteFunctionVariant>& aT2,
const std::shared_ptr<const DiscreteFunctionVariant>& sigma1,
const std::shared_ptr<const DiscreteFunctionVariant>& sigma2,
const std::vector<std::shared_ptr<const IBoundaryConditionDescriptor>>& bc_descriptor_list1,
const std::vector<std::shared_ptr<const IBoundaryConditionDescriptor>>& bc_descriptor_list2,
const double& mu,
const double& lambda) const = 0;
IOrder2LocalDtHyperelasticSolver() = default;
IOrder2LocalDtHyperelasticSolver(IOrder2LocalDtHyperelasticSolver&&) = default;
IOrder2LocalDtHyperelasticSolver& operator=(IOrder2LocalDtHyperelasticSolver&&) = default;
virtual ~IOrder2LocalDtHyperelasticSolver() = default;
};
template <MeshConcept MeshType>
class Order2LocalDtHyperelasticSolver;
std::unique_ptr<IOrder2LocalDtHyperelasticSolver> m_hyperelastic_solver;
public:
const IOrder2LocalDtHyperelasticSolver&
solver() const
{
return *m_hyperelastic_solver;
}
Order2LocalDtHyperelasticSolverHandler(const std::shared_ptr<const MeshVariant>& mesh1,
const std::shared_ptr<const MeshVariant>& mesh2);
};
#endif // HYPERELASTIC_SOLVER_HPP
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment