From 544249ae26d115c724f7719c990f013c842fda6a Mon Sep 17 00:00:00 2001 From: Aaron Fenyes Date: Mon, 3 Feb 2025 18:17:32 -0800 Subject: [PATCH] Simplify normalization routine We don't need to explicitly allocate scratch space. --- app-proto/src/assembly.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/app-proto/src/assembly.rs b/app-proto/src/assembly.rs index 28afb19..08914aa 100644 --- a/app-proto/src/assembly.rs +++ b/app-proto/src/assembly.rs @@ -381,23 +381,20 @@ impl Assembly { match elt.column_index { Some(column_index) => { // apply the deformation linearly - let rep_next = &*rep + motion_proj.column(column_index); + *rep += motion_proj.column(column_index); // project back onto the mass shell by contracting // toward the last coordinate axis - let q_sp = rep_next.fixed_rows::<3>(0).norm_squared(); - let half_q_lt = -2.0 * rep_next[3] * rep_next[4]; + let q_sp = rep.fixed_rows::<3>(0).norm_squared(); + let half_q_lt = -2.0 * rep[3] * rep[4]; let half_q_lt_sq = half_q_lt * half_q_lt; let scaling = half_q_lt + (q_sp + half_q_lt_sq).sqrt(); - rep.fixed_rows_mut::<4>(0).copy_from( - &(rep_next.fixed_rows::<4>(0) / scaling) - ); - rep[4] = rep_next[4]; + rep.fixed_rows_mut::<4>(0).scale_mut(1.0 / scaling); /* DEBUG */ // report self-product before and after projection console::log_1(&JsValue::from( - format!("Self-product of element representation\n After step: {}\n Scaling: {}\n After scaling: {}", rep_next.dot(&(&*Q * &rep_next)), scaling, rep.dot(&(&*Q * &*rep))) + format!("After scaling by {}, self-product of element representation is {}", scaling, rep.dot(&(&*Q * &*rep))) )); }, None => {