Esempio n. 1
0
def toTAB1(self, xUnitTo, yUnitTo, C1=0, C2=0, L1=0, L2=0):

    if (isinstance(self, XYsModule.XYs1d)):
        ENDFDataList = [ endfContLine( C1, C2, 0, 0, 1, len( self ) ) ] + \
            endfInterpolationList( [ len( self ), \
            gndToENDF6Module.gndToENDFInterpolationFlag( self.interpolation ) ] )
        ENDFDataList += endfNdDataList(self, xUnit=xUnitTo, yUnit=yUnitTo)
    elif (isinstance(self, regionsModule.regions1d)):
        interpolations, data = [], []
        for region in self:
            subData = region.copyDataToXYs(xUnitTo=xUnitTo, yUnitTo=yUnitTo)
            if (len(data) > 0):
                if (subData[0] == data[-1]): subData.pop(0)
            data += subData
            interpolations += [
                len(data),
                gndToENDF6Module.gndToENDFInterpolationFlag(
                    region.interpolation)
            ]
        NR = len(interpolations) / 2
        ENDFDataList = [endfContLine(C1, C2, 0, 0, NR, len(data))]
        ENDFDataList += endfInterpolationList(interpolations)
        ENDFDataList += endfNdDataList(data, xUnit=xUnitTo, yUnit=yUnitTo)
    else:
        raise 'hell - fix me'
    return (ENDFDataList)
Esempio n. 2
0
def toENDF6(self, flags, targetInfo, weight=None, MT=None):

    NE = len(self)
    EInFactor = PQUModule.PQU(1, self.axes[-1].unit).getValueAs('eV')
    if (weight is None):
        weight = [[self[0].value * EInFactor, 1.0],
                  [self[-1].value * EInFactor, 1.0]]
    EInInterpolation = gndToENDF6Module.gndToENDF2PlusDInterpolationFlag(
        self.interpolation, self.interpolationQualifier)
    C1, C2, LAW, LANG = 0, 0, 0, 0
    if (MT == 527): C1, C2, LAW, LANG = 11, 5.438675e-4, 1, 2
    ENDFDataList = [ endfFormatsModule.endfContLine( C1, C2, 0, 1, 1, len( weight ) ) ] + \
        endfFormatsModule.endfInterpolationList( [ len( weight ), 2 ] ) + endfFormatsModule.endfNdDataList( weight ) + \
        [ endfFormatsModule.endfContLine( 0, 0, LAW, LANG, 1, NE ) ] + endfFormatsModule.endfInterpolationList( [ NE, EInInterpolation ] )
    for energy in self:
        if (MT == 527):
            ENDFDataList.append(
                endfFormatsModule.endfContLine(0, energy.value * EInFactor,
                                               0, 0, 2 * len(energy),
                                               len(energy)))
            ENDFDataList += endfFormatsModule.endfNdDataList(energy,
                                                             xUnit='eV',
                                                             yUnit='1/eV')
        else:
            if (isinstance(energy, regionsModule.regions1d)):
                interpolations, data = [], []
                for region in energy:
                    regionData = region.copyDataToXYs(xUnitTo='eV',
                                                      yUnitTo='1/eV')
                    if (len(data) > 0):
                        if (data[-1] == regionData[0]): regionData.pop(0)
                    data += regionData
                    interpolations.append(len(data))
                    interpolations.append(
                        gndToENDF6Module.gndToENDFInterpolationFlag(
                            region.interpolation))
                NR, NE = len(interpolations) / 2, interpolations[-2]
                ENDFDataList.append(
                    endfFormatsModule.endfContLine(0, energy.value * EInFactor,
                                                   0, 0, NR, NE))
                ENDFDataList += endfFormatsModule.endfInterpolationList(
                    interpolations)
                ENDFDataList += endfFormatsModule.endfNdDataList(data)
            else:
                interpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
                    energy.interpolation)
                ENDFDataList.append(
                    endfFormatsModule.endfContLine(0, energy.value * EInFactor,
                                                   0, 0, 1, len(energy)))
                ENDFDataList += endfFormatsModule.endfInterpolationList(
                    [len(energy), interpolation])
                ENDFDataList += endfFormatsModule.endfNdDataList(energy,
                                                                 xUnit='eV',
                                                                 yUnit='1/eV')
    return (1, ENDFDataList)
Esempio n. 3
0
def toENDF6(self, flags, targetInfo, weight=None):

    U, EFL, EFH = 0, 0, 0
    if (self.LF == 12):
        EFL, EFH = self.EFL.getValueAs('eV'), self.EFH.getValueAs('eV')
    else:
        U = self.U.getValueAs('eV')
    parameter1 = self.parameter1.data
    energyFactor = float(
        PQUModule.PQU('1 eV') / PQUModule.PQU(1, parameter1.axes[1].unit))
    if (weight is None):
        weight = [[energyFactor * parameter1[0][0], 1.0],
                  [energyFactor * parameter1[-1][0], 1.0]]
        interpolation = 2
    elif (hasattr(weight, 'axes')):
        interpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
            weight.interpolation)
    else:
        interpolation = 2
    ENDFDataList = [ endfFormatsModule.endfContLine( U, 0, 0, self.LF, 1, len( weight ) ) ] + \
        endfFormatsModule.endfInterpolationList( [ len( weight ), interpolation ] ) + endfFormatsModule.endfNdDataList( weight )
    ENDFDataList += endfFormatsModule.toTAB1(parameter1,
                                             'eV',
                                             'eV',
                                             C1=EFL,
                                             C2=EFH)
    if (self.parameter2 is not None):
        parameter2 = self.parameter2.data
        yUnit = ''
        if (self.LF in [5, 11]): yUnit = '1/eV'
        ENDFDataList += endfFormatsModule.toTAB1(parameter2, 'eV', yUnit)
    return (1, ENDFDataList)
Esempio n. 4
0
def toENDF6(self, flags, targetInfo):

    MF6 = [endfFormatsModule.endfContLine(0, 0, 0, 0, 1, len(self))]
    EInInterpolation = gndToENDF6Module.gndToENDF2PlusDInterpolationFlag(
        self.interpolation, self.interpolationQualifier)
    energyConversionFactor = PQUModule.PQU(1,
                                           self.axes[-1].unit).getValueAs('eV')
    MF6 += endfFormatsModule.endfInterpolationList(
        [len(self), EInInterpolation])
    for oneEin in self:
        muInterpolation = gndToENDF6Module.gndToENDF2PlusDInterpolationFlag(
            self.interpolation, self.interpolationQualifier)
        Ein = oneEin.value * energyConversionFactor
        numMu = len(oneEin)
        MF6 += [endfFormatsModule.endfContLine(0, Ein, 0, 0, 1, numMu)]
        MF6 += endfFormatsModule.endfInterpolationList(
            [numMu, muInterpolation])
        for entries in oneEin:
            pdf_of_EpInterpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
                self.interpolation)
            mu = entries.value
            numEout = len(entries)
            MF6 += [endfFormatsModule.endfContLine(0, mu, 0, 0, 1, numEout)]
            MF6 += endfFormatsModule.endfInterpolationList(
                [numEout, pdf_of_EpInterpolation])
            xys = entries.copyDataToXYs(xUnitTo='eV', yUnitTo='1/eV')
            MF6 += endfFormatsModule.endfNdDataList(xys)
    return (7, standardsModule.frames.labToken, MF6)
Esempio n. 5
0
def toENDF6Data(self, MT, endfMFList, targetInfo, level):

    endfInterpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
        self.interpolation)
    crossSectionFlatData = []
    for xy in self.copyDataToXYs(xUnitTo='eV', yUnitTo='b'):
        crossSectionFlatData += xy
    return ([len(crossSectionFlatData) / 2,
             endfInterpolation], crossSectionFlatData)
Esempio n. 6
0
def toENDF6List(self, targetInfo):

    nPoints = len(self)
    interpolationFlatData = [
        nPoints,
        gndToENDF6Module.gndToENDFInterpolationFlag(self.interpolation)
    ]
    endfMult = endfFormatsModule.endfNdDataList(
        self.copyDataToXYs(xUnitTo='eV'))
    return (interpolationFlatData, nPoints, endfMult)
Esempio n. 7
0
def toENDF6(self, MT, endfMFList, flags, targetInfo):

    data = []
    for xy in self.copyDataToXYs(xUnitTo='eV', yUnitTo='eV'):
        data += xy
    NE = len(self)
    EInInterpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
        self.interpolation)
    ENDFDataList = [ endfFormatsModule.endfContLine( 0, 0, 0, 0, 1, NE ) ] + \
            endfFormatsModule.endfInterpolationList( [ NE, EInInterpolation ] )
    ENDFDataList += endfFormatsModule.endfDataList(data)
    return (standardsModule.frames.labToken, ENDFDataList)
Esempio n. 8
0
def toENDF6(self, MT, endfMFList, flags, targetInfo):

    if (MT == 502): MT = self.ancestor.ENDFMT
    Z = targetInfo['ZA'] / 1000

    endfInterpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
        self.interpolation)
    data = []
    for xy in self.copyDataToXYs(xUnitTo='eV', yUnitTo=''):
        data += xy
    endfMFList[27][MT] = [ endfFormatsModule.endfHeadLine( targetInfo['ZA'], targetInfo['mass'],  0, 0, 0, 0 ),
                           endfFormatsModule.endfContLine( 0, Z,  0, 0, 1, len( data ) / 2 ) ] + \
                           endfFormatsModule.endfInterpolationList( ( len( data ) / 2, endfInterpolation ) ) + \
                           endfFormatsModule.endfDataList( data ) + [ endfFormatsModule.endfSENDLineNumber( ) ]
Esempio n. 9
0
def toENDF6_oneRegion(self, EInFactor, startingIndex=0):

    ENDFDataList = []
    for index, energy_in in enumerate(self[startingIndex:]):
        ENDFDataList += [
            endfFormatsModule.endfContLine(0., energy_in.value * EInFactor, 0,
                                           0, 1, len(energy_in))
        ]
        ENDFDataList += endfFormatsModule.endfInterpolationList([
            len(energy_in),
            gndToENDF6Module.gndToENDFInterpolationFlag(
                energy_in.interpolation)
        ])
        ENDFDataList += endfFormatsModule.endfNdDataList(energy_in,
                                                         xUnit='eV',
                                                         yUnit='1/eV')
    EInInterpolation = gndToENDF6Module.gndToENDF2PlusDInterpolationFlag(
        self.interpolation, self.interpolationQualifier)
    return (len(self[startingIndex:]), EInInterpolation, ENDFDataList)
Esempio n. 10
0
def toENDF6List(self, targetInfo):

    interpolationFlatData, multiplicityFlatData = [], []
    counter = 0
    lastX, lastY = None, None
    for region in self:
        ENDFInterpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
            region.interpolation)
        data = region.copyDataToXYs(xUnitTo='eV')
        if (lastX is not None):
            if (lastY == data[0][1]): data = data[1:]
        counter += len(data)
        interpolationFlatData.append(counter)
        interpolationFlatData.append(ENDFInterpolation)
        for xy in data:
            multiplicityFlatData += xy
        lastX, lastY = data[-1]
    return (interpolationFlatData, counter,
            endfFormatsModule.endfDataList(multiplicityFlatData))
Esempio n. 11
0
    def angularPointwiseEnergy2ENDF6(self, targetInfo):

        interpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
            self.interpolation)
        energy_in_eV = self.value * energyConversionFactor
        if (targetInfo['doMF4AsMF6']):
            ENDFDataList = [
                endfFormatsModule.endfContLine(0, energy_in_eV,
                                               interpolation + 10, 0,
                                               2 * len(self), len(self))
            ]
        else:
            ENDFDataList = [
                endfFormatsModule.endfContLine(0, energy_in_eV, 0, 0, 1,
                                               len(self))
            ]
            ENDFDataList += endfFormatsModule.endfInterpolationList(
                [len(self), interpolation])
        ENDFDataList += endfFormatsModule.endfNdDataList(self)
        return (ENDFDataList)
Esempio n. 12
0
def toAngularPointwise(angularSubform, targetInfo, insertSENDL):

    energyConversionFactor = PQUModule.PQU(
        1, angularSubform.axes[-1].unit).getValueAs('eV')

    def angularPointwiseEnergy2ENDF6(self, targetInfo):

        interpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
            self.interpolation)
        energy_in_eV = self.value * energyConversionFactor
        if (targetInfo['doMF4AsMF6']):
            ENDFDataList = [
                endfFormatsModule.endfContLine(0, energy_in_eV,
                                               interpolation + 10, 0,
                                               2 * len(self), len(self))
            ]
        else:
            ENDFDataList = [
                endfFormatsModule.endfContLine(0, energy_in_eV, 0, 0, 1,
                                               len(self))
            ]
            ENDFDataList += endfFormatsModule.endfInterpolationList(
                [len(self), interpolation])
        ENDFDataList += endfFormatsModule.endfNdDataList(self)
        return (ENDFDataList)

    ENDFDataList = [
        endfFormatsModule.endfContLine(0, 0, 0, 0, 1, len(angularSubform))
    ]
    interpolation = (gndToENDF6Module.gndToENDFInterpolationFlag(
        angularSubform.interpolation))
    ENDFDataList += endfFormatsModule.endfInterpolationList(
        [len(angularSubform), interpolation])
    start = 0
    if targetInfo.get('skipFirstEnergy'): start = 1
    for energy_in in angularSubform[start:]:
        ENDFDataList += angularPointwiseEnergy2ENDF6(energy_in, targetInfo)
    if (insertSENDL):
        ENDFDataList.append(endfFormatsModule.endfSENDLineNumber())
    return (0, 2, ENDFDataList)
Esempio n. 13
0
def toAngularLegendre(angularSubform, targetInfo, insertSENDL):
    """This should only be called from this module."""

    NM = 0
    interpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
        angularSubform.interpolation)
    energyConversionFactor = PQUModule.PQU(
        1, angularSubform.axes[-1].unit).getValueAs('eV')
    ENDFDataList = []
    start = 0
    if targetInfo.get('skipFirstEnergy'): start = 1
    for energy in angularSubform[start:]:
        NW, NL = len(energy) - 1, 0
        if (targetInfo['doMF4AsMF6']): NL = NW
        ENDFDataList.append(
            endfFormatsModule.endfContLine(
                0, energy.value * energyConversionFactor, 0, 0, NW, NL))
        ENDFDataList += endfFormatsModule.endfDataList(energy.coefficients[1:])
        NM = max(NM, len(energy.coefficients[1:]))
    if (insertSENDL):
        ENDFDataList.append(endfFormatsModule.endfSENDLineNumber())
    return (interpolation, len(angularSubform[start:]), 0, 1, NM, ENDFDataList)
Esempio n. 14
0
def toENDF6(self, MT, endfMFList, flags, targetInfo, energyUnit='eV'):

    if (MT == 502): MT = self.ancestor.ENDFMT
    Z = targetInfo['ZA'] / 1000

    endfInterpolation, data = [], []
    counter, lastX, lastY = 0, None, None
    for region in self:
        ENDFInterpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
            region.interpolation)
        regionData = region.copyDataToXYs(xUnitTo=energyUnit, yUnitTo='')
        if (lastX is not None):
            if (lastY == regionData[0][1]): del regionData[0]
        counter += len(regionData)
        endfInterpolation.append(counter)
        endfInterpolation.append(ENDFInterpolation)
        for xy in regionData:
            data += xy
        lastX, lastY = regionData[-1]

    endfMFList[27][MT] = [ endfFormatsModule.endfHeadLine( targetInfo['ZA'], targetInfo['mass'],  0, 0, 0, 0 ),
                           endfFormatsModule.endfContLine( 0, Z,  0, 0, len( endfInterpolation ) / 2, len( data ) / 2 ) ] + \
                           endfFormatsModule.endfInterpolationList( endfInterpolation ) + \
                           endfFormatsModule.endfDataList( data ) + [ endfFormatsModule.endfSENDLineNumber( ) ]
Esempio n. 15
0
def toENDF6Data(self, MT, endfMFList, targetInfo, level):

    interpolationFlatData, crossSectionFlatData = [], []
    counter = 0
    lastX, lastY = None, None
    for region in self:
        ENDFInterpolation = gndToENDF6Module.gndToENDFInterpolationFlag(
            region.interpolation)
        data = region.copyDataToXYs(xUnitTo='eV', yUnitTo='b')
        if (lastX is not None):
            if (lastY == data[0][1]):
                data = data[1:]
            elif ((lastY == 0) and region.interpolation[4:] == 'log'):
                interpolationFlatData[-2] += 1
            elif (ENDFInterpolation == lastENDFInterpolation):
                interpolationFlatData = interpolationFlatData[:-2]
        counter += len(data)
        interpolationFlatData.append(counter)
        interpolationFlatData.append(ENDFInterpolation)
        for xy in data:
            crossSectionFlatData += xy
        lastX, lastY = data[-1]
        lastENDFInterpolation = ENDFInterpolation
    return (interpolationFlatData, crossSectionFlatData)
Esempio n. 16
0
def toENDF6(self, MT, endfMFList, flags, targetInfo):
    def LTP_oneSubParsing(LTP, LIDP, nuclear, interferenceReal,
                          interferenceImaginary, lineData):

        if LIDP:
            NL = len(nuclear) - 1
            NW = 3 * NL + 3
        else:
            NL = (len(nuclear) - 1) // 2
            NW = 4 * NL + 3
        lineData.append(
            endfFormatsModule.endfContLine(0, nuclear.value, LTP, 0, NW, NL))
        legendreDat = nuclear.coefficients
        for j, r in enumerate(interferenceReal.coefficients):
            legendreDat.append(r)
            legendreDat.append(interferenceImaginary[j])
        lineData += endfFormatsModule.endfDataList(legendreDat)

    counts, interpolationFlagsList, lineData = 0, [], []
    LTP = 1  # indicates this is a nuclear + interference section
    target, projectile = targetInfo['reactionSuite'].target, targetInfo[
        'reactionSuite'].projectile
    LIDP = target == projectile
    if (isinstance(self.nuclear_term, angularModule.XYs2d)):
        for ridx in xrange(len(self.nuclear_term)):
            counts += 1
            nuclear, interferenceReal, interferenceImaginary = self.nuclear_term[
                ridx], self.interferenceReal_term[
                    ridx], self.interferenceImaginary_term[ridx]
            LTP_oneSubParsing(LTP, LIDP, nuclear, interferenceReal,
                              interferenceImaginary, lineData)
        interpolationFlagsList += [
            counts,
            gndToENDF6Module.gndToENDFInterpolationFlag(
                self.nuclear_term.interpolation)
        ]
    elif (isinstance(self.nuclear_term, angularModule.regions2d)):
        for regionIndex, region in enumerate(self.nuclear_term):
            interferenceReal, interferenceImaginary = self.interferenceReal_term[
                regionIndex], self.interferenceImaginary_term[regionIndex]
            for energyIndex, nuclear in enumerate(region):
                if ((regionIndex != 0) and (energyIndex == 0)): continue
                counts += 1
                LTP_oneSubParsing(LTP, LIDP, nuclear,
                                  interferenceReal[energyIndex],
                                  interferenceImaginary[energyIndex], lineData)
            interpolationFlagsList += [
                counts,
                gndToENDF6Module.gndToENDFInterpolationFlag(
                    region.interpolation)
            ]
    else:
        raise NotImplementedError(
            "Unknown data storage inside CoulombExpansion: %s" %
            type(self.nuclear_term))
    interpolationFlags = endfFormatsModule.endfInterpolationList(
        interpolationFlagsList)
    ENDFDataList = [
        endfFormatsModule.endfContLine(projectile.getSpin().value, 0, LIDP, 0,
                                       len(interpolationFlagsList) / 2, counts)
    ] + interpolationFlags + lineData
    if (not (targetInfo['doMF4AsMF6'])):
        ENDFDataList.append(endfFormatsModule.endfSENDLineNumber())
    LAW = 5
    gndToENDF6Module.toENDF6_MF6(MT, endfMFList, flags, targetInfo, LAW,
                                 self.productFrame, ENDFDataList)
Esempio n. 17
0
def toENDF6( self, MT, endfMFList, flags, targetInfo ) :
    """
    In ENDF MF=6, some distributions should really be treated as uncorrelated: NBodyPhaseSpace, and also 
    Legendre expansions when only L=0 is listed.
    For GND we split these into uncorrelated angular (isotropic) and energy distributions.
    Must put back in original format when writing back to ENDF.
    """

    frame = self.productFrame
    energySubform = self.energySubform.data
    angularSubform = self.angularSubform.data
    if( isinstance( energySubform, energyModule.NBodyPhaseSpace ) ) :
        energySubform.toENDF6( MT, endfMFList, flags, targetInfo )
    elif( isinstance( energySubform, energyModule.energyLoss ) ) :
        frame, ENDFDataList = energySubform.toENDF6( MT, endfMFList, flags, targetInfo )
        gndToENDF6Module.toENDF6_MF6( MT, endfMFList, flags, targetInfo, 8, frame, ENDFDataList )
    elif( targetInfo['product'].getAttribute( 'ENDFconversionFlag' ) in [ 'MF6', 'MF26' ] ) :
        if( isinstance( energySubform, energyModule.constant ) ) :
# BRB - this needs to be checked.
            if( targetInfo['product'].name != 'gamma' ) : raise ValueError( 'This logic is only for discete gammas' )
            energyForm = energyModule.form( self.label, frame, energySubform )
            angularForm = angularModule.form( self.label, frame, angularSubform )
            energyForm.toENDF6( MT, endfMFList, flags, targetInfo )
            angularForm.toENDF6( MT, endfMFList, flags, targetInfo )
        elif( isinstance( angularSubform, angularModule.isotropic ) ) :                # Change to energyAngular with Legendre
            if( not( isinstance( energySubform, energyModule.XYs2d ) ) ) : raise 'hell - fix me'
            axes = axesModule.axes( rank = 4 )
            axes[3] = axesModule.axis( 'energy_in', 3, 'eV' )
            axes[2] = axesModule.axis( 'energy_out', 2, 'eV' )
            axes[1] = axesModule.axis( 'l', 1, '' )
            axes[0] = axesModule.axis( 'C_l(energy_out|energy_in)', 0, '1/eV' )
            energyAngularSubform = energyAngularModule.XYs3d( axes = axes, interpolation = energySubform.interpolation,
                    interpolationQualifier = energySubform.interpolationQualifier )
            EInFactor = PQUModule.PQU( 1, energySubform.axes[2].unit ).getValueAs( 'eV' )

            for EIn in energySubform :
                if isinstance( EIn, regionsModule.regions1d ):
                    # writing to MF6 LAW=1, LANG=1 doesn't support multiple regions, must recombine.
                    if( len( set( [ ein.interpolation for ein in EIn ] ) ) != 1 ) :
                        raise NotImplemented, "ENDF MF6 LAW=1 LANG=1 doesn't support multiple E' interpolations!"
                    xyvals = EIn[0].copyDataToXYs()
                    for region in EIn[1:]:
                        xynew = region.copyDataToXYs()
                        xynew[0][0] *= 1.00000001
                        xyvals.extend( xynew )
                    EIn_copy = EIn[0].copy( value=EIn.value, axes=EIn.axes )
                    EIn_copy.setData( xyvals )
                    EIn = EIn_copy
                multiD_2d = energyAngularModule.XYs2d( value = EIn.value * EInFactor, interpolation = EIn.interpolation )
                EpCls = EIn.copyDataToXYs( xUnitTo = 'eV', yUnitTo = '1/eV' )
                for e_out, Cls in EpCls :
                    multiD_2d.append( energyAngularModule.Legendre( [ Cls ], value = e_out ) )
                energyAngularSubform.append( multiD_2d )
            form = energyAngularModule.form( '', self.productFrame, energyAngularSubform )
            if( targetInfo.dict.get( "gammaToENDF6" ) ) : return( form )
            form.toENDF6( MT, endfMFList, flags, targetInfo )
        elif( isinstance( energySubform, energyModule.XYs2d ) and isinstance( angularSubform, angularModule.XYs2d ) ) :

            LANG, LEP = 12, 2
            if( energySubform.interpolation == standardsModule.interpolation.flatToken ) :
                LEP = 1  # interpolation for E_out
                LANG = 11
            elif( energySubform.interpolation in (standardsModule.interpolation.loglinToken,
                standardsModule.interpolation.loglogToken ) ) :
                LANG = 14
            MF6 = [ endfFormatsModule.endfContLine( 0, 0, LANG, LEP, 1, len( energySubform ) ) ]
            EInInterpolation = gndToENDF6Module.gndToENDFInterpolationFlag( energySubform.interpolation )
            MF6 +=  endfFormatsModule.endfInterpolationList( [ len( energySubform ), EInInterpolation ] )
            for indexE, EEpP in enumerate( energySubform ) :
                EMuP = angularSubform[indexE]
                if( EEpP.value != EMuP.value ) : raise Exception( "EEpP.value = %s != EMuP.value = %s" % ( EEpP.value, EMuP.value ) )
                NA, NEP = 2 * len( EMuP ), len( EEpP )
                MF6.append( endfFormatsModule.endfContLine( 0, EEpP.value, 0, NA, NEP * ( NA + 2 ), NEP ) )
                data = []
                for EpP in EEpP :
                    data = [ EpP[0], EpP[1] ]
                    for muP in EMuP : data += muP
                    MF6 += endfFormatsModule.endfDataList( data )
            LAW = 1
            gndToENDF6Module.toENDF6_MF6( MT, endfMFList, flags, targetInfo, LAW, frame, MF6 )
        else :
            raise Exception( 'uncorrelated.toENDF6 not supported for energy subform = %s and angular subform = %s' %
                ( energySubform.label, angularSubform.label ) )
    else :                          # original data is in uncorrelated form
        if( MT not in [ 527, 528 ] ) :
            angularForm = angularModule.form( "", frame, self.angularSubform.data )
            angularForm.toENDF6( MT, endfMFList, flags, targetInfo )
        energyForm = energyModule.form( "", frame, self.energySubform.data )
        energyForm.toENDF6( MT, endfMFList, flags, targetInfo )
        if( MT == 527 ) : endfMFList[26][MT][0]