Skip to content
 
 

Repository files navigation

Luminis-MC

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).


Características principales

  • 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::thread y merge de detectores
  • Interfaz Python — acceso zero-copy a resultados vía NumPy (buffer protocol)

Stack tecnológico

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

Instalación

Requisitos previos

  • Python 3.10+
  • Compilador C++23 (GCC 13+, Clang 16+, Apple Clang 15+)
  • Compilador Fortran (gfortran)
  • CMake 3.15+

Instalar desde fuente

git clone https://github.com/niaggar/luminis-mc.git
cd luminis-mc
pip install .

Para desarrollo (editable):

pip install -e .

Internamente, scikit-build-core invoca CMake, que compila la librería Fortran de Mie (mie_fortran), el core C++ (_core_c) y el módulo Python (_core).


Uso rápido

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)

Estructura del proyecto

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++

Arquitectura

Pipeline de simulación

Laser → emit_photon() → [Propagación Monte Carlo] → Detectores → Resultados (NumPy)
  1. Configuración: se definen PhaseFunction, ScatteringMedium, Sample, Laser y SensorsGroup
  2. Ejecución: run_simulation_parallel() distribuye fotones entre hilos; cada hilo opera con detectores clonados (sin locks)
  3. Propagación (run_photon): para cada fotón se itera el ciclo step → detección → scattering → absorción
  4. Merge: al finalizar, los detectores locales se fusionan en el principal
  5. Post-procesamiento: normalización por ángulo sólido y número de fotones

Medios dispersivos

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)

Funciones de fase

Clase Modelo
UniformPhaseFunction Isotrópica
HenyeyGreensteinPhaseFunction Parametrizada por $g$
RayleighPhaseFunction Rayleigh
RayleighDebyePhaseFunction Rayleigh-Debye-Gans
RayleighDebyeEMCPhaseFunction RDG con corrección EMC
DrainePhaseFunction Draine ($g$, $\alpha$)
MiePhaseFunction Mie exacta (tablas precalculadas)

Detectores

Clase Uso
PhotonRecordSensor Snapshot individual por fotón (post-procesamiento en Python)
PlanarFieldSensor Campo eléctrico complejo en plano $(x, y)$ — speckle
PlanarFluenceSensor Stokes en plano $(x, y, t)$ — fluencia espaciotemporal
FarFieldFluenceSensor Stokes en campo lejano $(\theta, \phi)$
FarFieldCBSSensor CBS en campo lejano — coherente + incoherente
StatisticsSensor Histogramas configurables (scatterings, ángulos, tiempos)

Coherent Backscattering (CBS)

El fenómeno principal modelado por la librería. Para cada trayectoria forward, se calcula el path reverso usando el teorema de reciprocidad ($Q \cdot T^\top \cdot Q$), evitando recalcular cada scattering intermedio. El detector FarFieldCBSSensor acumula:

  • Intensidad coherente: $|E_f + E_r|^2$
  • Intensidad incoherente: $|E_f|^2 + |E_r|^2$

El enhancement factor es $\eta(\theta) = I_\text{coh} / I_\text{incoh}$, con $\eta \to 2$ en backscattering exacto para medios conservadores.


Licencia

BSD 3-Clause — Copyright (c) 2025, Nicolas Aguilera

About

sensor de presión forceBrute aproximado letal forceBrute

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages