# Nuclear Reactor Physics package

**URL:** <https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351>\
**Category:** Community\
**Tags:** gridap, gmsh\
**Created:** [December 6, 2020, 5:11pm UTC](https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351 "2020-12-06T17:11:02Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![rvignolo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rvignolo/32/33498_2.png) [@rvignolo](https://discourse.julialang.org/u/rvignolo)\
**Post date:** [December 6, 2020, 5:11pm UTC](https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351/1 "2020-12-06T17:11:02Z")

</div>

Hi!

I have been learning Julia for a while now and I would like to start contributing (not by only raising issues as I have been doing). I have experience in nuclear reactor physics so I would like to write a package that go in line with that subject. I have not been able to find a package that solves the neutron transport equation. Is that correct or anyone knows about a package of that kind?

Particularly, I would like to implement the Method of Characteristics. A similar library from the Computational Reactor Physics Group at MIT is [OpenMoC](https://github.com/mit-crpg/OpenMOC), which is in C++ and Python.

I have already implemented this method in C, [here](http://www.seamplex.com/milonga/).

Of course I would need some dependencies such as: read a GMSH mesh using Julia. Does any one knows a package for that? I am aware of [MeshIO.jl](https://github.com/JuliaIO/MeshIO.jl), but I want to be sure that is the best option.

Please, let me know if there is anyone that would like to work with me or if there is anything already implemented that could be useful!

Thank you!

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [December 6, 2020, 5:14pm UTC](https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351/2 "2020-12-06T17:14:30Z")

</div>

Welcome.  
Sometimes it makes sense to first create a Julia wrapper to a good C++ package before creating a brand new package in pure Julia.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [December 6, 2020, 5:52pm UTC](https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351/3 "2020-12-06T17:52:35Z")

</div>

Gridap can read gmsh, if my recollection is sound.

---

<div class="post-metadata">

**Author:** ![ctkelley](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ctkelley/32/10684_2.png) [@ctkelley](https://discourse.julialang.org/u/ctkelley)\
**Post date:** [December 6, 2020, 7:43pm UTC](https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351/4 "2020-12-06T19:43:12Z")

</div>

Are you thinking 3D + Anisotropic scattering + multigroup in energy + real geometries (ie reactors)? This would be amazing. If you have all that already in your C code, you are more than half way there.

---

<div class="post-metadata">

**Author:** ![rvignolo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rvignolo/32/33498_2.png) [@rvignolo](https://discourse.julialang.org/u/rvignolo)\
**Post date:** [December 6, 2020, 7:59pm UTC](https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351/6 "2020-12-06T19:59:58Z")

</div>

milonga, the code I referenced, has implemented both the diffusion approximation and SN (discrete ordinates) in both finite-element and finite-volumes schemes for 1D, 2D and 3D structured and unstructured meshes. It also has the Method of Characteristic (MoC) in 1D and 2D (both structured and unstructured meshes). The problem with 3D for this last method is that the ray tracing algorithm gets really complicated.

I would like to start with the migration of the MoC method first.

---

<div class="post-metadata">

**Author:** ![ctkelley](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ctkelley/32/10684_2.png) [@ctkelley](https://discourse.julialang.org/u/ctkelley)\
**Post date:** [December 7, 2020, 12:00am UTC](https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351/7 "2020-12-07T00:00:43Z")

</div>

I know that the NE department at MIT has a few good benchmarks. Please post your results on those when you’re ready.

---

<div class="post-metadata">

**Author:** ![rvignolo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rvignolo/32/33498_2.png) [@rvignolo](https://discourse.julialang.org/u/rvignolo)\
**Post date:** [December 17, 2020, 3:37pm UTC](https://discourse.julialang.org/t/nuclear-reactor-physics-package/51351/8 "2020-12-17T15:37:25Z")

</div>

Hi @PetrKryslUCSD, I would like to thank you for pointing out Gridap.jl, particularly, GridapGmsh.jl. I have used that to start the implementation of [RayTracing.jl](https://github.com/rvignolo/RayTracing.jl).
