Conocimiento

Algoritmo para simular modelo material inhomogeneo

A diferencia del caso homogéneo la posición inicial de la partícula solo puede asumir un nodo especifico. Para un nodo inicial y dirección de propagación definida se puede generar un numero al azar entre 0 y 1 y comenzar a generar números de la serie

$P_{ij}=\displaystyle\sum_{k=i}^j \mu_k e^{-|k-i|\mu_k}$

hasta sobrepasar el numero al azar. Al ocurrir esto se habrá llegado al nodo en que ocurrirá la colisión. Por ello el código debe tener un loop de la forma

var rand = Math.random();  // random number
var p = 0; // start sum
var k = i; // start position
var dir = 1; // direction
while(p < rand){
p = p + mu[k]*Math.exp(-Math.abs(k-i)*mu[k]);
k = k + dir;
}
// k is the result node

Para que este código pueda funcionar adecuadamente debe:

  • definirse un rango en que mu tiene valores
  • debe incluirse una protección por si la partícula abandona el rango en que se definió el arreglo mu.

Código

(ID-description:[email protected]©20171215)