Git Product home page Git Product logo

Comments (1)

drewejohnson avatar drewejohnson commented on June 26, 2024

I'm going to expand upon my vision for this object.

Usage

This object should be instantiated/created with the parser to which it is connected, the name of the material, a dictionary of nuclide-density pairs, and dictionary of keywords, e.g.

nucDens = {'nuc0.09c': 0.3, 'nuc1.09c': 0.7, ...}

The dictionary of keywords corresponds to any option that can be used in defining a material [Section 4.1.2 of the manual] like temperature, density, volume, burn, etc.

It will be the responsibility of the parser or the end user to produce these dictionaries, e.g. the burned material reader will obtain this data from the bumat files.

These should also be easy to update, either with public methods for updating nuclide mass/atomic fractions, or by updating the keyword arguments.

Example

mat = Material(<parser>, 'demoMaterial', {nuc: dens pairs}, 
                        {'dens': dens, 'tmp': temp, 'vol': volume, ...})
mat.metadata['temp']
# returns temperature
mat.metadata['vol'] = newVol
# update the volume

Discussion

I am not convinced if we should automatically store the nuclide library indicators, .09c, or if those should be inferred from the material temperature.
If the temperature is given, either at creation or updated as above, then the library suffixes when printed must match.
That way, when we do move towards writing objects with the templating engines, we will not run into issues where the materials temperature definition does not align with the library indicators

We may want to subclass this object by having a standalone class and one that is linked to the reader.
Currently, the DepletedMaterial is linked to the DepletionReader, and I believe the Homogenized Universe Object that @sallustius is working on will be linked to the results and branching readers.
All of the main functionality could be written into a base class, and a linked material object, specific to the readers, could have a simple subclass, as

class StandaloneMaterial(object):
    def __init__(self, <arguments>):
        # create
    # add the functionality to this object

class LinkedMaterial(StandaloneMaterial, _SupportingObject):
    def __init__(self, reader, <arguments>):
        StandaloneMaterial.__init__(self, <arguments>)
        _SupportingObject.__init__(self, reader)

from serpent-tools.

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.