Quasi-Static Compliance PINN Network

Wave 5.2 Phase 3 separates angularly periodic TE from a bounded quasi-static elastic contribution. The family provides learned differential-residual and hard equation-embedded formulations while preserving explicit signed torque, effective stiffness, direction intercept, elastic prediction, and periodic components.

The implementation is a bounded theory-validation surface. Fitted stiffness must not be treated as a uniquely identified reducer property without the campaign’s held-out and initialization-stability evidence.

Quasi-static compliance and elastic-offset PINNs for Wave 5.2 Phase 3.

class scripts.models.quasi_static_compliance_pinn_network.QuasiStaticCompliancePinnNetwork(input_size, harmonic_index_list, condition_hidden_size, condition_latent_size, mean_hidden_size, output_size=1, formulation='C1', activation_name='Tanh', dropout_probability=0.0, use_layer_norm=False, minimum_stiffness_nm_per_deg=5000.0, maximum_stiffness_nm_per_deg=100000.0, initial_stiffness_nm_per_deg=27250.0, initial_forward_intercept_deg=-0.0217, initial_backward_intercept_deg=-0.0116, reference_temperature_deg_c=30.0, temperature_scale_deg_c=10.0, nonlinear_torque_scale_nm=400.0, maximum_nonlinear_amplitude_deg=0.02, torque_input_mode='nominal_magnitude')[source]

Bases: Module

Predict TE through periodic and quasi-static mean components.

C0 is the non-PINN learned-mean control. C1 through C3 expose a learned mean surface and a differentiable compliance residual with respect to signed torque. C4 and C5 embed the elastic equation directly in the forward path. Every formulation uses an explicit condition-dependent Fourier branch whose continuous-cycle mean is zero.

Parameters:
  • input_size (int)

  • harmonic_index_list (list[int])

  • condition_hidden_size (list[int])

  • condition_latent_size (int)

  • mean_hidden_size (list[int])

  • output_size (int)

  • formulation (str)

  • activation_name (str)

  • dropout_probability (float)

  • use_layer_norm (bool)

  • minimum_stiffness_nm_per_deg (float)

  • maximum_stiffness_nm_per_deg (float)

  • initial_stiffness_nm_per_deg (float)

  • initial_forward_intercept_deg (float)

  • initial_backward_intercept_deg (float)

  • reference_temperature_deg_c (float)

  • temperature_scale_deg_c (float)

  • nonlinear_torque_scale_nm (float)

  • maximum_nonlinear_amplitude_deg (float)

  • torque_input_mode (str)

SUPPORTED_FORMULATION_SET = {'C0', 'C1', 'C2', 'C3', 'C4', 'C5'}
SOFT_RESIDUAL_FORMULATION_SET = {'C1', 'C2', 'C3'}
HARD_EQUATION_FORMULATION_SET = {'C4', 'C5'}
__init__(input_size, harmonic_index_list, condition_hidden_size, condition_latent_size, mean_hidden_size, output_size=1, formulation='C1', activation_name='Tanh', dropout_probability=0.0, use_layer_norm=False, minimum_stiffness_nm_per_deg=5000.0, maximum_stiffness_nm_per_deg=100000.0, initial_stiffness_nm_per_deg=27250.0, initial_forward_intercept_deg=-0.0217, initial_backward_intercept_deg=-0.0116, reference_temperature_deg_c=30.0, temperature_scale_deg_c=10.0, nonlinear_torque_scale_nm=400.0, maximum_nonlinear_amplitude_deg=0.02, torque_input_mode='nominal_magnitude')[source]

Initialize one Phase 3 compliance formulation.

Parameters:
  • input_size (int) – Input width ordered as angle, speed, torque, temperature, and direction flag.

  • harmonic_index_list (list[int]) – Positive output orders in the periodic branch.

  • condition_hidden_size (list[int]) – Hidden widths of the condition encoder.

  • condition_latent_size (int) – Width of the causal condition embedding.

  • mean_hidden_size (list[int]) – Hidden widths of the learned mean surface.

  • output_size (int) – Scalar TE output count.

  • formulation (str) – One of C0 through C5.

  • activation_name (str) – Activation used by learned branches.

  • dropout_probability (float) – Hidden dropout probability.

  • use_layer_norm (bool) – Whether learned branches use layer normalization.

  • minimum_stiffness_nm_per_deg (float) – Strict lower stiffness bound.

  • maximum_stiffness_nm_per_deg (float) – Strict upper stiffness bound.

  • initial_stiffness_nm_per_deg (float) – Audit-backed initialization.

  • initial_forward_intercept_deg (float) – Forward zero-torque mean.

  • initial_backward_intercept_deg (float) – Backward zero-torque mean.

  • reference_temperature_deg_c (float) – Temperature-law reference.

  • temperature_scale_deg_c (float) – Temperature-law normalization scale.

  • nonlinear_torque_scale_nm (float) – Odd nonlinear compliance scale.

  • maximum_nonlinear_amplitude_deg (float) – Upper nonlinear amplitude bound.

  • torque_input_mode (str) – nominal_magnitude or measured_signed.

Return type:

None

set_normalization_statistics(normalization_statistics)[source]

Copy training-only normalization statistics into model buffers.

Parameters:

normalization_statistics (object)

Return type:

None

compute_signed_torque_tensor(input_tensor)[source]

Resolve measured-convention signed torque from causal inputs.

Parameters:

input_tensor (Tensor)

Return type:

Tensor

compute_direction_weight_tensor(input_tensor)[source]

Return differentiable forward and backward selector weights.

Parameters:

input_tensor (Tensor)

Return type:

tuple[Tensor, Tensor]

compute_effective_stiffness_tensor(input_tensor)[source]

Compute positive bounded stiffness for the active formulation.

Parameters:

input_tensor (Tensor)

Return type:

Tensor

compute_direction_intercept_tensor(input_tensor)[source]

Select the explicit zero-torque intercept by direction.

Parameters:

input_tensor (Tensor)

Return type:

Tensor

compute_nonlinear_amplitude_tensor(input_tensor)[source]

Select a nonnegative bounded nonlinear amplitude by direction.

Parameters:

input_tensor (Tensor)

Return type:

Tensor

compute_target_compliance_derivative_tensor(input_tensor)[source]

Compute the positive derivative prescribed by the physical law.

Parameters:

input_tensor (Tensor)

Return type:

Tensor

compute_hard_mean_prediction_deg(input_tensor)[source]

Evaluate the equation-embedded C4 or C5 physical mean.

Parameters:

input_tensor (Tensor)

Return type:

Tensor

compute_auxiliary_output_dictionary(input_tensor, normalized_input_tensor)[source]

Expose the complete inspectable Phase 3 decomposition.

Parameters:
  • input_tensor (Tensor)

  • normalized_input_tensor (Tensor)

Return type:

dict[str, Tensor]

compute_physics_residual_dictionary(input_tensor, normalized_input_tensor, maximum_collocation_points=256, maximum_boundary_conditions=16, target_mean_tensor=None, target_std_tensor=None)[source]

Compute target-free compliance, boundary, and periodic losses.

Parameters:
  • input_tensor (Tensor)

  • normalized_input_tensor (Tensor)

  • maximum_collocation_points (int)

  • maximum_boundary_conditions (int)

  • target_mean_tensor (Tensor | None)

  • target_std_tensor (Tensor | None)

Return type:

dict[str, Tensor]

forward_with_input_context(input_tensor, normalized_input_tensor)[source]

Predict normalized TE with raw physical context.

Parameters:
  • input_tensor (Tensor)

  • normalized_input_tensor (Tensor)

Return type:

Tensor

forward(normalized_input_tensor)[source]

Reconstruct raw context and predict from normalized inputs.

Parameters:

normalized_input_tensor (Tensor)

Return type:

Tensor