feat(surface): surface deformation prescriptions
restricted the unknown state vector to surface deformation and implemented one prescription, NodalRadialSurface, while the full volumetric displacment field is reconstructed analytically from that. This reduced the number of degrees of freedom in the system by a factor of 80 while also removing many null vectors from the system.
This commit is contained in:
@@ -59,6 +59,19 @@ export namespace mean_field::utils::blocks {
|
||||
static inline constexpr geometry geometry_term{};
|
||||
};
|
||||
|
||||
struct surface_deformation final : field {
|
||||
struct parameters final : term {
|
||||
struct value final : value_block_base { };
|
||||
};
|
||||
|
||||
struct shape_equilibrium final : term {
|
||||
struct residual final : residual_block_base { };
|
||||
};
|
||||
|
||||
static inline constexpr parameters parameters_term{};
|
||||
static inline constexpr shape_equilibrium shape_equilibrium_term{};
|
||||
};
|
||||
|
||||
struct gravity final : field {
|
||||
struct gradient final : term {
|
||||
struct value final : value_block_base { };
|
||||
@@ -99,6 +112,7 @@ export namespace mean_field::utils::blocks {
|
||||
|
||||
inline constexpr density density_field{};
|
||||
inline constexpr displacement displacement_field{};
|
||||
inline constexpr surface_deformation surface_deformation_field{};
|
||||
inline constexpr gravity gravity_field{};
|
||||
inline constexpr enthalpy enthalpy_field{};
|
||||
inline constexpr barotropic_constant barotropic_constant_field{};
|
||||
@@ -422,6 +436,59 @@ export namespace mean_field::utils::blocks {
|
||||
density::mass::value,
|
||||
displacement::geometry::value>>;
|
||||
|
||||
// Root stellar-equilibrium coordinates:
|
||||
// [rho, q, g, Phi, h, C], where q parameterizes the stellar surface.
|
||||
// Full-volume displacement remains an internal coordinate of the child
|
||||
// operators above and is generated from q by the domain-deformation map.
|
||||
using surface_deformed_stellar_equilibrium_form = block_form<
|
||||
type_list<
|
||||
density::mass::value,
|
||||
surface_deformation::parameters::value,
|
||||
gravity::gradient::value,
|
||||
gravity::poisson::value,
|
||||
enthalpy::specific::value,
|
||||
barotropic_constant::mass_normalization::value>,
|
||||
type_list<
|
||||
gravity::gradient::residual,
|
||||
gravity::poisson::residual,
|
||||
density::mass::residual,
|
||||
surface_deformation::shape_equilibrium::residual,
|
||||
enthalpy::specific::residual,
|
||||
barotropic_constant::mass_normalization::residual>>;
|
||||
|
||||
using surface_deformed_stellar_equilibrium_jacobian_form = type_list<
|
||||
block_row<
|
||||
gravity::gradient::residual,
|
||||
gravity::gradient::value,
|
||||
gravity::poisson::value,
|
||||
surface_deformation::parameters::value>,
|
||||
block_row<
|
||||
gravity::poisson::residual,
|
||||
gravity::gradient::value,
|
||||
density::mass::value,
|
||||
surface_deformation::parameters::value>,
|
||||
block_row<
|
||||
density::mass::residual,
|
||||
density::mass::value,
|
||||
enthalpy::specific::value,
|
||||
surface_deformation::parameters::value>,
|
||||
block_row<
|
||||
surface_deformation::shape_equilibrium::residual,
|
||||
density::mass::value,
|
||||
surface_deformation::parameters::value,
|
||||
gravity::gradient::value,
|
||||
enthalpy::specific::value>,
|
||||
block_row<
|
||||
enthalpy::specific::residual,
|
||||
enthalpy::specific::value,
|
||||
gravity::poisson::value,
|
||||
surface_deformation::parameters::value,
|
||||
barotropic_constant::mass_normalization::value>,
|
||||
block_row<
|
||||
barotropic_constant::mass_normalization::residual,
|
||||
density::mass::value,
|
||||
surface_deformation::parameters::value>>;
|
||||
|
||||
// Columns: [d, h]
|
||||
// Rows: [R_d]
|
||||
using pressure_force_form = block_form<
|
||||
@@ -438,4 +505,8 @@ export namespace mean_field::utils::blocks {
|
||||
static_assert(valid_jacobian_form<
|
||||
barotropic_equilibrium_form,
|
||||
barotropic_equilibrium_jacobian_form>);
|
||||
|
||||
static_assert(valid_jacobian_form<
|
||||
surface_deformed_stellar_equilibrium_form,
|
||||
surface_deformed_stellar_equilibrium_jacobian_form>);
|
||||
} // namespace mean_field::utils::blocks
|
||||
|
||||
Reference in New Issue
Block a user