Material mixes

New ideas for code development

Material mixes

Postby Andrei Fokau » Wed Sep 01, 2010 5:41 pm

Comparing to MCNP, Serpent saves a lot of time in preparing input, computing, and output processing. The simplicity of geometry definition in Serpent is invaluable for reactor modelling (even being limited). However, there are still few difficulties directly inherited from MCNP, which can also be improved. Here I want to touch the most common and the most annoyingly time-consuming one - the material definition.

There are two main problems in preparing material cards:
  1. calculation of material composition, and
  2. calculation of material density.
My colleagues normally use Excel or Octave/Matlab for atomic/mass calculation and then paste obtained compositions into the input file with some additional formatting. I haven't seen anybody using input templates more-or-less efficiently, but I do my best to spread this idea among my colleagues. However, even by using templates the problem remains to be quite complex, and applied routines are typically messy - therefore often contain errors. On the other hand, the problem is not that hard and involves just basic math operations. There is just a lack of simple solution.

There was already an attempt to address this issue in MCNP family. Jerzy Cetnar has written MCB code, a continuous-energy burnup extension over MCNP4c, which has a number of nice features. MCB allows a much better way to define materials by introducing material mixes and human-friendly nuclide identifiers. The following example illustrates them:

Code: Select all
m1  nlib=03c
    Pu239  0.4 $ equivalent to 94239
    Pu240  0.6
m2  nlib=03c
    Am241  0.95
    Am242m 0.05 $ equivalent to 95342
mix10  1  0.5  $ this mix (material) can also be referred in cell cards
       2  0.5
m3   Zr.03c   1 $ equivalent to 40000.03c, depending on xsdir one can skip the nuclide extension
mix10  20 0.4  $ this material can also be referred in cell cards
       3  0.6

This was a significant step, but unfortunately it doesn't solve the problem completely. First of all, I don't find the idea to use numbers for material identification convenient, because it still looks quite messy and hard-read. Secondly, there is a number of unresolved satellite-problems including:
  1. Natural compositions are not available in some data libraries; therefore compounds ZZZ000 must be replaced by combination of corresponding ZZZAAA. What does the user do? The user opens a material handbook, or googles to Wikipedia or KAERI/BNL websites, because natural compositions these are more-or-less constants. Why not to put them inside the code?
  2. Sometimes nuclides are missing in some libraries, and therefore compositions must to be corrected. Simple commenting is not always a good idea, because in this case all elements are corrected instead of correcting only the one with missing parts.
  3. The library may not have data for the requested temperature, or the nuclide keys (e.g. 03c) may be different - user needs to correct the keys every time the library is changed. Having standard keys helps to solve the problem though.
  4. Specific for MCNP only: In MCNP there is one very nasty problem of material temperature value (in MeV). If it slightly changes between different libraries (e.g. due to rounding) and one forgets to check and correct (for all cells!), then the cross-sections are modified by free-gas treatment to 300K and then back to the requested temperature. There is no this problem in Serpent, thanks to Jaakko.
Taking the MCB ideas as starting point, I tried to solve some of these issues and have developed a better material mixer, which one can use in input templates. Have a look on a web-application demonstrating the approach: http://materialmixer.heroku.com

I understand that it may be quite difficult to add such functionality to Serpent. On the other hand, the benefits may be enormous for the user, so the motivation is quite strong. May be some intermediate solution can help:

Code: Select all
set matmixes "
Pu   Pu-239  .5
     Pu-240  .5
fuel Pu     0.2
     Zr     balance
"

Finally, I didn't find a good solution for density calculation yet. One of possible ways is to add density functions depending on temperature and compound-type. Some of such functions are quite common and can be collected in a density-function library and then referred as a mix parameter. So far I was quite satisfied by inserting small scripts into template to calculate material density depending on the composition.
KTH Reactor Physics (Stockholm, Sweden) neutron.kth.se
Andrei Fokau
 
Posts: 77
Joined: Thu Mar 25, 2010 12:25 am
Location: KTH, Stockholm, Sweden

Re: Material mixes

Postby Jaakko Leppänen » Tue Sep 21, 2010 9:43 am

I think I had something like this in PSG, the predecessor of Serpent, but for some reason I didn't transfer the coding to Serpent.
- Jaakko
User avatar
Jaakko Leppänen
Site Admin
 
Posts: 1982
Joined: Thu Mar 18, 2010 10:43 pm
Location: Espoo, Finland

Re: Material mixes

Postby Andrei Fokau » Tue Sep 21, 2010 5:20 pm

Jaakko Leppänen wrote:I think I had something like this in PSG, the predecessor of Serpent, but for some reason I didn't transfer the coding to Serpent.

A convenient way of making material card is definitely not the most important thing to think about, but it is worth to be kept in mind. I hope that one day you will have some time to work on it!
KTH Reactor Physics (Stockholm, Sweden) neutron.kth.se
Andrei Fokau
 
Posts: 77
Joined: Thu Mar 25, 2010 12:25 am
Location: KTH, Stockholm, Sweden


Return to Development

Who is online

Users browsing this forum: No registered users and 1 guest