38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
module;
|
|
#include <mfem.hpp>
|
|
export module mean_field:model.structure.base;
|
|
export import :eos.runtime;
|
|
|
|
export namespace mean_field::models::structure {
|
|
struct StructureSeed {
|
|
mfem::Vector radius;
|
|
mfem::Vector density;
|
|
mfem::Vector enthalpy;
|
|
|
|
double stellarRadius;
|
|
double centralDensity;
|
|
double centralEnthalpy;
|
|
};
|
|
|
|
struct StructureSeedRequest {
|
|
double centralDensity;
|
|
int radialSampleCount{512};
|
|
};
|
|
|
|
class StructureBase {
|
|
public:
|
|
virtual ~StructureBase() = default;
|
|
|
|
[[nodiscard]] virtual eos::EquationOfStateView equationOfState() const noexcept = 0;
|
|
|
|
[[nodiscard]] virtual double targetMass() const noexcept = 0;
|
|
|
|
[[nodiscard]] virtual StructureSeed makeInitialSeed(const StructureSeedRequest &request) const = 0;
|
|
|
|
virtual void validate() const = 0;
|
|
|
|
protected:
|
|
StructureBase() = default;
|
|
};
|
|
} // namespace mean_field::models::structure
|