Git Product home page Git Product logo

magpie's Introduction

Magpie

Build status

Magpie Logo

Magpie (Mesoscale Atomistic Glue Program for Integrated Execution) is a glue application to link various atomistic codes to applications based on the MOOSE Finite Element Framework.

Magpie provides coupling modules for

  • SPPARKS - the kinetic Monte Carlo code by Sandia National Laboratory
  • MyTRIM - a binary collision Monte Carlo code for ion transport in materials

Support is planned for

  • LAMMPS - the molecular dynamics code by Sandia National Laboratory

and possibly others.

Other Software

Idaho National Laboratory is a cutting edge research facility which is a constantly producing high quality research and software. Feel free to take a look at our other software and scientific offerings at:

Primary Technology Offerings Page

Supported Open Source Software

Raw Experiment Open Source Software

Unsupported Open Source Software

Contrib

Part of this code uses the exact calculation of the overlap volume of spheres and mesh elements routines copyright (C) 2015-2018 by Severin Strobl [email protected] (http://dx.doi.org/10.1016/j.jcp.2016.02.003).

License

Copyright 2017 Battelle Energy Alliance, LLC

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

magpie's People

Contributors

aeslaughter avatar dschwen avatar fdkong avatar friedmud avatar giudgiud avatar joshuahansel avatar jwpeterson avatar lindsayad avatar loganharbour avatar maxnezdyur avatar mengnanli91 avatar milljm avatar pbehne avatar permcody avatar pghasse avatar recuero avatar rwcarlsen avatar snschune avatar socratesgorilla avatar yaqiwang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magpie's Issues

Create MyTRIMRun base class...

...and split it into a runner that sums up element wise and a runner that keeps discrete defect lists around.

The latter shall be used with a DiracKernel to insert the defects and possible with a stochastic cluster dynamics

Track energy deposition by recoils

Excess energy from recoils needs to be binned in the element runner and reported back to MOOSE. This will allow us to simulate the recoil heating from fission fragments.

Allow PKA generators to create vacancies

By having a PKA generator assign a tag that is not -1 we should correctly create vacant sites at the PKA starting points. Such a generator would not create an excess of interstitials (#48).

Add MyTRIMMesh

Add a mesh class with interfaces to get high level mesh data to suppress biassing and to force QUAD4/HEX8 elements, etc.

This will be used by an (optional) internal PointLocator replacement.

Create probability density function classes

The MultivariateDiscretePDF class will be the interface between Mammoth and Magpie.
Magpie needs to able to provide this way of sampling initial Z/A, energy and direction of flight
to mytrim.

First, I'll implement base class that simply provides a drawSample<T>(T & sample) method and contains a Real _normalization variable. _normalization enables multiple pdf objects to be scaled correctly w.r.t. each other.

In our case T is of type IonBase, so I'll implement a template specialization for that case.

MyTRIMRasterizer should generate PKA set

The rasterizer knows the timestep (or time passed since the last MyTRIM phase). I could pass a MaterialUserObject to generate a set of PKA origin points (using the #23 randomElementPoint function.

The MaterialUserObject would encapsulate the logic to calculate a set of PKA energies with the correct probabilities. Initially this could be empirical, and eventually we'll use neutronics data.

Implement Transfer of UserObject data

MAMMOTH needs to transfer neutronics data to be used by MAGPIE PKA samplers. We need to figure out a way to implement this transfer regardless of which app is master and which one is slave.

Homogenize sample for high energy recoils

A homogenized sample could be used for high energy recoils like fission fragments and a probability could be applied for accepting or rejecting the first generation recoils. This would make it feasible to simulate lower fission rates in in small samples that otherwise get an entire ff cascade folded onto itself (through periodicity).

Homogenization will also speed up these recoils.

Add MyTRIMDensityAux kernel

This will help debug the automatic material density calculation. It should output the density in g/cm^3 that the MooseMyTRIMMaterial::calculateDensity function calculates. It will apply the same procedure as MooseMyTRIMSample::lookupMaterial.

Implement an ElementUserObject to raster concentration data for a TRIM run

The TRIM run will be handled by a pair of user objects:

  • ElementUserObject which rasters the simulation domain into a regular grid of TRIM materials. This requires a list of coupled variables and vectors with TRIM parameters. The grid is AllGather'd
  • GeneralUserObject which runs TRIM in each thread/core, generating a global defect map that is all gatherd.

Kernels will utilize the second UO (subject of a future PR) to apply defect production rates.

Update MyTRIM version

I'm renaming a lot of stuff in MyTRIM. Magpie will need to be updated accordingly.

Make Magpie require certain C++11 features

This will mean that Magpie compilation errors out unless C++ was enabled upon libMesh building and the required features are found to be supported.

Magpie is an optional dependence in several MOOSE apps. We can and should use this opportunity to go ahead on the C++11 adoption (which is planned for MOOSE framework as well).

This will make Magpie a proving ground for C++11 features.

Create new faster MyTRIM sample class

The PointLocator based sample is generic, which is fine for complex meshes. For regular GeneratedMeshes we can figure out the element id and the local MyTRIM material much easier (using integer divisions etc.).

  • Move MooseMyTRIMSample to MooseMyTRIMElementSample
  • Create MooseMyTRIMGridSample
  • Move MyTRIMRasterizer to MyTRIMElementRasterizer
  • Create MyTRIMGridRasterizer

Add grid based Rasterizer

To reduce the amount of point locator lookups a grid based rasterizer could be useful. This may need to be combined with a modified Dirac runner that snaps the defect data to a grid and caches the point locator results.

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.