Is USRYIELD sufficient for getting all neutron properties?

Dear fluka experts,

I want to simulate ADS problem with 60 MeV proton beam impinging to PbBi target surrounded by a subcritical core using FLAIR. My work is to detect all primary neutrons that scatter by using fluscw.f to write down neutron properties including IJ, TXX, TYY, TZZ, WEE, XX, YY, ZZ, PLA into .txt file and ready to convert to hdf5 format for calculating as fix-source calculation in OPENMC.

On my fluscw.f, I have chosen yield estimator which I thought would give me all desired neutron properties, and other two cards, USRBIN and USRBDX cards in my input it would give me neutron fluence with unit neutrons/cm^2 per primary(which is neutron distribution in the area) and neutron fluence interval in energy from 1E-9 to 0.6 GeV at the target to target clad region respectively. Actually, in USRBDX output I want to plot from target to vacuum region but the result in tab. lis file columns 3 and 4 become zero values and can’t generate a plot so I decided to plot in the target region instead as shown in the input.

My questions are 1.Did I do it right to gather all neutron properties? I have read about PHYSICS card but I’m not sure is it needed or not, please give me some advice.
2.Why can’t I plot usrbdx output from target to vacuum area?

I have attached my ads.inp, my plot, and neutron properties in .txt file that I got below here.

Thanks for considering my problem.

ads_usxsuw_tab.lis (44.3 KB)
ads_prototype1.inp (2.6 KB)


Dear @thanapong

First of all, welcome to the FLUKA User Forum.

About your questions, let me start with the second one:

  • USRBDX scoring is a boundary crossing detector, meaning that it is used to score fluence or current crossing the boundary between two regions. These regions must be specified when defining the USRBDX scoring. I can see that in your input you are trying to get the fluence of neutrons going from region “TARGET” to region “VOID”, the problem is that these two regions do not share a boundary (they are not in contact), so there are no neutrons coming out from region “TARGET” entering directly in region “VOID”. All neutrons leaving “TARGET” must go through region “tarclad” or region “block” before they can reach region “VOID”.
    Also note that if you only score those neutrons going from region “tarclad” to “VOID” you will miss those going from “block” to “VOID”.

With respect to the neutron properties:

  • It is difficult to tell if you extracted correctly the properties you mention because you didn’t attached your fluscw.f routine, so I don’t know how is your implementation of this routine and I am not sure to what correspond the data in each column of your *TXT file.
    But in any case, if I understood correctly, you are interested in the neutrons escaping from your target cladding, so I would use the mgdraw.f routine ( and in particular its BXDRAW entry, which will be called every time a particle crosses a boundary provided that you have correctly included the USERDUMP card ( Note that you will need to customize this routine in order to implement your logic to identify those neutrons escaping from your region(s) of interest and to output any information you are interested in (you may also want to remove some of the code to avoid that unnecessary information is printed out). Maybe the follwing post is also interesting for you: Energy and angle of each particle escaping from the surface.
    Note that by doing this you will not need to include a USRYIELD scoring.


Dear @fogallar,

Thank you so much for your reply and sorry for the fluscw.f attachment. Would it be a bother if you check my fluscw.f ? so that I can give it a try to mgfraw.f if my fluscw.f isn’t correct.

And about my geometry, am I create it correctly? I have created this geometry by following the “spallation target” picture attached below(yellow is the target, blue is target clad, white is vacuum zone, and green is the coolant which I don’t determine in FLUKA). Does the “block” region need? If it is needed I think it will make the input more complex and I have to detect 2 points first is “tarclad” to “VOID” and the second one is “block” to “VOID” for all of the neutrons crossing or I just need to create one big region including all determined regions. Please correct my understanding.

spallation target
fluscw_forads.f (4.5 KB)

Thanks in advance,

Dear @thanapong,

About the user routine, I encourage you to try out the mgdraw.f routine. One can still use fluscw.f but it is targeted to modify the weight of scored quantities (which is not really your purpose) and could result in the waste of CPU time due to unnecessary calls to it.

Said that, I can see that there are a couple of problems with your routine.

  1. The particle directions cosines are Txx, Tyy and Tzz, no Txx, yy and zz. Probably there was a misunderstanding of the routine comments.

  2. You need to further filter your results. If you are interested in the neutrons coming out from region A and entering region B (where A and B are the region numbers), you need to add something like:

IF (IJ.EQ.8) THEN ! The particle number for neutrons is 8 
   IF ( IOLREG.EQ.A .AND. NREG.EQ.B ) THEN ! See routine comments for info 
      WRITE ... ! Write the info you need

If you take a look to the *.TXT file that you attached you will see in the first column (particle type) that you have not only neutrons (8), but also photons (7) and other particles ( you can check the particles number here: ). Similarly, you can also take a look to the particle coordinates to check if they are what you expect (make a plot for instance). If you were expecting only those particles leaving your target you will see that something is wrong, this is why you need to introduce the region filtering.

About your geometry, it looks fine. I don’t think your region “block” is needed, it could be included as a zone of your region “VOID” if you want, but note that even then you would have neutrons going from “tarclad” to “VOID” and others going from “TARGET” to “VOID” directly (through the aperture for the beam). Another option, as you suggested, is to create a bigger region around your target and score everything going from that region to “VOID”.


Dear @fogallar
I appreciate your help. I have tried mgdraw.f for scoring neutrons properties as you told and the output comes out fine but I’m not sure about how I was modified the mgdraw.f routine and I just realized that the coordinates of position are around the target-cladding which is not my final expected position.
According to my picture shown below, the expected position of neutrons to be score which needed to be outside of target cladding. From my understanding mgdraw.f routine can’t do this kind of scoring it can just score at the boundary-crossing, am I correct?

Sorry for my circuitous question. Do I have to back on work with fluscw.f routine following the research paper (attached below) by using USRBIN/USRTRACK card so I can select “VOID” region?

expected neutron position

research paper that I have followed
research paper

mgdraw.f (5.2 KB)

mgdraw output TXT file
ads_mgdraw001_data.txt (2.3 MB)

Dear @thanapong,

Neutron coordinates around the target cladding is exactly what I would expect. In fact, from your previous questions, I thought that this was what you wanted. Of course, if you score the position of every neutron at the moment it leaves the target cladding, its coordinates will be at the surface of the target cladding.

I just took a quick look to the paper you mention. From section 2.1, and in particular from the sentence

“By specifying some logical definitions in the program (in this case, specifying the particles that cross from the target area to outside of the target), the variable information provided in FLUSCW is returned”

I think (but I may be perfectly wrong) that they are doing the same thing as you do now: score the particles as they cross from the target area (which in your case I assume to be target + cladding) to outside of the target (your VOID), in order to later on use this information as an input to continue the simulation using a different software.

In your input file there are only the target and its cladding, surrounded by vacuum. In this case, once the neutrons leave the target cladding and enter the VOID, they will just travel to infinite without interacting (being eventually discarded once they enter the blackhole surrounding the fluka geometry). Therefore, unless I am missing something, there is no point in scoring the neutron properties somewhere else in the VOID, specially if the target is in reality surrounded by something else and you will use the results as the input source for a second simulation. Said that, you can always create another region around, fill it up with vacuum, and score the neutrons at its boundary.

If what you want to get from FLUKA are the position, direction, energy, etc. of every neutron leaving your target cladding and entering your VOID region, you are doing it correctly as far as I can tell. If you want a different thing please elaborate it being as specific as possible so I can try to help you.

Regarding your mgdraw.f routine: probably you are aware, but if not please note that you are writing ETRACK, which is the total energy of the particle (see comments inside /include/ Before, in your fluscw.f, you were writing PLA, which is the particle laboratory momentum (GeV/c) or kinetic energy (GeV) (see comments inside the routine).

Hope it helps,

Dear @fogallar,

Thank you for your help and detail explanation, it’s help me a lot. Now I editing my geometry to make the interaction happen, but there is a problem with complex geometry. It is made up from hexagonal lattice to form a honeycomb structure. I was wondering if you could please give me some documentation about creating this kind of geometry(picture attached below)?

Another question, I have create simple structure for my geometry by using RCC for my first trial run. I got “Something weird occurred : the total particle weight is reset to 1. Please check carefully the input and the results” in .out file, I don’t know what cause the error, is it because of density in Material cards or ratio of fraction in somewhere. Do you have any suggestion?

my geometry reference

ads_prototype1-usryield001.out (19.7 KB)
my input
ads_prototype1-usryield.inp (3.9 KB)
ads_prototype1-usryield.flair (3.2 KB)

Thanking you Again, Yours Sincerely

Dear @thanapong,

Regarding your geometry, is there a structure separating the “honeycomb cells”? If not, the only repetitive elements would be the fuel rods and this should be pretty fast to implement, specially if you use the geometry editor to do so (maybe you are doing it already). Take a look to the following tutorial on how to use it in case you are not very familiar with it:

Note that even if you don’t have a technical drawing to insert as an image layer, you can still use the geometry editor capabilities to insert bodies, copy them, move them etc. as well as to define regions in order to create and place your geometry elements faster.

About your error: you are missing at least two very important cards (that were present in your previous input file), RANDOMIZ and START.
Once you have solved this, if you try to run your input, you will face another error message. The following post should help you to solve the problem:

Hope it helps,