configuraciónes de SENSORES 1-1:06
KB/S kB/s
Sensor Inspector
4
ORIENTATION
android.sensor.orientation, #3 Continuous
Max Delay: 20000 us
Maximum Range: 360.0
#3 0.10 ms: 52.454 -4.586 3.357 a = 1
#3 0.10 ms: 52.432 -4.810 3.781 a = 1
#3 0.10 ms: 52.432 -4.810 3.781 a = 1
#3 0.10 ms: 52.171 -4.854 3.881 a = 1
#3 0.10 ms: 52.171 -4.854 3.881 a = 1
#3 0.10 ms: 52.157 -4.767 3.451 a = 1
#3 0.10 ms: 52.157 -4.767 3.451 a = 1
#3 0.10 ms: 52.515-4.654 3.050 a = 1
#3 0.10 ms: 52.515 -4.654 3.050 a = 1
#3 0.10 ms: 52.252 -4.605 3.127 a = 1
#3 0.10 ms: 52.252 -4.605 3.127 a = 1
#3 0.10 ms: 52.235 -5.112 3.337 a = 1
#3 0.10 ms: 52.235 -5.112 3.337 a = 1
#3 0.10 ms: 52.235 -5.558 2.446 a = 1
#3 0.10 ms: 52.235 -5.558 2.446 a = 1
#3 0.10 ms: 52.224 -5.474 0.550 a = 1
#3 0.10 ms: 52.224 -5.474 0.550 a = 1
#3 0.10 ms: 53.008 -3.162 -4.981 a = 1
#3 0.10 ms: 53.008 -3.162 -4.981 a = 1
#3 0.10 ms: 54.765 3.506 -2.506 a = 1
#3 0.10 ms: 54.765 3.506 -2.506 a = 1
#3 0.10 ms: 54.787 -1.580 3.785 a = 1
#3 0.10 ms: 54.787 -1.580 3.785 a = 1
#3 0.10 ms: 53.404 -6.522 11.425 a = 1
#3 0.10 ms: 53.404 -6.522 11.425 a = 1
#3 0.10 ms: 51.675 -10.606 11.819 a = 1
#3 0.10 ms: 51.675 -10.606 11.819 a = 1
#3 0.10 ms: 50.811 -13.520 5.777 a = 1
#3 0.10 ms: 50.811 -13.520 5.777 a = 1
#3 0.10 ms: 50.305 -9.549 9.663 a = 1
#3 0.10 ms: 50.305 -9.549 9.663 a = 1
#3 0.10 ms: 50.810 -8.847 8.650 a = 1
#3 0.10 ms: 50.810 -8.847 8.650 a = 1
#3 0.10 ms: 51.155 -8.315 8.841 a = 1
#3 0.10 ms: 51.155 -8.315 8.841 a = 1
#3 0.10 ms: 50.260 -9.624 16.237 a = 1
#3 0.10 ms: 50.260 -9.624 16.237 a = 1
#3 0.10 ms: 51.613 -6.570 -6.528 a = 1
#3 0.10 ms: 51.613 -6.570 -6.528 a = 1
HD
HD
38 1:10
KS kB/s
HD 4G HD 4G 38
Sensor Inspector
Linear Acceleration Sensor
android.sensor.linear_acceleration, #10
Continuous
Max Delay: 0 us
Maximum Range: 19.6133
#10 0.10
#10 0.
4
3
#10 0.
#10 0.10 ms: -0.139 -0.064 -0.115 a = 3
#10 0.10 ms: -0.067 -0.043 -0.497 a = 3
#10 0.10 ms: 0.110 -0.022 -0.509 a = 3
#10 0.10 ms: 0.194 0.010 -0.777 a = 3
#10 0.10 ms: -0.005 -0.036 -1.063 a = 3
#10 0.10 ms: -0.113 -0.052 -0.648 a = 3
#10 0.10 ms: -0.080 -0.080 -0.162 a = 3
#10 0.10 ms: 0.055 -0.176 0.099 a = 3
#10 0.10 ms: 0.193 -0.161 0.032 a = 3
#10 0.10 ms: 0.097 -0.058 -0.212 a = 3
#10 0.10 ms: 0.006 -0.001 -0.573 a = 3
#10 0.10 ms: -0.158 0.064 -0.799 a = 3
#10 0.10 ms: -0.201 0.100 -0.663 a = 3
#10 0.10 ms: 0.050 0.088 -0.523 a = 3
#10 0.10 ms: 0.196 -0.008 -0.262 a = 3
#10 0.10 ms: 0.270 -0.039 -0.032 a = 3
#10 0.10 ms: 0.411 -0.049 0.069 a = 3
#10 0.10 ms: 0.310 -0.142 0.078 a = 3
#10 0.10 ms: 0.154 -0.061 0.037 a = 3
#10 0.10 ms: -0.320 -0.009 0.071 a = 3
#10 0.10 ms: -0.378 -0.083 0.142 a = 3
#10 0.10 ms: -0.049 -0.137 0.019 a = 3
#10 0.10 ms: 0.066 -0.118 -0.216 a = 3
#10 0.10 ms: 0.153 -0.058 -0.316 a = 3
#10 0.10 ms: 0.216 0.062 -0.379 a = 3
#10 0.10 ms: 0.259 0.088 -0.522 a = 3
#10 0.10 ms: 0.222 0.052 -0.668 a = 3
#10 0.10 ms: 0.066 -0.041 -0.400 a = 3
#10 0.10 ms: -0.118 -0.037 -0.045 a = 3
#10 0.10 ms: -0.183 -0.135 0.098 a = 3
#10 0.10 ms: -0.307 -0.202 0.236 a = 3
#10 0.10 ms: -0.267 -0.108 0.195 a = 3
#10 0.10 ms: -0.344 0.048 0.021 a = 3
#10 0.10 ms: -0.584 0.155 -0.343 a = 3
#10 0.10 ms: -0.519 0.464 -0.681 a = 3
#10 0.10 ms: -1.103 0.740 -1.023 a = 3 kB/s
HD
4G 38
Sensor Inspector
Rotation Vector Sensor
android.sensor.rotation_vector, #11
Continuous
Max Delay: 0 us
Maximum Range: 1.0
#11 0.10
0906
4200.000
a = 3
#11 0.
4
+≡
×
00.000
a = 3
#11 0.
20
0.000
a = 3
#11 0.10 ms:
0.186
-0.328
-0.825
0.420
0.000
a = 3
#11 0.10 ms:
0.186
-0.328
-0.825
0.420
0.000
a = 3
#11 0.10 ms:
0.186
-0.328
-0.825
0.420
0.000
a = 3
#11 0.10 ms:
0.186
-0.328
-0.825
0.420 0.000
a = 3
#11 0.10 ms:
0.187
-0.328
-0.825
0.420
0.000
a = 3
#11 0.10 ms:
0.187
-0.328
-0.825
0.420
0.000
a = 3
#11 0.10 ms:
0.187
-0.328
-0.825
0.421
0.000
a = 3
#11 0.10 ms:
0.187
-0.328
-0.825
0.421
0.000
a = 3
#11 0.10 ms:
0.187
-0.328
-0.825
0.421
0.000
a = 3
#11 0.10 ms:
0.188
-0.328
-0.825
0.421
0.000
a = 3
#11 0.10 ms:
0.188
-0.328
-0.825
0.421
0.000 a = 3
#11 0.10 ms:
0.188
-0.328
-0.824
0.421
0.000
a = 3
#11 0.10 ms:
0.188
-0.328 -0.824
0.421
0.000
a = 3
#11 0.10 ms:
0.188
-0.328
-0.824
0.421
0.000
a = 3
#11 0.10 ms:
0.189
-0.327
-0.824
0.422
0.000
a = 3
#11 0.10 ms:
0.189
-0.327
-0.824
0.422
0.000
a = 3
#11 0.10 ms:
0.189
-0.327
-0.824
0.422
0.000
a = 3
#11 0.10 ms:
0.189
-0.327
-0.824
0.422
0.000
a = 3
#11 0.10 ms:
0.189
-0.327
-0.824
0.422
0.000
a = 3
#11 0.10 ms:
0.189
-0.327
-0.824
0.423
0.000
a = 3
#11 0.10 ms:
0.189
-0.327
-0.824
0.423
0.000
a = 3
#11 0.10 ms:
0.190
-0.326
-0.824
0.423
0.000
a = 3
#11 0.10 ms:
0.190
-0.326
-0.824
0.423
0.000
a = 3
#11 0.10 ms:
0.190 -0.326
-0.824
0.423
0.000 a = 3
#11 0.10 ms:
0.190
-0.326
-0.823
0.424
0.000 a = 3
#11 0.10 ms:
0.190
-0.326
-0.823 0.000 a = 3
0.424
#11 0.10 ms:
0.190
-0.326
-0.823
0.424
0.000
a = 3
#11 0.10 ms:
0.190
-0.326
-0.823
0.424
0.000
a = 3
#11 0.10 ms:
0.190
-0.326
-0.823
0.424
0.000
a = 3
#11 0.10 ms: 0.191
-0.325
-0.823
0.425
0.000
a = 3
#11 0.10 ms:
0.191
-0.325
-0.823
0.425
0.000
a = 3
#11 0.10 ms:
0.192
-0.324
-0.823
0.425
0.000
a = 3
#11 0.10 ms:
0.192
-0.324
-0.823
0.425
0.000
a = 3
#11 0.10 ms:
0.192
-0.324
-0.823
0.425
0.000
a = 3
#11 0.10 ms:
0.192
-0.324
-0.823
0.426
0.000
a = 3
#11 0.10 ms: 0.192
-0.324
-0.823
0.426
0.000
a = 3 kB/s
HD4G
HD
4G 37
Sensor Inspector
GeoMag Rotation Vector Sensor
android.sensor.geomagnetic_rotation_vector,
#20
Continuous
Max Delay: 0 us
#20 0.10
#20 0.
4
0050 0 5220.000
a = 3
十三
×
20.000
a = 3
22 0.000
a = 3
#20 0.
#20 0.10 ms: 0.151
-0.021
-0.853
0.499
0.000
a = 3
#20 0.10 ms: 0.151
-0.021
-0.853
0.499
0.000
a = 3
#20 0.10 ms: 0.151
-0.021
-0.853
0.499
0.000
a = 3
#20 0.10 ms:
0.151 -0.021
-0.853
0.499
0.000
a = 3
#20 0.10 ms:
0.155 -0.024
-0.838
0.523
0.000
a = 3
#20 0.10 ms:
0.155 -0.024
-0.838
0.523
0.000
a = 3
#20 0.10 ms:
0.155 -0.024
-0.838
0.523
0.000
a = 3
#20 0.10 ms:
0.155 -0.024
-0.838
0.523
0.000
a = 3
#20 0.10 ms:
0.158 -0.031
-0.841
0.517 0.000
a = 3
#20 0.10 ms:
0.158 -0.031 -0.841
0.517 0.000
a = 3
#20 0.10 ms:
0.158 -0.031
-0.841
0.517
0.000
a = 3
#20 0.10 ms:
0.158
-0.031
-0.841
0.517 0.000
a = 3
#20 0.10 ms:
0.155 -0.039 -0.848 0.506
0.000
a = 3
#20 0.10 ms:
0.155 -0.039
-0.848
0.506 0.000
a = 3
#20 0.10 ms:
0.155 -0.039
-0.848
0.506
0.000
a = 3
#20 0.10 ms:
0.155 -0.039 0.000 a = 3
-0.848
0.506
#20 0.10 ms:
0.145 -0.049
-0.853
0.499
0.000
#20 0.10 ms:
0.145 -0.049
-0.853
0.499
0.000
a = 3
#20 0.10 ms: 0.145
-0.049
-0.853
0.499
0.000
a = 3
#20 0.10 ms:
0.145
-0.049
-0.853
0.499
0.000
a = 3
#20 0.10 ms: 0.111
-0.048
-0.857
0.502
0.000
a = 3
#20 0.10 ms: 0.111 0.502 0.000 a = 3
-0.048
-0.857
#20 0.10 ms: 0.111
-0.048
-0.857
0.502 0.000
a = 3
#20 0.10 ms: 0.111 -0.048 -0.857 0.502 0.000 a = 3
#20 0.10 ms: 0.088
-0.042 -0.861
0.500 0.000 a = 3
#20 0.10 ms:
0.088 -0.042
-0.861
0.500 0.000 a = 3
#20 0.10 ms:
0.088 -0.042
-0.861
0.500 0.000 a = 3
#20 0.10 ms:
0.088
-0.042
-0.861
0.500
0.000
a = 3
#20 0.10 ms: -0.015
-0.037
-0.863
0.503
0.000
a = 3
#20 0.10 ms:
-0.015
-0.037
-0.863
0.503
0.000
a = 3
#20 0.10 ms:
-0.015
-0.037
-0.863
0.503
0.000
a = 3
#20 0.10 ms:
-0.015
-0.037
-0.863
0.503
0.000
a = 3
#20 0.10 ms:
-0.023
-0.036
-0.878
0.476
0.000
a = 3
#20 0.10 ms:
-0.023
-0.036
-0.878
0.476
0.000
a = 3
#20 0.10 ms:
-0.023
-0.036
-0.878
0.476
0.000
a = 3
#20 0.10 ms: -0.023
-0.036
-0.878
0.476
0.000
a = 3
a = 3 kB/s
HD
4G HD
537
Sensor Inspector
ACCELEROMETER
android.sensor.accelerometer, #1
Continuous
Max Delay: 80000 us
Maximum Range: 78.453606
#1 0.10
#1 0.1
#1 0.1
#1 0.10 ms: 0.603 6.805 5.908 a = 3
#1 0.10 ms: 0.550 6.848 5.884 a = 3
#1 0.10 ms: 0.452 6.786 5.999 a = 3
#1 0.10 ms: 0.426 6.767 6.097 a = 3
#1 0.10 ms: 0.273 6.798 6.322 a = 3
#1 0.10 ms: 0.179 6.798 6.526 a = 3
#1 0.10 ms: 0.246 6.820 6.526 a = 3
#1 0.10 ms: 0.357 6.805 6.361 a = 3
#1 0.10 ms: 0.397 6.774 6.179 a = 3
#1 0.10 ms: 0.424 6.712 6.076 a = 3
#1 0.10 ms: 0.304 6.669 6.081 a = 3
#1 0.10 ms: 0.103 6.652 6.291 a = 3
#1 0.10 ms: 0.014 6.659 6.684 a = 3
#1 0.10 ms: 0.040 6.688 6.832 a = 3
#1 0.10 ms: 0.060 6.674 6.765 a = 3
#1 0.10 ms: 0.048 6.566 6.753 a = 3
#1 0.10 ms: -0.081 6.621 6.947 a = 3
#1 0.10 ms: -0.229 6.681 7.199 a = 3
#1 0.10 ms: -0.296 6.717 7.445 a = 3
#1 0.10 ms: -0.241 6.750 7.455 a = 3
#1 0.10 ms: -0.200 6.702 7.388 a = 3
#1 0.10 ms: -0.117 6.575 7.244 a = 3
#1 0.10 ms: -0.035 6.446 7.089 a = 3
#1 0.10 ms: 0.038 6.377 7.031 a = 3
#1 0.10 ms: 0.105 6.310 7.101 a = 3
#1 0.10 ms: 0.119 6.324 7.285 a = 3
#1 0.10 ms: 0.014 6.398 7.503 a = 3
#1 0.10 ms: -0.054 6.451 7.488 a = 3
#1 0.10 ms: -0.073 6.492 7.292 a = 3
#1 0.10 ms: 0.002 6.468 7.096 a = 3
#1 0.10 ms: -0.040 6.542 6.986 a = 3
#1 0.10 ms: -0.196 6.614 6.808 a = 3
#1 0.10 ms: -0.088 6.501 6.741 a = 3
#1 0.10 ms: 0.057 6.219 6.727 a = 3
#1 0.10 ms: 0.340 5.989 6.770 a = 3
#1 0.10 ms: 0.922 5.608 6.971 a = 3 1:12
kB/s
HD
4G HD
4G 37
Sensor Inspector
MAGNETOMETER
android.sensor.magnetic_field, #2
Continuous
Max Delay: 200000 us
Maximum Range: 4912.0503
#2 0.19
#20.2
#2 0.20
#2 0.19 ms: 1.313 -14.775 15.338 a = 1
#2 0.19 ms: 0.656 -15.338 14.194 a = 1
#2 0.19 ms: 0.113 -16.163 12.094 a = 1
#2 0.19 ms: -0.319-16.988 9.038 a = 1
#2 0.20 ms: -0.713 -17.606 5.306 a = 1
#2 0.20 ms: -0.581 -18.075 1.406 a = 1
#2 0.20 ms: 0.188 -18.394 -2.344 a = 1
#2 0.20 ms: 1.069-18.619 -5.756 a = 1
#2 0.19 ms: 1.144-18.806 -8.775 a = 1
#2 0.19 ms: 1.538 -18.994-11.063 a = 1
#2 0.19 ms: 1.688 -19.256-12.731 a = 1
#2 0.19 ms: 1.669 -19.575-13.913 a = 1
#2 0.19 ms: 1.575 -19.988 -14.606 a = 1
#2 0.20 ms: 1.481 -20.438 -14.963 a = 1
#2 0.20 ms: 1.163 -20.850 -15.075 a = 1
#2 0.20 ms: 0.994 -21.244 -14.944 a = 1
#2 0.20 ms: 0.750 -21.544 -14.775 a = 1
#2 0.19 ms: 0.488 -21.769 -14.550 a = 1
#2 0.19 ms: 0.188 -21.919 -14.231 a = 1
#2 0.19 ms: -0.169 -22.050 -13.800 a = 1
#2 0.19 ms: -0.506 -22.144 -13.406 a = 1
#2 0.20 ms: -0.844 -22.238 -12.994 a = 1
#2 0.19 ms: -1.125 -22.313 -12.656 a = 1
#2 0.19 ms: -1.369 -22.388 -12.338 a = 1
#2 0.20 ms: -1.894 -22.425 -12.150 a = 1
#2 0.19 ms: -2.363 -22.425-12.056 a = 1
#2 0.20 ms: -2.513 -22.444-12.038 a = 1
#2 0.20 ms: -2.531 -22.444 -12.056 a = 1
#2 0.19 ms: -3.206 -22.350 -12.375 a = 1
#2 0.20 ms: -3.600 -22.256-12.713 a = 1
#2 0.20 ms: -3.619 -22.256-12.731 a = 1
#2 0.19 ms: -3.638 -22.256-12.769 a = 1
#2 0.20 ms: -3.638 -22.256 -12.806 a = 1
#2 0.19 ms: -3.638 -22.238 -12.844 a = 1
#2 0.19 ms: -3.863 -22.050 -13.294 a = 1
#2 0.20 ms: -4.500 -21.694 -13.856 a = 1
#2 0.19 ms: -5.044-21.394-14.381 a = 1 ----- STAR SENSORES MULTIPLES -----
Simulación Monte Carlo de transporte de fotones en medios turbios
Librería de alto rendimiento escrita en C++ con bindings de Python, diseñada para simular dispersión múltiple de luz incluyendo polarización, coherencia y Coherent Backscattering (CBS).
- Motor Monte Carlo vectorial con polarización completa (matrices de Jones / parámetros de Stokes)
- Coherent Backscattering (CBS) — cálculo del path reverso por reciprocidad
- Muestras multicapa — capas con diferentes propiedades ópticas apiladas en el eje z
- Múltiples funciones de fase — Mie, Henyey-Greenstein, Rayleigh, Rayleigh-Debye-Gans, Draine
- Solver de Mie completo — via Fortran 77 (MIEV0 de Wiscombe), con tablas precomputadas
- Detectores variados — campo cercano/lejano, fluencia, speckle, CBS, estadísticas
- Ejecución multi-hilo — paralelismo real con
std::thready merge de detectores - Interfaz Python — acceso zero-copy a resultados vía NumPy (buffer protocol)
| Componente | Tecnología |
|---|---|
| Núcleo computacional | C++23 |
| Solver de Mie | Fortran 77 (MIEV0) |
| Bindings Python | pybind11 |
| Build system | scikit-build-core + CMake |
| Paralelismo | std::thread |
- Python 3.10+
- Compilador C++23 (GCC 13+, Clang 16+, Apple Clang 15+)
- Compilador Fortran (gfortran)
- CMake 3.15+
git clone https://github.com/niaggar/luminis-mc.git
cd luminis-mc
pip install .Para desarrollo (editable):
pip install -e .Internamente,
scikit-build-coreinvoca CMake, que compila la librería Fortran de Mie (mie_fortran), el core C++ (_core_c) y el módulo Python (_core).
import luminis_mc as lmc
import numpy as np
# 1. Función de fase y medio dispersivo
phase = lmc.MiePhaseFunction(radius=0.5e-3, n_p=1.59, n_m=1.33, wl=0.633e-3)
medium = lmc.MieMedium(mu_a=0.01, mu_s=10.0, phase=phase,
radius=0.5e-3, n_particle=1.59, n_medium=1.33,
wavelength=0.633e-3)
# 2. Muestra (agua como solvente, una capa semi-infinita)
sample = lmc.Sample(n_medium=1.33)
sample.add_layer(medium, 0.0, float('inf'))
# 3. Láser
laser = lmc.Laser(wavelength=0.633e-3, n_medium=1.33)
# 4. Detector CBS en campo lejano
sensors = lmc.SensorsGroup()
det = sensors.add_detector(lmc.FarFieldCBSSensor(0.1, 6.28, 100, 1))
# 5. Configurar y ejecutar
config = lmc.SimConfig(n_photons=1_000_000, sample=sample,
laser=laser, detector=sensors)
config.n_threads = 8
config.track_reverse_paths = True
lmc.run_simulation_parallel(config)
# 6. Resultados
result = lmc.postprocess_farfield_cbs(det, 1_000_000)
enhancement = np.array(result.coherent.S0) / np.array(result.incoherent.S0)luminis-mc/
├── CMakeLists.txt # Build system (CMake + scikit-build)
├── pyproject.toml # Metadata del paquete Python
│
├── include/luminis/ # Headers C++ (interfaz pública)
│ ├── core/ # Photon, Laser, Medium, Sample, Detector, Simulation
│ ├── math/ # Vec3, Matrix, RNG, utilidades matemáticas
│ ├── sample/ # Funciones de fase, tablas de muestreo, MFP
│ ├── log/ # Logger singleton
│ └── mie/ # Interfaz al solver Mie (Fortran)
│
├── src/ # Implementaciones C++
│ ├── simulation.cpp # Loop principal de propagación
│ ├── detector.cpp # Todos los sensores (~1700 líneas)
│ ├── medium.cpp # Muestreo de scattering, matrices de Mie
│ ├── phase.cpp # Funciones de fase y muestreo condicional
│ └── mie/ # Solver de Mie (Fortran + wrapper C++)
│
├── python/
│ ├── python_module.cpp # Bindings pybind11
│ └── luminis_mc/ # Paquete Python
│ ├── __init__.py # Re-exporta todo desde _core
│ └── manager.py # Experiment y ResultsLoader
│
├── tests/ # Scripts de simulación (Python)
└── apps/ # Aplicaciones standalone C++
Laser → emit_photon() → [Propagación Monte Carlo] → Detectores → Resultados (NumPy)
- Configuración: se definen
PhaseFunction,ScatteringMedium,Sample,LaserySensorsGroup - Ejecución:
run_simulation_parallel()distribuye fotones entre hilos; cada hilo opera con detectores clonados (sin locks) - Propagación (
run_photon): para cada fotón se itera el ciclo step → detección → scattering → absorción - Merge: al finalizar, los detectores locales se fusionan en el principal
- Post-procesamiento: normalización por ángulo sólido y número de fotones
| Clase | Descripción |
|---|---|
RGDMedium |
Rayleigh-Gans-Debye (partículas pequeñas, fórmula analítica) |
MieMedium |
Mie completo (tablas precomputadas via MIEV0, sin restricción de tamaño) |
| Clase | Modelo |
|---|---|
UniformPhaseFunction |
Isotrópica |
HenyeyGreensteinPhaseFunction |
Parametrizada por |
RayleighPhaseFunction |
Rayleigh |
RayleighDebyePhaseFunction |
Rayleigh-Debye-Gans |
RayleighDebyeEMCPhaseFunction |
RDG con corrección EMC |
DrainePhaseFunction |
Draine ( |
MiePhaseFunction |
Mie exacta (tablas precalculadas) |
| Clase | Uso |
|---|---|
PhotonRecordSensor |
Snapshot individual por fotón (post-procesamiento en Python) |
PlanarFieldSensor |
Campo eléctrico complejo en plano |
PlanarFluenceSensor |
Stokes en plano |
FarFieldFluenceSensor |
Stokes en campo lejano |
FarFieldCBSSensor |
CBS en campo lejano — coherente + incoherente |
StatisticsSensor |
Histogramas configurables (scatterings, ángulos, tiempos) |
El fenómeno principal modelado por la librería. Para cada trayectoria forward, se calcula el path reverso usando el teorema de reciprocidad (FarFieldCBSSensor acumula:
-
Intensidad coherente:
$|E_f + E_r|^2$ -
Intensidad incoherente:
$|E_f|^2 + |E_r|^2$
El enhancement factor es
BSD 3-Clause — Copyright (c) 2025, Nicolas Aguilera