What is the Monte Carlo Method for Simulating Neutron Transport using MPI in C?

  • Thread starter Thread starter Milentije
  • Start date Start date
  • Tags Tags
    Neutron Transport
AI Thread Summary
The discussion centers around resources for learning about Monte Carlo simulations in radiation transport, with several useful links provided, including introductory materials and historical papers on MCNP. A recommended book is "Monte Carlo Principles and Neutron Transport Problems" by Spanier and Gelbard, along with a shorter text by Carter and Cashwell. A user shares a simple C code for simulating neutron transport and seeks clarification on the use of a random number (u) in the simulation's calculations. The code aims to model particle interactions, including reflection, absorption, and transmission of neutrons. Assistance is requested to further develop and parallelize the code using MPI.
Milentije
Messages
47
Reaction score
0
Can anyone hepl me with this?I need some web resource,to start learning from scratch.
 
Engineering news on Phys.org
Try these to get started.

Introduction to Numerical Simulations in Radiation Transport
http://iron.nuc.berkeley.edu/%7Ebdwirth/Public/NE155/ne155.html
Notes in pdf
http://iron.nuc.berkeley.edu/%7Ebdwirth/Public/NE155/schedule.html
Several files are large.

Brief history of MCNP - Monte Carlo Neutron-Photon
http://library.lanl.gov/cgi-bin/getfile?00418730.pdf

LANL paper - A Monte Carlo Code for Particle Transport
http://www.fas.org/sgp/othergov/doe/lanl/pubs/00326727.pdf

Another historical perspective on MC -
http://library.lanl.gov/cgi-bin/getfile?00326867.pdf

MCNP site
http://mcnp-green.lanl.gov/index.html
http://mcnp-green.lanl.gov/v_r_refs.html
 
Last edited by a moderator:
Milentije said:
Can anyone hepl me with this?I need some web resource,to start learning from scratch.
Milentije,

A very good book on Monte Carlo is by Spanier and Gelbard;
"Monte Carlo Principles and Neutron Transport Problems"

There's also another short text by Carter and Cashwell.

Dr. Gregory Greenman
Physicist
 
Thanks Astronuc and Morbius,I have found the recources very usefull.
 
Hello friends, I am doing simple mc simulation for neutron transport.
The principle of random simulation is L=-(1/C)*ln(u), where u is a random number from the uniform distribution [0,1), and c is the total cross section (absorbed + scattered). Could you explain me what is the meaning of u, and how can I use it in my simulation?.
I wrote a simple code in c, which I have to parallel it in MPI:

#include "mpi.h"
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <stdbool.h>
#define PI 3.14159265
int main (int argc, char *argv[])
{
/* Simple "srand()" seed: just use "time()" */
unsigned int iseed = (unsigned int)time(NULL);
srand (iseed);

/*c = mean distance between neutron/atom interaction*/
/*cs = scattering component of c*/
/*cc = absorbing component of c*/
float c,cs,cc; /*mean distance between neutron/atom interaction*/
double h,l; /*thickness of the slab and length travelled*/
double u; /*uniform random number*/
double dd,d; /*direction of the neutron [0,pi]*/
double x; /*position particle in the plate*/
int n=10; /*number of samples*/
int bounce; /*boolean value*/
int i,r,b,t;
r=0; b=0; t=0; /*reflected,absorbed and transmited neutrons*/
/*generates randon values between 0 and 1*/
/*dd = (float) rand()/RAND_MAX;*/
for (i = 1; i <= n; i++)
{
x = 0.0;
d = 0.0;
dd = 0.0;
c = 5.5545;
cc = 0.0035;
cs = 5.551;
h = 10.00;
bounce = 1;
do {
dd = (float) rand()/RAND_MAX;
d=PI*dd;
/*generates randon values between 0 and 1*/
u = (float)rand()/RAND_MAX;
l = -(1/c)*log(u);
/*lenght traveled by the particle*/
x = x + l*cos(d);
//printf("value of x=%2.4f\n",x);
if (x < 0.0) /*reflected*/
{
r = r + 1;
bounce = 0;
// printf("reflec r= %d\n",r);
}
else {
if (x >= h) /*transmited*/
{
t = t+1;
bounce = 0;
// printf("trans t=%d\n",t);
}
else{
if (u < cc/c)
{
b = b+1;
bounce = 0;
// printf("absorbed b=%d\n",b);
}
else d = u * PI;
}
}/*end first else*/
} while (bounce = 1);
} /*end for*/
printf("Particles reflected = %d\n",dd);
printf("Particles absorbed = %d\n",b);
printf("Particles transmittedd = %d\n",b);
}/*end main*/


Please any help is more than welcome
 
Back
Top