Giter Club home page Giter Club logo

cyclus.github.com's Introduction

Cyclus

The Cyclus fuel cycle simulator is an agent-based and extensible framework for modeling the flow of material through future nuclear fuel cycles. For more information on the entire "ecosystem" please refer to the Cyclus website.

Branch Cyclus Cycamore Cymetric
main cyclus_main cycamore_main cymetric_main

The core of the Cyclus nuclear fuel cycle simulator from the University of Wisconsin-Madison is intended to be a simulation framework for the development of innovative fuel cycle simulations.

This README is intended primarily for those who intend to contribute to the development of the Cyclus Core. If you are interested Cyclus as a user or in developing Cyclus archetypes, you may want to consult Getting Started with Cyclus.

This README provides basic information about:
  • the dependencies required by Cyclus
  • installation of Cyclus from the command line
  • how to run Cyclus and the Cyclus unit tests

The Cyclus Core contains all the fundamental pieces of the Cyclus framework required to interface with the input file, write the output file, and manage material flow during the simulation via the Dynamic Resource Exchange. It does not contain any fuel cycle facility models. A set of nuclear facilities can be obtained by installing Cycamore, the Cyclus Additional Module. Cycamore is supported by the Cyclus Developer Team.

Third party modules can also be installed (or developed) with additional facilities. Please visit the Cyclus website for a list of contributed modules.

In order to facilitate future compatibility with multiple platforms, Cyclus is built using CMake. For detailed instructions on Cyclus dependencies (including minimum version requirements), see Installing Dependencies.

The quickest way to install Cyclus and its dependencies relies on using the conda-forge channel and the conda package manager within the Anaconda python environment. The following instructions guide you through that approach. To install Cyclus and its dependencies onto a clean Ubuntu machine (tested on 22.04 LTS):

  • Download and install Miniconda for Linux
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
  • Execute the following commands to initialize Miniconda:
~/miniconda3/bin/conda init bash
source ~/.bashrc
  • Create a new environment and install the Cyclus package
conda config --add channels conda-forge
conda create -n cyclus
conda activate cyclus
conda install -y cyclus

For more detailed installation procedure, and/or custom installation please refer to the INSTALLATION guide.

Installing Cyclus will also install a test driver (i.e., an executable of all of our tests). You can run the tests yourself via:

cyclus_unit_tests

As noted previously, the Cyclus Core will not allow you to run fuel cycle simulations as it does not include nuclear facilities. To run fuel cycle simulations, first download Cycamore (GitHub Cyamore Repository):

  • Clone the Cycamore Repo: git clone https://github.com/cyclus/cycamore.git,
  • Install in the same location you installed Cyclus (eg. in ~/.local/): python3 install.py from the cycamore folder.

You can find instructions for writing an input file for cyclus from Cyclus User Guide or use sample input files from Cycamore Repo. Assuming you have some file input.xml, you can run Cyclus via:

cyclus path/to/input.xml

For a more detailed explanation, check out the Cyclus User Guide.

We happily welcome new developers into the Cyclus Developer Team. If you are willing to contribute into Cyclus, please follow this procedure:

  1. Fork Cyclus repository,
  2. Create a working branch on your fork from the main branch,
  3. Implement your modification of the Cyclus source code,
  4. Submit a Pull request into Cyclus/main branch,
  5. Wait for reviews/merge (the proposer of a pull request cannot be the Merger).

You may also want to read our Contribution Guidelines.

cyclus.github.com's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

cyclus.github.com's Issues

make gh-preview needs cyclus in PATH

Should this information be mentioned in readme?

Otherwise, it is giving me file-not-found error.

cycweb (source) > make gh-preview
sphinx-build -b html -d ./gh-build/doctrees source ./gh-build
Making output directory...
Running Sphinx v1.1.3

Exception occurred:
File "/usr/lib/python2.7/dist-packages/sphinx/cmdline.py", line 188, in main
warningiserror, tags)
File "/usr/lib/python2.7/dist-packages/sphinx/application.py", line 102, in init
confoverrides or {}, self.tags)
File "/usr/lib/python2.7/dist-packages/sphinx/config.py", line 216, in init
exec code in config
File "/home/olzhas/cyclus/cycweb/source/conf.py", line 52, in
verout = subprocess.check_output(['cyclus', '--version']).split()
File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
process = Popen(stdout=PIPE, _popenargs, *_kwargs)
File "/usr/lib/python2.7/subprocess.py", line 679, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
The full traceback has been saved in /tmp/sphinx-err-lRq3cO.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
Either send bugs to the mailing list at http://groups.google.com/group/sphinx-dev/,
or report them in the tracker at http://bitbucket.org/birkenfeld/sphinx/issues/. Thanks!
make: *** [gh-preview] Error 1

toaster example in fuel cycle

The toaster example could be improved by walking it through all the way to a running fuel cycle example. As it stands, there is no real payoff in terms of "look I made the computer do something." Right now it feels more like "hey, I edited a bunch of text files."

Glossary

Three steps :

  • identify (read through the website and determine what words are confusing)
  • define (make a glossary page)
  • hyperlink (words that are confusing should hyperlink to the library)

citation not showing the url

So, I just noticed that the doi citation rendered on the homepage neglects the doi url, even though it appears on my local build.

Anyone know why?

The current site:

image

My local build:

url_appears

update website rng

As @FlanFlanagan pointed out at SCI on 10/4/13, our rng examples on the website are not strictly up to date (even with Cycamore v0.2). We should determine the best way to make sure these are up to date. I can immediately think of a few options:

  • don't provide rng on the website (i.e., use github as the only source)
  • provide a hook (or update manually) during the tagging/release process that copies the current versions

For now, we need to update the website.

@scopatz, should we bring this discussion to the list serv?

Document the Cyclus Environment

Write a page/pages on the fundamental elements of a Cyclus simulation environment, e.g. BookKeeper, Timer, Logger, as part of the developer document.

Update README

Having followed precisely the directions in the README, I've hit a snag in the instructions.

It looks like they're out of date with commit e202e91. I assume we can mostly copy-paste from cnerg.github.com's readme, but I thought I'd throw this @scopatz's way for now to do with as he sees fit. I haven't messed with the github page makefiles in a long time (ever?) and am long due for some prelim writing today, so maybe he has time to give this a quick once-over.

update output db schema info

With @rwcarlsen's recent output database update to add simulation id's, it's probably time we update the output db webpage (http://cyclus.github.io/devdoc/output_dbase.html). The schema needs to be updated for sure, likely a section should be added about dealing with multiple simulations, and there may be some out of date language in general.

We should also determine (perhaps as a group @katyhuff, @gonuke) where we want to talk about our output abstraction interface. More precisely, we effectively support sqlite output directly at the current time, and thus we provide this information on the website. However, we also, structurally, support other output database-like instances through our abstract interface. Where (if at all) should such documentation live on website? Is the doxygen documentation good enough?

Perhaps its time for a renewed discussion on this front in general (we keep flirting with digging deeper into the website vs. doxygen vs. incorporating doxygen in the website discussion). Perhaps we can bring @zwelchWI in as well, since he's the resident expert practitioner regarding these issues?

Updating cyclus on VM image

Cyclus on VM image is build in 2012 so it is old. May update to 0.2v.
In addition, I noticed that Firefox redirects to a new tab with xml guts of VM image instead of downloading it upon hitting 'image' on 'cyclus.github.io/devdoc/get_and_build.html'

incorporate tomasz' lessons learned

Tomasz recently went through the process of building cyclus and its dependencies and has some suggestions on how to clarify the process. We should review his suggestions and incorporate them as needed.

The suggestions themselves were provided to the user list.

Pull Installation Info from repo READMEs

We currently have to update two sources of information for installation instructions. One is the get and build page in this website and the other is the READMEs. We should only have to do this once, and I would prefer to keep installation information in the READMEs.

It is possible, however, to reference other rst files. PyNE does this, e.g.:

.. include:: ../../readme.rst
    :start-after: .. install-start
    :end-before: .. install-end

The main difference between PyNE's file structure and ours is that their documentation (website source) is in their source code repository, whereas ours is separate and our source code is distributed amongst (currently) 3 repositories.

In order to do this, our cyclus.github.com repository needs a conf.py that defines a variable for each repo we want to pull a readme section from, e.g. CYCLUS_README_PATH. The reference would then look like:

.. include:: CYCLUS_README_PATH/README.rst
    :start-after: .. install-start
    :end-before: .. install-end

Sphynx will then grab the appropriate sections during the make html step, and we can achieve our goal of having a single source file for any given install step. That being said, if those readmes are updated in the future, the website will have to be rebuilt to match those updates. However, that's an acceptable price to pay given the current state.

Broken dbtypes table

This is what prints when I load the table in my browser:

GET file://fonts.googleapis.com/css?family=Noticia+Text|Open+Sans|Droid+Sans+Mono net::ERR_FILE_NOT_FOUND dbtypes.html:16
Uncaught ReferenceError: state is not defined cloud.js:158
(anonymous function) cloud.js:158
fire jquery.js:1075
self.fireWith jquery.js:1193
jQuery.extend.ready jquery.js:435
DOMContentLoaded jquery.js:949
event.returnValue is deprecated. Please use the standard event.preventDefault() instead. jquery.js:3526

Create readme.rst

The readme should include:

  • instructions on how to modify/rebuild the site (including what files not to modify)
  • instructions to keep content update and build commits separate.

Show SimIds

Note that every one of the tables described below has a “SimId” column that is not shown.

We need to actually show these. The way the "Understanding the Database" page is written right now it is too easy to miss and the SimId is an important concept that we can't gloss over. Someone skipping to the table descritions would implement the wrong schema.

Document our Configuration Step

For posterity, we should document what files we configure and how we configure them. This will also explain why the resulting files are not version controlled.

toaster example out of date

There are a bunch of little things on the toaster example that if you copy/paste the code over it will fail to compile. These come from API changes, I am assuming. The one that sticks out in my mind is in removeResource(), trans.comod is actually a function trans.comod().

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.