コード例 #1
0
ファイル: test_xsLibraries.py プロジェクト: youngmit/armi
 def setUpClass(cls):
     cls.isotxsAA = isotxs.readBinary(ISOTXS_AA)
     cls.gamisoAA = gamiso.readBinary(GAMISO_AA)
     cls.pmatrxAA = pmatrx.readBinary(PMATRX_AA)
     cls.xsLib = xsLibraries.IsotxsLibrary()
     cls.xsLibGenerationErrorStack = None
     try:
         cls.xsLib.merge(copy.deepcopy(cls.isotxsAA))
         cls.xsLib.merge(copy.deepcopy(cls.gamisoAA))
         cls.xsLib.merge(copy.deepcopy(cls.pmatrxAA))
     except:
         cls.xsLibGenerationErrorStack = traceback.format_exc()
コード例 #2
0
def mergeXSLibrariesInWorkingDirectory(lib,
                                       xsLibrarySuffix="",
                                       mergeGammaLibs=False):
    """
    Merge neutron (ISOTXS) and gamma (GAMISO/PMATRX) library data into the provided library.

    Parameters
    ----------
    lib : obj
        ISOTXS library object

    xsLibrarySuffix : str, optional
        XS library suffix used to determine which ISOTXS files are merged together,
        typically something like `-doppler`. If empty string, will merge everything
        without suffix (indicated by a `-`).

    mergeGammaLibs : bool, optional
        If True, the GAMISO and PMATRX files that correspond to the ISOTXS library will be merged. Note: if these
        files do not exist this will fail.
    """
    from armi import nuclearDataIO
    from armi.nuclearDataIO import isotxs
    from armi.nuclearDataIO import gamiso
    from armi.nuclearDataIO import pmatrx

    xsLibFiles = getISOTXSLibrariesToMerge(
        xsLibrarySuffix, [iso for iso in glob.glob(_ISOTXS_EXT + "*")])
    librariesToMerge = []
    neutronVelocities = {
    }  # Dictionary of neutron velocities from each ISOTXS file
    for xsLibFilePath in sorted(xsLibFiles):
        xsID = re.search("ISO([A-Z0-9]{2})", xsLibFilePath).group(
            1)  # get XS ID from the cross section library name
        xsFileTypes = "ISOTXS" if not mergeGammaLibs else "ISOTXS, GAMISO, and PMATRX"
        runLog.info("Retrieving {} data for XS ID {}{}".format(
            xsFileTypes, xsID, xsLibrarySuffix))
        if xsLibFilePath in lib.isotxsMetadata.fileNames:
            runLog.extra(
                "Skipping merge of {} because data already exists in the library"
                .format(xsLibFilePath))
            continue
        neutronLibrary = isotxs.readBinary(xsLibFilePath)
        neutronVelocities[xsID] = neutronLibrary.neutronVelocity
        librariesToMerge.append(neutronLibrary)
        if mergeGammaLibs:
            dummyNuclides = [
                nuc for nuc in neutronLibrary.nuclides
                if isinstance(nuc._base, nuclideBases.DummyNuclideBase)
            ]
            # GAMISO data
            gamisoLibraryPath = nuclearDataIO.getExpectedGAMISOFileName(
                xsID=xsID)
            gammaLibrary = gamiso.readBinary(gamisoLibraryPath)
            addedDummyData = gamiso.addDummyNuclidesToLibrary(
                gammaLibrary,
                dummyNuclides)  # Add DUMMY nuclide data not produced by MC2-3
            if addedDummyData:
                gamisoDummyPath = os.path.abspath(
                    os.path.join(os.getcwd(), gamisoLibraryPath))
                gamiso.writeBinary(gammaLibrary, gamisoDummyPath)
                gammaLibraryDummyData = gamiso.readBinary(gamisoDummyPath)
                librariesToMerge.append(gammaLibraryDummyData)
            else:
                librariesToMerge.append(gammaLibrary)
            # PMATRX data
            pmatrxLibraryPath = nuclearDataIO.getExpectedPMATRXFileName(
                xsID=xsID)
            pmatrxLibrary = pmatrx.readBinary(pmatrxLibraryPath)
            addedDummyData = pmatrx.addDummyNuclidesToLibrary(
                pmatrxLibrary,
                dummyNuclides)  # Add DUMMY nuclide data not produced by MC2-3
            if addedDummyData:
                pmatrxDummyPath = os.path.abspath(
                    os.path.join(os.getcwd(), pmatrxLibraryPath))
                pmatrx.writeBinary(pmatrxLibrary, pmatrxDummyPath)
                pmatrxLibraryDummyData = pmatrx.readBinary(pmatrxDummyPath)
                librariesToMerge.append(pmatrxLibraryDummyData)
            else:
                librariesToMerge.append(pmatrxLibrary)
    for library in librariesToMerge:
        lib.merge(library)

    return neutronVelocities
コード例 #3
0
ファイル: test_pmatrx.py プロジェクト: crisobg1/Framework
 def setUpClass(cls):
     # load a library that is in the ARMI tree. This should
     # be a small library with LFPs, Actinides, structure, and coolant
     cls.lib = pmatrx.readBinary(test_xsLibraries.PMATRX_AA)
コード例 #4
0
ファイル: test_pmatrx.py プロジェクト: crisobg1/Framework
 def setUp(self):
     self.fname = self._testMethodName + "temp-aa.pmatrx.ascii"
     lib = pmatrx.readBinary(test_xsLibraries.PMATRX_AA)
     pmatrx.writeAscii(lib, self.fname)
     self.lib = pmatrx.readAscii(self.fname)
コード例 #5
0
ファイル: test_pmatrx.py プロジェクト: crisobg1/Framework
 def setUpClass(cls):
     cls.origLib = pmatrx.readBinary(test_xsLibraries.PMATRX_AA)
コード例 #6
0
ファイル: test_pmatrx.py プロジェクト: crisobg1/Framework
 def setUp(self):
     self.fname = self._testMethodName + "temp-aa.pmatrx"
     pmatrx.writeBinary(self.origLib, self.fname)
     self.lib = pmatrx.readBinary(self.fname)