feat(surface): major work on implementing surface constraints in a presciption agnostic manner
This commit is contained in:
@@ -15,7 +15,7 @@ namespace mean_field::models::structure {
|
||||
validate();
|
||||
}
|
||||
|
||||
const eos::EquationOfState &PolytropicStructure::equationOfState() const noexcept {
|
||||
const eos::Polytrope &PolytropicStructure::equationOfState() const noexcept {
|
||||
return m_equationOfState;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,9 @@ namespace mean_field::models::structure {
|
||||
const double polytropicIndex = m_equationOfState.polytropic_index();
|
||||
const std::vector<LaneEmdenPoint> laneEmdenSolution = solveLaneEmden(polytropicIndex);
|
||||
const double surfaceCoordinate = laneEmdenSolution.back().coordinate;
|
||||
const double centralEnthalpy = m_equationOfState.enthalpy_from_density(request.centralDensity);
|
||||
const double centralEnthalpy =
|
||||
eos::evaluate<eos::quantity::SpecificEnthalpy>(m_equationOfState, eos::DensityValue{request.centralDensity})
|
||||
.value();
|
||||
const double radialScaleSquared =
|
||||
centralEnthalpy / (4.0 * std::numbers::pi_v<double> * mean_field::utils::G * request.centralDensity);
|
||||
|
||||
@@ -61,11 +63,12 @@ namespace mean_field::models::structure {
|
||||
const double dimensionlessRadius = sampleFraction * surfaceCoordinate;
|
||||
const double laneEmdenValue =
|
||||
interpolateLaneEmdenValue(laneEmdenSolution, dimensionlessRadius, interpolationIndex);
|
||||
const double density = request.centralDensity * std::pow(laneEmdenValue, polytropicIndex);
|
||||
const double density = request.centralDensity * std::pow(laneEmdenValue, polytropicIndex);
|
||||
|
||||
seed.radius(sampleIndex) = radialScale * dimensionlessRadius;
|
||||
seed.density(sampleIndex) = density;
|
||||
seed.enthalpy(sampleIndex) = m_equationOfState.enthalpy_from_density(density);
|
||||
seed.radius(sampleIndex) = radialScale * dimensionlessRadius;
|
||||
seed.density(sampleIndex) = density;
|
||||
seed.enthalpy(sampleIndex) =
|
||||
eos::evaluate<eos::quantity::SpecificEnthalpy>(m_equationOfState, eos::DensityValue{density}).value();
|
||||
}
|
||||
|
||||
seed.radius(0) = 0.0;
|
||||
|
||||
Reference in New Issue
Block a user