Coder Social home page Coder Social logo

yak's Introduction

yak

Finite element and radial basis function transport code. For a more advanced (and more complicated) code featuring full operator integration, see https://github.com/brbass/ibex.

yak's People

Contributors

brbass avatar

Watchers

 avatar

yak's Issues

Revamp CMake build

  • Review how to work with multiple directories in CMake
    • Find some good examples in third-party code
  • Figure out how to add tests
  • Add directory structure
  • Find external programs without passing flags directly to compiler
    • Trilinos
    • GSL
  • Figure out how to combine multiple libraries into one

Switch to newer Trilinos packages

  • Replace SerialDense Epetra classes with Teuchos
  • Replace Epetra with Tpetra
  • Replace AztecOO with Belos
  • Replace Amesos with Amesos2

Add parallelism

Begin with parallelism in space, which should be simple once the parsing is done. After a set of points is generated, these should go out to all the processors. Alternately, the problem could be split into even sections and then each processor would be responsible for generating the points in that section. In any case, once the spatial points are established, the parallelism for the RBF solve should exist solely in Trilinos.

Add Monte Carlo

  • Finish solid geometry for 2D code
  • Research most applicable estimators
    • Check out Tim's work
  • Add classes for
    • Particle
    • Particle bank
    • Sampling source particles
    • Weight windows (from adjoint solution?)
    • Estimators
    • Particle tracking
    • Iteration through histories

Add support for 2D RBF solve

  • Ensure that z is the mu angle
  • Add class for Lebedev_Quadrature
  • Test out quadratures using moment-to-discrete and discrete-to-moment operators
  • Look into how to shorten the Lebedev quadrature by removing symmetrical angles in the Z plane
  • Write function to find ordinate that reflects each other ordinate for each surface normal direction
  • Add solid geometry capability for 1D and 2D
    • Which material a point is on
    • The next material or boundary a particle moving in a certain direction will collide with
    • The surface normal for each boundary
  • Add simple meshing for the solid geometry
  • Write 2D RBF sweep (or modify the 1D RBF sweep)
  • Test 2D RBF sweeps
    • Vacuum and reflective square cylinder
    • Vacuum and reflective circular cylinder
    • Slab problem (reflective boundaries on one axis)
    • Pincell in infinite lattice
      • Compare against two-group results from 543
  • Test 3D RBF sweeps
    • Vacuum and reflective sphere
    • Slab problem (reflective boundaries on two axes)
      • Compare against 1D results
    • Cylinder problem (reflective boundaries on one axis)
      • Compare against 2D results

Bring code up to standards

  • Remove includes from header files where possible
  • Add all code to a single namespace for now
  • End namespaces with // namespace x
  • Move all “using namespace” directives to narrow scope
  • Make sure "includes" follow the order:
    • Related header
    • C library
    • C++ library
    • Other libraries
    • Project headers
  • Always use "override" when overriding virtual functions
  • Change protected data members to private
  • Make sure input arguments come before output arguments
  • Change the dynamic_cast to static_cast where possible
  • Change all size integers to size_t

Streamline solid geometry

Right now, the solid geometry package always checks every surface for intersections and only checks the first intersection of each surface for a change in region. Given the current region, the solid geometry could find which surface the ray will intersect with much more easily. In addition, I should define the "outside world" as another region so that a ray outside of the problem can be checked. I could add a NO_MATERIAL enum type to reflect this region.

Add DSA using RBF diffusion

  • Finish 2D RBF transport project
  • Add diffusion operator
    • Allow toggle between solving using only coherent scattering
  • Add class to solve multigroup diffusion problem using Source Iteration and the Krylov method
    • It would be ideal if I could just reuse those classes when doing the diffusion solve, but that could be more invasive if I have to change the number of moments used, etc.
  • Add DSA into source iteration and Krylov iteration
  • Make the shape multiplier variable for different methods
    • Could alternately make two spatial discretizations
  • Add calculation of the diffusion coefficient where applicable (right now, using 1 / (3 sigma_t))

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.