From b1743d48ff074dcf8a0e7ab3867c60d8a067d993 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Mon, 8 Jul 2024 16:11:49 +0100 Subject: [PATCH 01/23] Change line 235 in gaussian.rs under laser, resolve energy not conserve issue due to neglectance of chain rule in force gradient calculations --- src/laser/gaussian.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index 4da1d11f..248fdd11 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -232,7 +232,8 @@ pub fn get_gaussian_beam_intensity_gradient( let spot_size_squared = 2.0 * beam.e_radius.powf(2.0) * (1. + (z / beam.rayleigh_range).powf(2.0)); - let vector = -4. * (reference_frame.x_vector * x + reference_frame.y_vector * y) + let vector = -4. * (reference_frame.x_vector / semi_major_axis.powf(0.5) * x + reference_frame.y_vector * y * semi_major_axis.powf(0.5)) + // /semi_major_axis.powf(0.5) AND *semi_major_axis.powf(0.5) here accounts for the chain rule when calculation gradient force + beam.direction * z / (beam.rayleigh_range.powf(2.0) + z.powf(2.0)) * (- 2.0 * spot_size_squared + 4. * (x.powf(2.0) + y.powf(2.0))); let intensity = 2. * beam.power / PI / spot_size_squared From bf1ae700c99cc92fcc84981acf79c2ea400cd8b1 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 09:32:53 +0100 Subject: [PATCH 02/23] Revert to unit test --- src/laser/gaussian.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index 248fdd11..95a7c5a6 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -232,7 +232,8 @@ pub fn get_gaussian_beam_intensity_gradient( let spot_size_squared = 2.0 * beam.e_radius.powf(2.0) * (1. + (z / beam.rayleigh_range).powf(2.0)); - let vector = -4. * (reference_frame.x_vector / semi_major_axis.powf(0.5) * x + reference_frame.y_vector * y * semi_major_axis.powf(0.5)) + let vector = -4. * (reference_frame.x_vector * x + reference_frame.y_vector * y) + //let vector = -4. * (reference_frame.x_vector / semi_major_axis.powf(0.5) * x + reference_frame.y_vector * y * semi_major_axis.powf(0.5)) // /semi_major_axis.powf(0.5) AND *semi_major_axis.powf(0.5) here accounts for the chain rule when calculation gradient force + beam.direction * z / (beam.rayleigh_range.powf(2.0) + z.powf(2.0)) * (- 2.0 * spot_size_squared + 4. * (x.powf(2.0) + y.powf(2.0))); From 0f7b8c92c7c76c086564a8b2bcbae7acd10b40d6 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 09:34:28 +0100 Subject: [PATCH 03/23] checked and revert revert --- src/laser/gaussian.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index 95a7c5a6..248fdd11 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -232,8 +232,7 @@ pub fn get_gaussian_beam_intensity_gradient( let spot_size_squared = 2.0 * beam.e_radius.powf(2.0) * (1. + (z / beam.rayleigh_range).powf(2.0)); - let vector = -4. * (reference_frame.x_vector * x + reference_frame.y_vector * y) - //let vector = -4. * (reference_frame.x_vector / semi_major_axis.powf(0.5) * x + reference_frame.y_vector * y * semi_major_axis.powf(0.5)) + let vector = -4. * (reference_frame.x_vector / semi_major_axis.powf(0.5) * x + reference_frame.y_vector * y * semi_major_axis.powf(0.5)) // /semi_major_axis.powf(0.5) AND *semi_major_axis.powf(0.5) here accounts for the chain rule when calculation gradient force + beam.direction * z / (beam.rayleigh_range.powf(2.0) + z.powf(2.0)) * (- 2.0 * spot_size_squared + 4. * (x.powf(2.0) + y.powf(2.0))); From 2c1fcc7ae7c8fde90061e6f52ae0222210fa5240 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 10:39:40 +0100 Subject: [PATCH 04/23] change a number in unit test --- src/laser/gaussian.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index 248fdd11..7c98e2b7 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -275,7 +275,7 @@ pub mod tests { let gradient = get_gaussian_beam_intensity_gradient(&beam, &pos1, &grf); assert_approx_eq!(gradient[0], -2.49605032e+13, 1e+8_f64); assert_approx_eq!(gradient[1], 0.0, 1e+9_f64); - assert_approx_eq!(gradient[2], -2.06143366e+08, 1e+6_f64); + assert_approx_eq!(gradient[2], -4.20876029e+08, 1e+6_f64); } #[test] From 9045593eaf8d0e47eab67edcfcda1f7877aae37f Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:13:04 +0100 Subject: [PATCH 05/23] Added an elliptical test --- src/laser/gaussian.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index 7c98e2b7..11d56f73 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -275,7 +275,31 @@ pub mod tests { let gradient = get_gaussian_beam_intensity_gradient(&beam, &pos1, &grf); assert_approx_eq!(gradient[0], -2.49605032e+13, 1e+8_f64); assert_approx_eq!(gradient[1], 0.0, 1e+9_f64); - assert_approx_eq!(gradient[2], -4.20876029e+08, 1e+6_f64); + assert_approx_eq!(gradient[2], -4.20876029e+08, 1e+6_f64); // Modified by Yijun on 2024/07/16 + } + + #[test] + fn test_get_elliptic_gaussian_beam_intensity_gradient() { + let beam = GaussianBeam { + direction: Vector3::z(), + intersection: Vector3::new(0.0, 0.0, 0.0), + e_radius: 70.71067812e-6, + power: 100.0, + rayleigh_range: calculate_rayleigh_range(&1064.0e-9, &70.71067812e-6), + ellipticity: 0.5, + }; + let pos1 = Position { + pos: Vector3::new(10.0e-6, 0.0, 30.0e-6), + }; + let grf = Frame { + x_vector: Vector3::x(), + y_vector: Vector3::y(), + }; + + let gradient = get_gaussian_beam_intensity_gradient(&beam, &pos1, &grf); + assert_approx_eq!(gradient[0], -2.49605032e+13, 1e+8_f64); + assert_approx_eq!(gradient[1], 0.0, 1e+9_f64); + assert_approx_eq!(gradient[2], -4.20876029e+08, 1e+6_f64); // Modified by Yijun on 2024/07/16 } #[test] From e260c1dbf2e11c56f73c7a6d73454e3b67563d52 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:15:42 +0100 Subject: [PATCH 06/23] Added a print line --- src/laser/gaussian.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index 11d56f73..b7d97ceb 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -297,6 +297,7 @@ pub mod tests { }; let gradient = get_gaussian_beam_intensity_gradient(&beam, &pos1, &grf); + println!("Gradient: x = {}, y = {}, z = {}", gradient[0], gradient[1], gradient[2]); assert_approx_eq!(gradient[0], -2.49605032e+13, 1e+8_f64); assert_approx_eq!(gradient[1], 0.0, 1e+9_f64); assert_approx_eq!(gradient[2], -4.20876029e+08, 1e+6_f64); // Modified by Yijun on 2024/07/16 From 636b29f8aa256cf4464a1d7f2a411e2c193f537d Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:16:21 +0100 Subject: [PATCH 07/23] changed coordinate --- src/laser/gaussian.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index b7d97ceb..19246e09 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -289,7 +289,7 @@ pub mod tests { ellipticity: 0.5, }; let pos1 = Position { - pos: Vector3::new(10.0e-6, 0.0, 30.0e-6), + pos: Vector3::new(10.0e-6, 10.0e-6, 30.0e-6), }; let grf = Frame { x_vector: Vector3::x(), From e023681603f4fb0bd2549cc72eb86e13514aab80 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:17:25 +0100 Subject: [PATCH 08/23] Added elliptic test --- src/laser/gaussian.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index 19246e09..bd654a23 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -298,9 +298,9 @@ pub mod tests { let gradient = get_gaussian_beam_intensity_gradient(&beam, &pos1, &grf); println!("Gradient: x = {}, y = {}, z = {}", gradient[0], gradient[1], gradient[2]); - assert_approx_eq!(gradient[0], -2.49605032e+13, 1e+8_f64); - assert_approx_eq!(gradient[1], 0.0, 1e+9_f64); - assert_approx_eq!(gradient[2], -4.20876029e+08, 1e+6_f64); // Modified by Yijun on 2024/07/16 + assert_approx_eq!(gradient[0], -2.11796152e+13, 1e+8_f64); + assert_approx_eq!(gradient[1], -2.82394869e+13, 1e+9_f64); + assert_approx_eq!(gradient[2], -4.03781010e+08, 1e+6_f64); // Modified by Yijun on 2024/07/16 } #[test] From e77163a8794ba063bf377d8caf9cb48f12759d8c Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:18:13 +0100 Subject: [PATCH 09/23] Added some comment --- src/laser/gaussian.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/laser/gaussian.rs b/src/laser/gaussian.rs index bd654a23..e0589024 100644 --- a/src/laser/gaussian.rs +++ b/src/laser/gaussian.rs @@ -278,7 +278,7 @@ pub mod tests { assert_approx_eq!(gradient[2], -4.20876029e+08, 1e+6_f64); // Modified by Yijun on 2024/07/16 } - #[test] + #[test] // added by Yijun on 2024/07/16 to test the gradient calculation for a beam with ellipticity fn test_get_elliptic_gaussian_beam_intensity_gradient() { let beam = GaussianBeam { direction: Vector3::z(), @@ -297,10 +297,9 @@ pub mod tests { }; let gradient = get_gaussian_beam_intensity_gradient(&beam, &pos1, &grf); - println!("Gradient: x = {}, y = {}, z = {}", gradient[0], gradient[1], gradient[2]); assert_approx_eq!(gradient[0], -2.11796152e+13, 1e+8_f64); assert_approx_eq!(gradient[1], -2.82394869e+13, 1e+9_f64); - assert_approx_eq!(gradient[2], -4.03781010e+08, 1e+6_f64); // Modified by Yijun on 2024/07/16 + assert_approx_eq!(gradient[2], -4.03781010e+08, 1e+6_f64); } #[test] From e14da16b0232f2b38d44b3626cc6e6753b6338e6 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:24:00 +0100 Subject: [PATCH 10/23] added printline --- src/laser/intensity_gradient.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index 395206b7..59875202 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -232,7 +232,7 @@ pub mod tests { .expect("Entity not found!") .contents[0] .gradient; - + println!("Gradient: x = {}, y = {}, z = {}", sim_result_gradient[0], sim_result_gradient[1], sim_result_gradient[2]); assert_approx_eq!(-8.4628e+7, sim_result_gradient[0], 1e+5_f64); assert_approx_eq!(-4.33992902e+13, sim_result_gradient[1], 1e+8_f64); assert_approx_eq!(-4.33992902e+13, sim_result_gradient[2], 1e+8_f64); From 1c1082ce051f0cfd295c84ffd2af108d44c3e79c Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:27:29 +0100 Subject: [PATCH 11/23] changed unit test a bit --- src/laser/intensity_gradient.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index 59875202..f6c5acaa 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -215,7 +215,7 @@ pub mod tests { let atom1 = test_world .create_entity() .with(Position { - pos: Vector3::new(20.0e-6, 20.0e-6, 20.0e-6), + pos: Vector3::new(20.0e-6, 25.0e-6, 20.0e-6), }) .with(LaserIntensityGradientSamplers { contents: [LaserIntensityGradientSampler::default(); From 1b5e517722c60d2a8e088d28986abb8ab47006ca Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:29:52 +0100 Subject: [PATCH 12/23] correct unit test --- src/laser/intensity_gradient.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index f6c5acaa..e8c1135f 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -233,8 +233,8 @@ pub mod tests { .contents[0] .gradient; println!("Gradient: x = {}, y = {}, z = {}", sim_result_gradient[0], sim_result_gradient[1], sim_result_gradient[2]); - assert_approx_eq!(-8.4628e+7, sim_result_gradient[0], 1e+5_f64); - assert_approx_eq!(-4.33992902e+13, sim_result_gradient[1], 1e+8_f64); - assert_approx_eq!(-4.33992902e+13, sim_result_gradient[2], 1e+8_f64); + assert_approx_eq!(-1.89173404e+08, sim_result_gradient[0], 1e+5_f64); + assert_approx_eq!(-4.14896130e+13, sim_result_gradient[1], 1e+8_f64); + assert_approx_eq!(-5.18620162e+13, sim_result_gradient[2], 1e+8_f64); } } From afdc309c96450d4bf956baf8db03adcedeb34d93 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:40:18 +0100 Subject: [PATCH 13/23] change axis to normal one see whatv happen --- src/laser/intensity_gradient.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index e8c1135f..5fc1afca 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -185,7 +185,7 @@ pub mod tests { test_world.register::(); let beam = GaussianBeam { - direction: Vector3::x(), + direction: Vector3::z(), intersection: Vector3::new(0.0, 0.0, 0.0), e_radius: 70.71067812e-6, power: 100.0, @@ -204,8 +204,8 @@ pub mod tests { }) .with(beam) .with(Frame { - x_vector: Vector3::y(), - y_vector: Vector3::z(), + x_vector: Vector3::x(), + y_vector: Vector3::y(), }) .with(DipoleLight { wavelength: 1064.0e-9, From 565466dc540d29d8a8a6c147e430cb213e069212 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:41:21 +0100 Subject: [PATCH 14/23] now zxy goes to xyz --- src/laser/intensity_gradient.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index 5fc1afca..e8c1135f 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -185,7 +185,7 @@ pub mod tests { test_world.register::(); let beam = GaussianBeam { - direction: Vector3::z(), + direction: Vector3::x(), intersection: Vector3::new(0.0, 0.0, 0.0), e_radius: 70.71067812e-6, power: 100.0, @@ -204,8 +204,8 @@ pub mod tests { }) .with(beam) .with(Frame { - x_vector: Vector3::x(), - y_vector: Vector3::y(), + x_vector: Vector3::y(), + y_vector: Vector3::z(), }) .with(DipoleLight { wavelength: 1064.0e-9, From d5aaecc98f8fa2caf6dcfac21bf9f2785b092b3f Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:41:51 +0100 Subject: [PATCH 15/23] go to xzy --- src/laser/intensity_gradient.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index e8c1135f..3e6d4e65 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -204,8 +204,8 @@ pub mod tests { }) .with(beam) .with(Frame { - x_vector: Vector3::y(), - y_vector: Vector3::z(), + x_vector: Vector3::z(), + y_vector: Vector3::y(), }) .with(DipoleLight { wavelength: 1064.0e-9, From 2fb359b71ed5701c80e6bdb727d1fa33f53ca30e Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:42:49 +0100 Subject: [PATCH 16/23] change back to xyz --- src/laser/intensity_gradient.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index 3e6d4e65..e8c1135f 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -204,8 +204,8 @@ pub mod tests { }) .with(beam) .with(Frame { - x_vector: Vector3::z(), - y_vector: Vector3::y(), + x_vector: Vector3::y(), + y_vector: Vector3::z(), }) .with(DipoleLight { wavelength: 1064.0e-9, From a1e57317c0c0c1cec2870bb3623ab50aa14946b2 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:50:14 +0100 Subject: [PATCH 17/23] goes to xxx --- src/laser/intensity_gradient.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index e8c1135f..1a64b9f6 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -204,8 +204,8 @@ pub mod tests { }) .with(beam) .with(Frame { - x_vector: Vector3::y(), - y_vector: Vector3::z(), + x_vector: Vector3::x(), + y_vector: Vector3::x(), }) .with(DipoleLight { wavelength: 1064.0e-9, From 17a7464233378f3935d4d2eec4354de8e9230df5 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:50:59 +0100 Subject: [PATCH 18/23] xyz --- src/laser/intensity_gradient.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index 1a64b9f6..e8c1135f 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -204,8 +204,8 @@ pub mod tests { }) .with(beam) .with(Frame { - x_vector: Vector3::x(), - y_vector: Vector3::x(), + x_vector: Vector3::y(), + y_vector: Vector3::z(), }) .with(DipoleLight { wavelength: 1064.0e-9, From abc7ce166a79057e68098b05bae59a626d762ab8 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 11:51:39 +0100 Subject: [PATCH 19/23] xzy --- src/laser/intensity_gradient.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index e8c1135f..3e6d4e65 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -204,8 +204,8 @@ pub mod tests { }) .with(beam) .with(Frame { - x_vector: Vector3::y(), - y_vector: Vector3::z(), + x_vector: Vector3::z(), + y_vector: Vector3::y(), }) .with(DipoleLight { wavelength: 1064.0e-9, From 0f7fd6207d566bf10daacb467cd84d74f5b021a4 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 15:30:50 +0100 Subject: [PATCH 20/23] correct unit test in intensity_gradient --- src/laser/intensity_gradient.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index 3e6d4e65..2b73e865 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -234,7 +234,7 @@ pub mod tests { .gradient; println!("Gradient: x = {}, y = {}, z = {}", sim_result_gradient[0], sim_result_gradient[1], sim_result_gradient[2]); assert_approx_eq!(-1.89173404e+08, sim_result_gradient[0], 1e+5_f64); - assert_approx_eq!(-4.14896130e+13, sim_result_gradient[1], 1e+8_f64); - assert_approx_eq!(-5.18620162e+13, sim_result_gradient[2], 1e+8_f64); + assert_approx_eq!(-5.18620162e+13, sim_result_gradient[1], 1e+8_f64); + assert_approx_eq!(-4.14896130e+13, sim_result_gradient[2], 1e+8_f64); } } From b7ed8dff44eb6622d07e84a4393d89d67073e29f Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 15:33:42 +0100 Subject: [PATCH 21/23] added comment --- src/laser/intensity_gradient.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/laser/intensity_gradient.rs b/src/laser/intensity_gradient.rs index 2b73e865..8a795fd5 100644 --- a/src/laser/intensity_gradient.rs +++ b/src/laser/intensity_gradient.rs @@ -173,7 +173,7 @@ pub mod tests { 1e+5_f64 ); } - #[test] + #[test] // modified by Yijun on 2024/07/16 fn test_sample_laser_intensity_gradient_again_system() { let mut test_world = World::new(); From 0827883cc043a9c5feed94448f0b71440b19e7f2 Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 16:29:16 +0100 Subject: [PATCH 22/23] Finish debug force.rs unit test --- src/dipole/force.rs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/dipole/force.rs b/src/dipole/force.rs index 233c0ca2..2c7cebfd 100644 --- a/src/dipole/force.rs +++ b/src/dipole/force.rs @@ -171,7 +171,7 @@ pub mod tests { intersection: Vector3::new(0.0, 0.0, 0.0), e_radius, power, - direction: Vector3::x(), + direction: Vector3::y(), rayleigh_range: crate::laser::gaussian::calculate_rayleigh_range(&1064.0e-9, &e_radius), ellipticity: 0.0, }; @@ -186,15 +186,15 @@ pub mod tests { initiated: true, }) .with(laser::frame::Frame { - x_vector: Vector3::y(), - y_vector: Vector3::z(), + x_vector: Vector3::z(), + y_vector: Vector3::x(), }) .build(); let gaussian_beam = GaussianBeam { intersection: Vector3::new(0.0, 0.0, 0.0), e_radius, power, - direction: Vector3::y(), + direction: Vector3::x(), rayleigh_range: crate::laser::gaussian::calculate_rayleigh_range(&1064.0e-9, &e_radius), ellipticity: 0.0, }; @@ -209,7 +209,7 @@ pub mod tests { initiated: true, }) .with(laser::frame::Frame { - x_vector: Vector3::x(), + x_vector: Vector3::y(), y_vector: Vector3::z(), }) .build(); @@ -218,7 +218,7 @@ pub mod tests { let atom1 = test_world .create_entity() .with(crate::atom::Position { - pos: Vector3::new(-1.0e-4, -1.0e-4, -2.0e-4), + pos: Vector3::new(-1.0e-4, -1.0e-4, 2.0e-4), }) .with(Force { force: Vector3::new(0.0, 0.0, 0.0), @@ -248,21 +248,23 @@ pub mod tests { //println!("force is: {}", sim_result_force); //println!("gradient 1 is: {}", sim_result_grad[0].gradient); //println!("gradient 2 is: {}", sim_result_grad[1].gradient); - + println!("force x is: {}", sim_result_force[0]); + println!("force y is: {}", sim_result_force[1]); + println!("force z is: {}", sim_result_force[2]); assert_approx_eq!( - 0.000000000000000000000000000000000127913190642808, + 0.00000000000000000000000000000000012749214960, sim_result_force[0], - 3e-46_f64 + 3e-40_f64 ); assert_approx_eq!( - 0.000000000000000000000000000000000127913190642808, + 0.00000000000000000000000000000000012749214960, sim_result_force[1], - 2e-46_f64 + 2e-40_f64 ); assert_approx_eq!( - 0.000000000000000000000000000000000511875188257342, + -0.0000000000000000000000000000000005101862262458, sim_result_force[2], - 2e-46_f64 + 2e-40_f64 ); } } From 128c2c88a6f3140a4c20e08669ee74e21cf012fc Mon Sep 17 00:00:00 2001 From: Yijun Tang Date: Tue, 16 Jul 2024 16:29:37 +0100 Subject: [PATCH 23/23] add comment --- src/dipole/force.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dipole/force.rs b/src/dipole/force.rs index 2c7cebfd..f58e12b7 100644 --- a/src/dipole/force.rs +++ b/src/dipole/force.rs @@ -151,7 +151,7 @@ pub mod tests { assert_approx_eq!(-3.11151847e-23, sim_result_force[2], 2e-24_f64); } - #[test] + #[test] // Modified by Yijun on 2024/07/16 fn test_apply_dipole_force_and_gradient_system() { let mut test_world = World::new();