Comments (15)
from moltres.
Straight to a 3D simulation for a first run...that's not a strategy I would try when getting started. Is their any way you can approximate the geometry and try solving in 2D cartesian or 2D axisymmetric?
Also, I think the lack of benchmarked coupled input on using the eigenvalue solvers is a big deficiency in MOOSE.
@gridley what do you mean by coupled input? Feedback with temperature? A benchmark example of this would not really belong in MOOSE, at least not in the framework. In a world where INL wasn't worried about export control, one could envision a neutronics module. But for now almost all of INL's physics work involving SLEPc is in Rattlesnake.
from moltres.
Thanks for your input Alex and Gavin!
@lindsayad I actually started with a 2D axisymmetric model before swapping to the 3D model, because I was getting similar erroneous results and I thought maybe I got the axis of symmetry and the velocity axes wrong. The 2D model gives a similar resulting flux distribution.
@gridley The k_eff values from Serpent are all slightly super critical for most of the relevant temperature range. I'll check the input values and geometry again though just in case I made a mistake somewhere (which is something that has been happening rather frequently). I've changed the interpolation method to least_squares which doesn't seem to give the strictly increasing error anymore.
With the changed interp_type, now I'm encountering a new error with the NonlinearEigen executioner where it says |Bx| = 0!
. Steady state input file. I somewhat understand from a mathematical perspective why this isn't supposed to be zero but I'm don't know what's causing it.
As for the Transient executioner run, the flux distribution is sinusoidal from the very start at small time steps and just tends to zero as time increases. Would this be a result of incompatible initial conditions? Or boundary conditions? I'm concerned about the fact that the neutron flux distribution just varies in z, as opposed to a higher fission rates at the center area than the peripheral area (which is what we would expect as we observe in the MSRE moltres tutorial example).
from moltres.
@lindsayad sorry, I was in a rush making the comment about the "lack of benchmarks". I meant that we don't have any unit-tested (or even shown working) coupled eigenmode solves for moltres, which would be good to work on. I'm definitely going to download this and give a 2D solve a shot with the group constants you generated tomorrow @smpark7. I'm pretty excited to see work on MSFRs in Moltres! :D
This could be related to the fact that when people use diffusion for fast systems, they add large reflectors around it in the calculation to get the right answer. Could be worth seeing if you can get an eigenvalue solve with reflective boundary conditions to work first.
from moltres.
@gridley Cool! I've updated the README in the input-file directory for clarity. The input-data directory, on the other hand, is in a mess but I recommend using the /input-data/base_config/data3/
data for 6 groups and /input-data/fuelcore/data2/
for 2 groups. They were generated from Serpent for the geometry in question.
Also, I'm not sure if using reflective BCs will help because I ran Serpent specially with only the central fuel salt region, as opposed to running it with the whole core geometry.
from moltres.
from moltres.
I just realised that there is zero heat transfer across the fuel/struc boundary throughout the whole transient. So the fuel salt is thermally insulated from the temperature Dirichlet BC that I set on the outer_wall.
Is there something I have to do in Trelis to enable heat transfer across boundaries?
from moltres.
from moltres.
from moltres.
Thanks for the help guys!
I'm considering using SCALE to get neutronics and steady state data to compare with what I've done on Serpent and Moltres thus far.
While getting SCALE to work on my desktop, I tried a simple Moltres simulation with a very simple geometry, a cylinder of height = 100cm and radius = 50cm, with no flow and reflective BCs. It is a single region with LiF - UF - ThF salt, the same fuel salt used for the MSFR. I obtained supercritical compositions (k_eff = ~1.05 & ~1.20) and the neutronics data from Serpent.
When I ran the transient simulation until steady state (i.e. multiplication factor = 1 and constant temp distribution), I simply got a final result with zero flux and the spatial temperature distribution being constant throughout according to the temperature Dirichlet BCs that I set. The troubling thing I observed was that at the very first timestep (dt = .001s), I got negative group1 fluxes and positive group2 fluxes.
I thought maybe the flux initial conditions are wrong but I can't think of a way to change them to output a positive group1 flux. Input file.
I'm now starting to think that perhaps I didn't generated the exodus mesh file properly. For the test I described above, I generated a rectangular surface in Trelis, then applied a meshing scheme to it, then assigned a block for the fuel region and sidesets for the boundaries. Is there anything I missed out?
from moltres.
For a simple geometry like this, have you considered just using MOOSE's GeneratedMesh
capabilities?
from moltres.
Oh yes I could try using that. I've been using Trelis because I expected that I'd move on to more complex geometries. But I guess using GeneratedMesh is good for debugging.
Katy mentioned that there could be something wrong with my Serpent cross sections so I'll be focusing on that for now. We got to this hypothesis because when I tried modifying the MSRE input file part by part to match the MSFR model, changing the cross section data seemed to make the results go haywire, relative to other changes in the input file.
from moltres.
@smpark7 Have you consider use OpenMC to generate multigroup cross sections and diffusion coefficients? Those guys have done it: https://www.sciencedirect.com/science/article/pii/S0306454917303754
from moltres.
I have managed to get a transient simulation of the MSFR towards steady state using a simplified 2D axisymmetric geometry. Thus, I'll consider this issue solved.
The scope for work beyond this level is covered by issue #21
from moltres.
Good to hear!
from moltres.
Related Issues (20)
- Replace the Nt action with a more intuitive name
- Tutorial issues
- Add additional installation instructions HOT 1
- Remove deprecated MOOSE code HOT 7
- moltres_xs.py maybe not compatiable with the newest version of OpenMC
- Removing unused params
- Replace deprecated NodalMaxValue
- Fix removal cross section generation in moltres_xs.py from OpenMC data
- where is the k-eff definition? HOT 1
- Add postprocessor for calculating neutron leakage
- CIVET: 'Mirror scheduled' failure
- Make PrecursorAction compatible with velocity vector variables derived from INSAD
- Welcome to Moltres Discussions! HOT 8
- Create a CI test for building documentation HOT 1
- Rename convoluted object names for clarity
- Extend PrecursorAction to support modeling with higher order precursor variables
- Add documentation on neutron diffusion theory on the Moltres website
- Compilation issue on MacOS with clang HOT 2
- Add override keyword to computeQpOffDiagJacobian in INSBoussinesqBodyForce
- Allow users to choose among Marshak, Mark, and Milne vacuum boundary conditions
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from moltres.