Giter Site home page Giter Site logo

Running a steady state simulation about moltres HOT 15 CLOSED

arfc avatar arfc commented on August 24, 2024
Running a steady state simulation

from moltres.

Comments (15)

gridley avatar gridley commented on August 24, 2024

from moltres.

lindsayad avatar lindsayad commented on August 24, 2024

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.

smpark7 avatar smpark7 commented on August 24, 2024

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.

gridley avatar gridley commented on August 24, 2024

@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.

smpark7 avatar smpark7 commented on August 24, 2024

@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.

gridley avatar gridley commented on August 24, 2024

from moltres.

smpark7 avatar smpark7 commented on August 24, 2024

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.

katyhuff avatar katyhuff commented on August 24, 2024

from moltres.

gridley avatar gridley commented on August 24, 2024

from moltres.

smpark7 avatar smpark7 commented on August 24, 2024

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?

image
image

from moltres.

lindsayad avatar lindsayad commented on August 24, 2024

For a simple geometry like this, have you considered just using MOOSE's GeneratedMesh capabilities?

from moltres.

smpark7 avatar smpark7 commented on August 24, 2024

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.

andrewryh avatar andrewryh commented on August 24, 2024

@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.

smpark7 avatar smpark7 commented on August 24, 2024

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.

lindsayad avatar lindsayad commented on August 24, 2024

Good to hear!

from moltres.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.