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:
@@ -3,6 +3,10 @@ module;
|
||||
#include <concepts>
|
||||
#include <string_view>
|
||||
|
||||
#ifndef MEAN_FIELD_UNIFORM_POLYNOMIAL_ORDER_INCREMENT
|
||||
#define MEAN_FIELD_UNIFORM_POLYNOMIAL_ORDER_INCREMENT 0
|
||||
#endif
|
||||
|
||||
export module mean_field:field.registry;
|
||||
|
||||
export import :field.base;
|
||||
@@ -10,13 +14,16 @@ export import :quadrature.policy;
|
||||
export import :utils.domain;
|
||||
|
||||
export namespace mean_field::field {
|
||||
inline constexpr int uniformPolynomialOrderIncrement = MEAN_FIELD_UNIFORM_POLYNOMIAL_ORDER_INCREMENT;
|
||||
static_assert(uniformPolynomialOrderIncrement >= 0);
|
||||
|
||||
// =========================================================================
|
||||
// Density
|
||||
// =========================================================================
|
||||
|
||||
struct Density {
|
||||
static constexpr std::string_view name = "density";
|
||||
static constexpr int scalarOrder = 2;
|
||||
static constexpr int scalarOrder = 2 + uniformPolynomialOrderIncrement;
|
||||
|
||||
using Support = DomainSupport<utils::domain::Stellar>;
|
||||
|
||||
@@ -79,8 +86,8 @@ export namespace mean_field::field {
|
||||
struct Gravity {
|
||||
static constexpr std::string_view name = "gravity";
|
||||
|
||||
static constexpr int potentialOrder = 2;
|
||||
static constexpr int fluxOrder = 2;
|
||||
static constexpr int potentialOrder = 2 + uniformPolynomialOrderIncrement;
|
||||
static constexpr int fluxOrder = 2 + uniformPolynomialOrderIncrement;
|
||||
|
||||
using Support = DomainSupport<utils::domain::All>;
|
||||
|
||||
@@ -147,7 +154,7 @@ export namespace mean_field::field {
|
||||
|
||||
struct Displacement {
|
||||
static constexpr std::string_view name = "displacement";
|
||||
static constexpr int vectorOrder = 3;
|
||||
static constexpr int vectorOrder = 3 + uniformPolynomialOrderIncrement;
|
||||
|
||||
using Support = DomainSupport<utils::domain::All>;
|
||||
|
||||
@@ -229,7 +236,7 @@ export namespace mean_field::field {
|
||||
|
||||
struct Enthalpy {
|
||||
static constexpr std::string_view name = "specific_enthalpy";
|
||||
static constexpr int scalarOrder = 3;
|
||||
static constexpr int scalarOrder = 3 + uniformPolynomialOrderIncrement;
|
||||
|
||||
using Support = DomainSupport<utils::domain::Stellar>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user