next up previous contents
Next: Summary of C routines Up: ndf access routines Previous: Summary of FORTRAN routines   Contents


FORTRAN routines


ndfaccess

Purpose:

To select a ndfy$\scriptstyle \bf i$ data file other then the default.

FORTRAN Calling:

Call ndfaccess( yi, libnam, Version, grptype, subpath )

Integer yi i N/A Id of the incident particle (i.e., yi)
Character*(*) libnam i N/A Evaluated data library name (e.g., 'endl')
Character*(*) Version i N/A Version of evaluated data (e.g., '991129')
Character*(*) grptype i N/A Suffix added to file name (e.g., '175')
Character*(*) subpath o N/A Returned string of sub-directory

In default mode, ndfinit looks for the requested ndfy$\scriptstyle \bf i$ data file in the current working directory. If the file is not found, ndfinit looks in the directory pointed to by the environment variable NDFPATH. If NDFPATH is not defined or the requested ndfy$\scriptstyle \bf i$ data file does not exist in the directory pointed to by NDFPATH, then ndfinit looks in the directory

/usr/gapps/data/nuclear/current/ndf

for the requested file. This final location can be changed by calling ndfaccess before calling ndfinit. If ndfaccess is called first, then ndfinit looks for the file

/usr/gapps/data/nuclear/libnam/Version/ndf/ndfyi.grptype,

assuming the file was not found in the current working directory or in the directory pointed to by NDFPATH. For example,

Call ndfaccess( 1, "endl", "endl94", "230", subpath )

will cause ndfinit to look for the file

/usr/gapps/data/nuclear/endl/endl94/ndf/ndf1.230 .

Not calling ndfaccess is equivalent to calling it as

Call ndfaccess( 1, "current", "", "", subpath ) .

A call to ndfaccess only modifies the search path for the specified incident particle. Thus, to get neutron (yi = 1) and gamma (yi = 7) data from the same location, ndfaccess must be called twice (once with yi = 1 and once with yi = 7). Calling ndfaccess with different parameters for different incident particles is valid. This allows one to mix and match data for different incident particles.

Fatal Message(s): Prints a fatal message if yi is invalid.

Related routines: None: ndfinit


ndfatw

Purpose:

Returns the mass for the current target in AMU.

FORTRAN Calling:

Call ndfatw( mass )

Real*8 mass o AMU Atomic mass in AMU for the current target

This routine returns the current target's mass in atomic mass units (AMU).

Related routines: ndfiso:


ndfbuff

Purpose:

Provide memory allocated by the user to the ndf routine.

FORTRAN Calling:

Call ndfbuff( Pointer )

Real*8 Pointer i N/A Pointer to pointer to memory allocated by the user

Most ndf routines require the user to allocate memory to read and process the data. The last argument in the ndfinit routine is the amount of memory in 8-byte words that is needed to process the data. After calling ndfinit the user must allocate the required memory and pass the pointer to ndfbuff before calling most ndf routines. As example,

    Integer Date, ReqdMem
    Character Name*(4)
    Real*8 DummyArray
    Pointer ( p, DummyArray(*) )            ! This may not work on all systems.

    Call ndfinit( 1, Name, Date, ReqdMem )
    p = GetBytes( 8 * ReqdMem )             ! User routine to allocate memory.
    Call ndfbuff( p )

Most ndf routines cannot be called until ndfinit, ndfbuff and then ndfiso are called.

Related routines: ndfinit:


ndfclose

Purpose:

Closes the opened ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

Call ndfclose( )

To properly close the opened ndfy$\scriptstyle \bf i$ file ndfclose must be called. Only one ndfy$\scriptstyle \bf i$ file can be opened at a time.

Fatal Message(s): Calling ndfinit twice without calling ndfclose between the two ndfinit calls will cause a fatal message to be printed.

Related routines: ndfinit:


ndfcorrec

Purpose:

Returns the transport-correcting cross-section for the current target.

FORTRAN Calling:

Call ndfcorrec( tccs )

Real*8 tccs( ncg x ( lMax + 1 ) ) o barn The transport-correcting cross-section

For each target, the total cross-section and the diagonal of the yi $ \rightarrow$ yi interaction transfer matrix are transport corrected. This routine returns the transport-correcting cross-section; that is, the cross-section that is subtracted from the total cross-section and the diagonal of the interaction transfer matrix to produce the transport-corrected total cross-section and the transport corrected interaction transfer matrix. There are ncg values (see ndfngroup) for each l-order (l = 0, ..., lMax). The data are arranged serially with the first ncg points being the l = 0 data, the second being the l = 1 data and so on. The last ncg points are only valid when the transport correction method is e_ndfnone or e_ndfLLNL (see ndfmxorder_tc or ndfcmxorder_tc). Note, as per Table 3 the l = 0 data is tc1, the l = 1 data is tc2, ... and the l = lMax data is tc lMax+1.

Related routines: ndfiso: ndfgroup, ndfngroup, ndfsig, ndftrcorr, ndfmxorder, ndfmxorder_tc


ndfed

Purpose:

Returns the deposited energy for the requested transportable outgoing particle for the current target.

FORTRAN Calling:

Call ndfed( ed, yo )

Real*8 ed( ncg ) o MeV-barn yo's deposit energy
Integer yo i N/A Id of the transportable outgoing particle

The deposit energy for yo is returned in ed, where yo is the id of the transportable outgoing particle (e.g., yo = 1 is a neutron). The are ncg data points returned (see ndfngroup). If the requested yo does not exist for the current target ndfed prints a fatal message. Use ndfnyos and ndfyos to determine the allowable yos. In general, ndfsig, ndfpmat, ndfsig, ndfpmat should be used to obtain the deposition energy for each particle being transported.

Fatal Message(s): Prints a fatal message if the requested yo does not exist for the current target.

Related routines: ndfiso: ndfnyos, ndfyos, ndfnppyos, ndfppyos


ndfemax

Purpose:

Returns the total available energy for the current target.

FORTRAN Calling:

Call ndfemax( em )

Real*8 em( ncg ) o MeV-barn Available energy

The total available energy is returned in em. There are ncg data points (see ndfngroup).

Related routines: ndfiso:


ndfep

Purpose:

Returns the production energy for the current target.

FORTRAN Calling:

Call ndfemax( ep )

Real*8 ep( ncg ) o MeV-barn Production energy

The production energy is returned in ep. There are ncg data points (see ndfngroup).

Related routines: ndfiso:


ndffism

Purpose:

Returns the fission matrix for the current target.

FORTRAN Calling:

Call ndffism( fm, iFlag )

Real*8 fm( ncg x ncg ) o barn Fission matrix
Integer iFlag o N/A Indicates whether or not data is present

The fission matrix, if present (iFlag = 0 is returned), for the current target is returned in fm. There are ncg x ncg data points (see ndfngroup). If no fission data is present then iFlag = 1 is returned. This data only exist for neutron as an incident particle (i.e., ndf1) and only for some of its targets.

Related routines: ndfiso: ndffisx, ndffsp


ndffisx

Purpose:

Returns the fission < $ \nu$$ \sigma$ > g for the current target.

FORTRAN Calling:

Call ndffisx( fnubar, iFlag )

Real*8 fnubar( ncg ) o barn Fission nubar data
Integer iFlag o N/A Indicates whether or not data is present

The average number of neutrons produced by fission < $ \nu$$ \sigma$ > g, if present (iFlag = 0 is returned), for the current target is returned in fnubar. There are ncg data points (see ndfngroup). If no fission data is present then iFlag = 1 is returned. This data only exist for neutron as an incident particle (i.e., ndf1) and only for some of its targets.

Related routines: ndfiso: ndffism, ndffsp


ndfflxw

Purpose:

Returns the collapsed flux weights for the l = 0 Legendre order.

FORTRAN Calling:

Call ndfflxw( flux )

Real*8 flux( ncg ) o N/A l = 0 collapsed flux weights

The l = 0 Legendre order, collapsed flux weights are returned in flux. This routine can only be called after ndfgroup has been called. This is equivalent to calling ndfflxw_l from FORTRAN as,

      Call ndfflxw\_l( 0, flux )
(see routine ndfflxw_l).

Related routines: ndfgroup: ndfflxw_l


ndfflxw_l

Purpose:

Returns the collapsed flux weights for the requested Legendre order.

FORTRAN Calling:

Call ndfflxw_l( l, flux )

Integer l i N/A Requested Legendre order
Real*8 flux( ncg ) o N/A lth Legendre order collapsed flux weights

The lth Legendre order, collapsed flux weights are returned in flux. There are ncg data points (see ndfngroup). This routine can only be called after ndfgroup has been called.

Fatal Message(s): Prints a fatal message if the requested l-order is invalid.

Related routines: ndfgroup: ndfflxw


ndffsp

Purpose:

Returns the normalized fission spectrum for the current target.

FORTRAN Calling:

Call ndffsp( FissSpec )

Real*8 FissSpec( ncg ) o N/A Normalized fission spectrum
The lowest energy group of the incident neutron of the fission matrix, if present, for the current target is normalized and returned in FissSpec. There are ncg data points (see ndfngroup). If no fission data is present then this routine prints a fatal message. If the lowest energy data are all zero than FissSpec is filled with ncg ones. This data only exist for neutron as an incident particle (i.e., ndf1) and only for some of its targets.

Fatal Message(s): Prints a fatal message if the current target has no fission matrix.

Related routines: ndfiso: ndfifsp, ndffism, ndffisx


ndfgid

Purpose:

Returns the group id of the uncollapsed energy boundaries of the incident particle.

FORTRAN Calling:

gid = ndfgid( )

Integer gid f N/A Uncollapsed group id for the incident particle
When an ndfy$\scriptstyle \bf i$ file is generated the data is grouped along the energy of the incident particle. The boundaries for energy grouping are specified using an energy group found in the bdfls file. The id of this energy group is returned by ndfgid.

Related routines: ndfinit: ndfgp


ndfgp

Purpose:

Returns the uncollapsed energy boundaries of the incident particle.

FORTRAN Calling:

Call ndfgp( gb )

Real*8 gb( ng + 1 ) o MeV Uncollapsed energy boundaries for the incident particle
The uncollapsed energy boundaries of the incident particle are returned. There are ng + 1 data points returned since ng groups requires ng + 1 boundaries.

Related routines: ndfbuff: ndfgid


ndfgroup

Purpose:

Provides the user supplied information needed for collapsing of the data.

FORTRAN Calling:

Call ndfgroup( cgb, ncg, fid )

Real*8 cgb( ncg + 1 ) i MeV Boundaries for the collapsed group
Integer ncg i N/A Number of collapsed groups
Integer fid i N/A bdfls id of the flux to use for collapsing
The ndf routines allow collapsing of the data to a smaller energy group using a flux from the bdfls file for weighting of the uncollapsed group data. Collapsing is initiated by calling ndfgroup. This smaller collapsing energy group must be a subset of the original energy group; that is, every boundary in the smaller group must have a corresponding boundary in the original group. The smaller group can be a user specified group that is a subset of the original group. The user can use ndfidog to read in a group from a bdfls file. The flux used to weight the collapsing is given by the fid argument. If fid = 0 then the flux in the ndfy$\scriptstyle \bf i$ file is used; otherwise, the flux with id = fid in the bdfls file is used.

Fatal Message(s): Prints a fatal message if the collapsing group is not a subset of the group used to generate the file, if the bdfls file cannot be found, or if the requested flux is not found in the bdfls file.

Related routines: ndfbuff: ndfidog, ndfngroup


ndfidog

Purpose:

Reads an energy group from a bdfls file.

FORTRAN Calling:

Call ndfidog( gid, gb, ngs, Dummy )

Integer gid i N/A Id of the energy group to input from the bdfls file
Real*8 gb( ngs + 1 ) o MeV Boundaries of returned group
Integer ngs o N/A Number of returned groups
Real*8 Dummy u N/A Not used
The group with id = gid is read in from the bdfls file and returned in gb. There are ngs + 1 data points returned in gb. This routine prints a fatal message if the bdfls file cannot be opened or the requested group id is not found in the bdfls file.

Fatal Message(s): Prints a fatal message if the requested group is not found in the bdfls file, or if the bdfls file cannot be opened.

Related routines: None: ndfgroup


ndfifsp

Purpose:

Returns a flag indicating whether or not fission data is present.

FORTRAN Calling:

Flag = ndfifsp( )

Integer Flag f N/A Flag indicating whether or not ndffsp will print a fatal message
This routine allows the user to determine whether or not fission data is present for the current target, without calling ndffsp which will print a fatal message if no fission spectrum data is present for the current target. It returns -1 if no fission spectrum data is present, 0 if the fission spectrum for the lowest incident-energy-group is zero, and 1 otherwise.

Related routines: ndfiso: ndffsp


ndfinfo

Purpose:

Returns the path of the opened ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

Call ndfinfo( path )

Character*(*) path o N/A Path of the opened ndfy$\scriptstyle \bf i$ file
The path of the opened ndfy$\scriptstyle \bf i$ file is accessible by calling ndfinfo. Calling this routine is meaningful only after an ndfy$\scriptstyle \bf i$ file has been opened by calling ndfinit. The string is truncated if it is longer than the length of path.

Related routines: ndfinit:


ndfinit

Purpose:

Opens an ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

Call ndfinit( yi, Name, Date, ReqdMem )

Integer yi i N/A Id of the incident particle
Character*(*) Name o N/A File name (e.g., 'ndf1')
Integer Date o N/A Date in the ndfy$\scriptstyle \bf i$ file
Integer ReqdMem o N/A Memory in 8-byte words needed by ndf routines
This routine opens a ndfy$\scriptstyle \bf i$ file for input, it must be called before any other ndf routine, except ndfaccess and ndfidog. The file to be opened is determined by the first parameter which specifies the incident particle's id (e.g., yi = 1 for neutron). The name of the file to be opened is 'ndf' + { yi converted to a character } (e.g., for yi = 3 the file name is ndf3). See ndfaccess for the directories ndfinit searches to find the ndfy$\scriptstyle \bf i$ file. Name : is the 4 character string name of the file (e.g., 'ndf5'). Date is a date in the form YYMMDD (e.g., 991031 for 31-Oct-1999) stored in the file. Originally this date was the day on which the file was processed. Currently, as of about 1-Oct-2000, the date is used to uniquely identify a file. Dates in files generated before about 1-Oct-2000 are not guaranteed to be unique. ReqdMem is the amount of memory in 8-byte words that the user must allocate and pass to ndfbuff. This memory is used internally by the ndf accessing routines to read in the data and for work space. Most ndf routines cannot be called until ndfinit, ndfbuff and then ndfiso are called.

Fatal Message(s): Prints a fatal message if yi is invalid, if the file could not be opened, or if a file is already opened.

Related routines: None: ndfaccess, ndfbuff, ndfinfo, ndfclose


ndfiso

Purpose:

Selects a target from the opened ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

Call ndfiso( ZA, Flag )

Integer ZA i N/A ZA = (1000 x Z + A) of the target to select
Integer Flag o N/A Flag indicating if target was found in file
This routine is used to select the target for which data is requested. Most ndf routines cannot be called until ndfinit, ndfbuff and then ndfiso are called. If the requested ZA is found then Flag = 0, otherwise Flag = 1. Only one target is selected at a time. Whenever ndfiso is called the previous target's data, if any, is lost. For the ndf7 file (i.e., yi = 7) all ZAs except 99120, fission target, are converted to 1000 x Z (i.e., natural isotope) before the target is selected (e.g., ZA = 6012 if converted to 6000). The assumption being that all isotopes for a given Z have the same electron shell structure and therefore the same photon interaction characteristics.

Related routines: ndfbuff: ndfistab, ndfnistab


ndfistab

Purpose:

Returns the list of targets in the opened ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

Call ndfistab( ZAList, nZAs )

Integer ZAList( nZAs ) o N/A List of targets (ZAs)
Integer nZAs o N/A Number of ZAs in ZAList
This routine returns the list of all targets in the opened ndfy$\scriptstyle \bf i$ file. The number of ZAs returned can also be obtained by calling ndfnistab.

Related routines: ndfbuff: ndfiso, ndfnistab


ndfmxorder

Purpose:

Returns the maximum Legendre order in the opened ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

Call ndfmxorder( lMax )

Integer lMax o N/A Maximum Legendre order
Each ndfy$\scriptstyle \bf i$ file contains some data represented as a Legendre expansion (e.g., interaction transfer matrix). The expansions are truncated, and the last Legendre order present for the current target can be obtained by calling ndfmxorder. Typically, the maximum order is the same for all targets.

Related routines: ndfiso: ndfcorrec, ndfmxorder_tc, ndfsig, ndftrcorr


ndfmxorder_tc

Purpose:

Returns the maximum Legendre order allowed by the current transport correction method.

FORTRAN Calling:

lm = ndfmxorder_tc( )

Integer lm f N/A Maximum Legendre order allowed by transport correction method
Each ndfy$\scriptstyle \bf i$ file contains some data represented as a Legendre expansion (e.g., interaction transfer matrix). The Legendre expansion is truncated, and the last Legendre order present for the current target can be obtained by calling ndfmxorder. This maximum Legendre order can be used when the transport correction method is "No correction" or the "Legacy LLNL correction". For the "Pendlebury/Underhill correction" and the "Ferguson correction" the maximum Legendre order is lMax - 1. This routine returns the correct maximum Legendre order allowed by the current transport correction method.

Related routines: ndfiso: ndfcorrec, ndfmxorder, ndfsig, ndftrcorr


ndfncorrec

Purpose:

Returns the length of data in 'double' words required by ndfcorrec.

FORTRAN Calling:

Call ndfncorrec( len )

Integer len o N/A Length of data required by ndfcorrec
The length of the data returned by ndfcorrec can be obtained by calling this routine. This can be useful if memory for the transport-correcting cross-section returned by ndfcorrec must be allocated before calling ndfcorrec. Calling ndfncorrec is equivalent to the following FORTRAN code,

    Call ndfmxorder( lMax )
    len = ( lMax + 1 ) * ndfngroup( )
For e_ndfPendlebury and e_ndfFerguson transport correction methods, the amount of useful data is 'lMax * ndfngroup( )'; however, the number returned by ndfncorrec is the requirement amount of double' words required by ndfcorrec, which is always '(lMax + 1 ) * ndfngroup( )'.

Related routines: ndfiso: ndfcorrec, ndfngroup, ndfmxorder


ndfngroup

Purpose:

Returns the number of collapsed groups.

FORTRAN Calling:

n = ndfngroup( )

Integer n o N/A Number of collapsed groups
If ndfgroup has been called then the number of groups for the incident particle's collapsed group is returned. Else, the number of groups for the incident particle's uncollapsed group is returned.

Related routines: ndfinit: ndfgroup, ndfngroups


ndfngroups

Purpose:

Returns the number of uncollapsed groups.

FORTRAN Calling:

Call ndfngroups( ng )

Integer ng o N/A Number of uncollapsed groups
The number of groups for the incident particle's uncollapsed group is returned.

Related routines: ndfinit: ndfgroup, ndfngroup


ndfnistab

Purpose:

Returns the number of targets in the opened ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

nZAs = ndfnistab( )

Integer nZAs f N/A Number of targets in the opened ndfy$\scriptstyle \bf i$ file
The number of targets in the opened ndfy$\scriptstyle \bf i$ file can be obtained by calling this routine. This can be useful if memory for the target list must be allocated before calling ndfistab.

Related routines: ndfbuff: ndfiso, ndfistab


ndfnmaxgps

Purpose:

Returns the largest group size used in processing the opened ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

Call ndfnmaxgps( )

'return value' f N/A Largest group size used in processing the opened ndfy$\scriptstyle \bf i$ file

The groups used in grouping the various transportable particles can be difference and can have difference sizes. This routine returns the size of the largest group and may be useful if memory must be allocated for a production matrix.

Related routines: ndfbuff: ndfngroup, ndfngroups, ndfpmat, ndfppmatrix


ndfnppyos

Purpose:

Returns the number of transportable outgoing particles for which a production transfer matrix exist for the current target.

FORTRAN Calling:

nyos = ndfnppyos( )

Integer nyos f N/A Number of transportable outgoing particles
The number of transportable outgoing particles with a production transfer matrix for the current target can be obtained by calling this routine. This can be useful if memory for the transportable outgoing particle with production transfer matrices list must be allocated before calling ndfppyos. The difference between ndfnyos and ndfnppyos is 1, since ndfnyos includes the incident particle; whereas, ndfnppyos does not (as the incident particle's transfer matrix, called the interaction transfer matrix, is obtained using ndfsig instead of ndfpmat).

Related routines: ndfiso: ndfppyos, ndfnyos, ndfyos, ndfpmat


ndfnprod

Purpose:

Returns the number of outgoing particles produced for the requested reaction for the current target.

FORTRAN Calling:

n = ndfnprod( C )

Integer C i N/A C-value for the requested reaction
Integer n f N/A Number of outgoing particles produced for reaction C
This routine can be useful if memory for the outgoing produced particle's ZA and multiplicity lists must be allocated before calling ndfprod. See ndfprod for more details. If the requested C-value is not in the reaction list for the current target then 0 is returned. Note, ndfprod returns a list of all particles produced and not just the transportable ones.

Related routines: ndfiso: ndfprod


ndfnreact

Purpose:

Returns the number of reactions for the current target.

FORTRAN Calling:

n = ndfnreact( )

Integer n f N/A Number of reactions for the current target
For each target there is a list of reactions. A reaction is a unique combination of C-, S-, Q-, X1-, X2-, X3-, and Q eff-values (see Reaction specific information in section 5.2). This routine returns the number of unique reactions for the current target. This can be useful if memory for the reaction list must be allocated before calling ndfreact.

Related routines: ndfiso: ndfreact


ndfnrxs

Purpose:

Returns the number of reactions of type C for the current target.

FORTRAN Calling:

n = ndfnrxs( C )

Integer C i N/A C-value for the requested reaction
Integer n f N/A Number of reactions of type C
For each target there is a list of reactions. A reaction is a unique combination of C-, S-, Q-, X1-, X2-, X3-, and Q eff-values (see Reaction specific information in section 5.2). This routine returns the number of reactions of type C for the current target.

Related routines: ndfiso: ndfrxs, ndfrxslist, ndfrxslevel


ndfnyos

Purpose:

Returns the number of transportable outgoing particles for the current target.

FORTRAN Calling:

n = ndfnyos( )

Integer n f N/A Number of transportable outgoing particles
For each target there is a list of possible transportable outgoing particles. For example, with neutron as incident particle, a specific target in a ndfy$\scriptstyle \bf i$ file may have neutrons, protons, deuterons and gammas as transportable outgoing particles. In this case ndfnyos would return 4. (See routine ndfnppyos for more details.)

Related routines: ndfiso: ndfyos, ndfed, ndfppyos, ndfnppyos


ndfpmat

Purpose:

Returns the collapsed production transfer matrix and the corrected, collapsed, deposited energy.

FORTRAN Calling:

Call ndfpmat( matrix, ed, yo, ch, nch )

Real*8 matrix( nch x ncg ) o barn y i $ \rightarrow$ yo production transfer
        matrix for yi $ \neq$ yo
Real*8 ed( ncg ) o MeV-barn Corrected energy deposited by yo
Integer yo i N/A Requested outgoing particle (yo $ \neq$ yi)
Real*8 ch( nch + 1 ) i MeV Outgoing particle's collapsed group
        boundaries
Integer nch i N/A Number of groups in ch
This routine returns the collapsed production transfer matrix (i.e., yi $ \rightarrow$ yo for yi $ \neq$ yo) and the corrected deposited energy for yo = yo. The outgoing particle's deposition energy is collapsed to ch. To obtain ncg call ndfngroup. If iecflg = 3, see ndfyo_info, the deposited energy returned by ndfed is corrected so that the outgoing particle's number and energy are conserved. This corrected energy is returned in ed. This routine returns all zeros in matrix and energy if the requested yo is not present for the current target. Use ndfsig or ndftransfer to obtain the interaction transfer matrix (i.e., yi $ \rightarrow$ yo for yi = yo).

Fatal Message(s): Prints a fatal message if yo is not present in the particle directory of the global data section.

Related routines: ndfiso: ndfnppyos, ndfppyos, ndfyo_gid, ndfed, ndfppmatrix, ndfsig


ndfppmatrix

Purpose:

Returns the uncollapsed production transfer matrix for the requested outgoing particle for the current target.

FORTRAN Calling:

Call ndfppmatrix( yo, matrix, nh )

Integer yo i N/A Requested outgoing particle (yo $ \neq$ yi)
Real*8 matrix( nh x ng ) o barn yi $ \rightarrow$ yo production transfer matrix for yi $ \neq$ yo
Integer nh o N/A Number of groups representing the outgoing
        particle's energy groups
The uncollapsed production transfer matrix (i.e., yi $ \rightarrow$ yo for yi $ \neq$ yo) for the requested transportable outgoing particle for the current target is returned. See ndfppyos for a list of transportable outgoing particle for the current target.

Fatal Message(s): Prints a fatal message if the requested transportable outgoing particle is not present.

Related routines: ndfiso: ndfpmat, ndfnppyos, ndfppyos


ndfppyos

Purpose:

Returns the list of transportable outgoing particles for which there are production transfer matrices for the current target.

FORTRAN Calling:

Call ndfppyos( yoList, nyos )

Integer yoList( nyos ) o N/A List of outgoing particles for the current target
Integer nyos o N/A Number of outgoing particles returned
For each target there is a list of possible transportable outgoing particles. For example, with neutron as incident particle, a specific target in a ndfy$\scriptstyle \bf i$ file may have neutrons, protons, deuterons and gammas as transportable outgoing particles. In this case ndfyos would return yo = { 2, 3, 7 } and n = 3, since the transfer matrix for yo = yi is not included. The transfer matrix for yo = yi, called the interaction transfer matrix, is obtained using ndfsig or ndftransfer.

Related routines: ndfiso: ndfnppyos, ndfpmat, ndfppmatrix


ndfprod

Purpose:

Returns the ZA and multiplicity lists for particles produced by the requested reaction for the current target.

FORTRAN Calling:

Call ndfprod( C, n, ZAList, MList )

Integer C i N/A C-value for the reaction
Integer n o N/A Number of outgoing particles produced for reaction C
Integer ZAList( n ) o N/A List of ZAs
Integer MList( n ) o N/A List of multiplicities
For each incident particle, target and reaction combination in a ndfy$\scriptstyle \bf i$ file, there is a list of outgoing particles produced and their multiplicities. For example, when a neutron is incident on 239Pu, ZA = 94239, a possible reaction is two neutrons out, C = 12:

n + 239Pu $ \rightarrow$ n + n + 238Pu .
For this case, ndfprod will return n = 2, ZAList = {1, 94238} and MList = {2, 1}. This means that two neutron (i.e., ZAList(1) = 1 and MList(1) = 2) and one 238Pu (i.e., ZAList(2) = 94238 and MList(2) = 1) are produced. Note, in this reaction there is no mention of the gammas produced as they are not included in the particle production list. Information about the gammas may be given in the production transfer matrix and the energy deposited to the outgoing particle (see ndfppyos, ndfpmat and ndfed).

For neutrons, the multiplicity may be zero. In this case, the outgoing neutron information is obtained by calling ndffisx. For example, calling ndfprod for a typical fission reaction, C = 15, of target 239Pu may return n = 2, ZAList = {1, 99120} and MList = {0, 2} (ZA = 99120 is the special ZA code for prompt fission products and ZA = 99125 is the special ZA code for delayed fission products). In this example 2 prompt fission products are produced and MList(1) = 0 implies that ndffisx must be called to get the multiplicity data for neutrons.

Fatal Message(s): Prints a fatal message if the requested C-value is not in the reaction list for the current target.

Related routines: ndfiso: ndfnprod


ndfreact

Purpose:

Returns a list of C-values for the reactions for the current target.

FORTRAN Calling:

Call ndfreact( CList, n )

Integer CList( n ) o N/A C-value for each reaction
Integer n o N/A Number of reactions returned
For each target there is a list of reactions. A reaction is a unique combination of C-, S-, Q-, X1-, X2-, X3-, and Q eff-values (see Reaction specific information in section 5.2). This routine returns the C-value for each reaction and the number of reactions for the current target. For example, for one target in a ndf1 file the following was returned; CList = { 10, 11, 11, 11, 11, 11, 11, 11, 12, 13, 14, 15, 46, 46 } and n = 14.

Related routines: ndfiso: ndfnreact, ndfrxs, ndfrxslevel, ndfrxslist


ndfrxs

Purpose:

Returns the requested reaction's collapsed cross-section data for the current target.

FORTRAN Calling:

Call ndfrxs( C, cs, Q, n )

Integer C i N/A C-value of the requested reaction
Real*8 cs( ncg ) o barn Collapsed cross-section for this reaction
Real*8 Q o MeV Q-value of reaction
Integer n i N/A Number of reactions with this C-value to include
For each unique combination of C-, S-, Q-, X1-, X2-, X3-, and Q eff-values (see Reaction specific information in section 5.2), for a given target in a ndfy$\scriptstyle \bf i$ file, the cross-section is stored. For a specific reaction type, specified by the C-value, ndfrxs will sum the cross-sections for the first n of these reactions and return it in cs. If n = 0 then all reactions with this C-value are summed. The Q-value, (i.e. Q and not Q eff in the list above) of the last reaction included in the sum is returned in Q. To obtain ncg call ndfngroup.

Related routines: ndfiso: ndfnrxs, ndf, ndfrxslevel, ndfrxslist


ndfrxslevel

Purpose:

Returns S-, Q-, X1-, X2-, X3-, Q eff-values and the collapsed cross-section for the requested level of the requested reaction for the current target.

FORTRAN Calling:

err = ndfrxslevel( C, L, S, Q, X1, X2, X3, Qeff, cs )

Integer C i N/A C-value for the requested reaction
Integer L i N/A Level for requested C-value
Integer S o N/A S-value for reaction
Real*8 Q o MeV Q-value for reaction
Real*8 X1 o Varies X1-value for reaction
Real*8 X2 o Varies X2-value for reaction
Real*8 X3 o Varies X3-value for reaction
Real*8 Qeff o MeV Q eff-value for reaction
Real*8 cs( ncg ) o barns collapsed cross-section for reaction
Integer err f N/A 1 if requested C and L are present, 0 otherwise
The meanings and units for X1-, X2-, and X3-values depend on the S-value. There are ncg data points return in cs (see ndfngroup). If no reaction for the requested C-value and level exist then err = 0 is returned. L is an index for the level in the range 1 to the value returned by ndfnrxs.

Related routines: ndfiso: ndfrxs, ndfnrxs, ndfrxslist


ndfrxslist

Purpose:

Returns a list of S-, Q-, X1-, X2-, X3- and Q eff-values for the requested reaction for the current target.

FORTRAN Calling:

n = ndfrxslist( C, S, Q, X1, X2, X3, Qeff )

Integer C i N/A C-value for the requested reaction
Integer S( n ) o N/A List of S-values for reaction
Real*8 Q( n ) o MeV List of Q-values for reaction
Real*8 X1( n ) o Varies List of X1-values for reaction
Real*8 X2( n ) o Varies List of X2-values for reaction
Real*8 X3( n ) o Varies List of X3-values for reaction
Real*8 Qeff( n ) o MeV List of Q eff-values for reaction
Integer n f N/A Number of reactions of type C
The meanings and units for X1-, X2-, and X3-values depend on the S-value. If no reaction for the requested C-value exist then n = 0 is returned. As example, if ndfrxslist is called with C = 42 for the data of Table 4 then the following is returned: S = { 1, 1 }, Q = { -10.44, -10.44 }, X1 = { 0., 0.478 }, X2 = { 0., 0. }, X3 = { 0., 0. }, Qeff = { -10.439, -10.917 } and n = 2. If memory must be allocated before calling ndfrxslist, the routine ndfnrxs can be called before ndfrxslist to obtain n.

Related routines: ndfiso: ndfrxs, ndfnrxs, ndfrxslevel


ndfsig

Purpose:

Returns the collapsed total cross-section (transport corrected), the collapsed interaction transfer matrix (yi $ \rightarrow$ yo for yi = yo transport corrected), the collapsed energy deposited by yo = yi and the collapsed transport correcting cross-section for the requested Legendre order for the current target.

FORTRAN Calling:

Call ndfsig( tcs, ed, tm, tc, l )

Real*8 tcs( ncg ) o barn Collapsed transport corrected total cross-section
Real*8 ed( ncg ) o MeV-barn Collapsed corrected energy deposited by incident
        particle type
Real*8 tm( ncg x o barn Collapsed transport corrected interaction
  ncg x ( l + 1 ) )     transfer matrix
Real*8 tc( ncg ) o barn Collapsed transport correcting cross-section
Integer l i N/A Requested Legendre order
This routine first calls other ndf routines to calculate the transport correcting cross-section for Legendre order l + 1. Then, the transport corrected, total cross-section and the transport corrected interaction transfer matrix (yi $ \rightarrow$ yo for yi = yo) are calculated. All interaction transfer matrices for Legendre order 0 to l inclusive are transport corrected and returned. If iecflg = 3, see ndfyo_info, the deposited energy returned by ndfed is corrected so that outgoing particle number and energy are conserved. (see ndfpmat) To obtain ncg call ndfngroup.

Fatal Message(s): Prints a fatal message if the request l-order is invalid.

Related routines: ndfiso: ndftotal, ndfed, ndfyo_info


ndfsp

Purpose:

Returns the collapsed group speeds for the opened ndfy$\scriptstyle \bf i$ file.

FORTRAN Calling:

Call ndfsp( speeds )

Real*8 speeds( ncg ) o cm/sh Collapsed group speeds for the opened ndfy$\scriptstyle \bf i$ file
This routine returns the collapsed group speeds for the opened ndfy$\scriptstyle \bf i$ file. There are ncg data points returned (see ndfngroup).

Related routines: ndfinit:


ndftotal

Purpose:

Returns the collapsed uncorrected total cross-section for the current target.

FORTRAN Calling:

Call ndftotal( tcs )

Real*8 tcs( ncg ) o barn Collapsed uncorrected total cross-section for the current target
This routine returns the collapsed uncorrected total cross-section for the current target. There are ncg data points returned (see ndfngroup).

Related routines: ndfiso: ndfsig


ndftransfer

Purpose:

Returns the uncollapsed, uncorrected interaction transfer matrix for the requested Legendre order for the current target.

FORTRAN Calling:

Call ndftransfer( tm, l )

Real*8 tm( ng x ng ) o barn Uncollapsed, uncorrected interaction
        transfer matrix for Legendre order l
Integer l i N/A Requested Legendre order
The uncollapsed, uncorrected interaction transfer matrix (i.e., yi $ \rightarrow$ yi for yi = yo) for the requested Legendre order for the current target is returned.

Fatal Message(s): Prints a fatal message if the requested Legendre order is not present.

Related routines: ndfiso: ndfpmat, ndfmxorder


ndftrcorr

Purpose:

Sets the desired transport correction method.

FORTRAN Calling:

Call ndftrcorr( c )

Integer c i N/A Desired transport correction method
The ndf routines allow for 4 difference transport correction methods. This routine sets the transport correction method to c, as described in the following table.

c Maximum l Correction method
0 lMax No correction
1 lMax - 1 Pendlebury/Underhill correction (default)
2 lMax Legacy LLNL correction
3 lMax - 1 Ferguson correction

In this table the second column is the maximum Legendre order the user can request. The transport correcting cross-section can be calculated to one greater than this Legendre order. For example, if lMax = 3 and the correction method is Pendlebury/Underhill then ndfsig can only be called for l-order up to 2. This routine must be called after each call to ndfinit, as ndfinit resets the internal flag to the default.

Fatal Message(s): Prints a fatal message if an invalid transport correct method is requested.

Related routines: ndfinit:


ndfwsp

Purpose:

Returns the collapsed normalized l = 0 flux.

FORTRAN Calling:

Call ndfwsp( w )

Real*8 w( ncg ) o N/A Collapsed normalized l = 0 flux
This routine returns the collapsed normalized l = 0 flux. There are ncg data points returned (see ndfngroup). It can only be called after ndfgroup has been called.

Fatal Message(s): Prints a fatal message if the l = 0 flux is all zeros.

Related routines: ndfgroup:


ndfyo

Purpose:

Returns the jth particle's id from the particle directory of the global data section.

FORTRAN Calling:

yo = ndfyo( j )

Integer j i N/A The index of the requested particle's id
Integer yo f N/A The jth particle id from particle directory
This routine can be used to loop over the particle directory of the global data section. To step through the particles in the particle directory, start with j = 1 (FORTRAN indexing is used) and increment it in a while loop until yo = -1 is returned. For example,

    n = 0
    yo = 0
    Do While( yo .ne. -1 )
        yo = ndfyo( n + 1 )          ! FORTRAN indexing.
        If( yo .ne. -1 ) n = n + 1
    EndDo
    Print *, 'n = ', n

prints the number of particles in the particle directory of the global data section.

Related routines: ndfbuff:


ndfyos

Purpose:

Returns a list of transportable outgoing particles with energy deposit data for the current target.

FORTRAN Calling:

Call ndfyos( yo, n )

Integer yo( n ) o N/A List of transportable outgoing particles with energy deposit data
Integer n o N/A Number of transportable outgoing particles with energy
        deposit data
For each target there is a list of possible transportable outgoing particles. For example, with neutron as incident particle, a specific target in a ndfy$\scriptstyle \bf i$ file may have neutrons, protons, deuterons and gammas as transportable outgoing particles. In this case ndfyos would return yo = { 1, 2, 3, 7 } and n = 4.

Related routines: ndfiso: ndfnyos, ndfed, ndfppyos, ndfnppyos


ndfyo_gid

Purpose:

Returns the group id for the requested outgoing particle.

FORTRAN Calling:

gid = ndfyo_gid( yo )

Integer yo i N/A The requested outgoing particle
Integer gid f N/A The group id used for the outgoing particle
The uncollapsed production transfer matrix is grouped in incident and outgoing particle energies. The uncollapsed grouping for the outgoing particle energies is contained in the bdfls file and has the group id = gid.

Related routines: ndfiso:


ndfyo_info

Purpose:

Returns the number of energy groups, nh, and the conservation flag, iecflg, for the requested transportable outgoing particle.

FORTRAN Calling:

Call ndfyo_info( yo, nh, iecflg )

Integer yo i N/A Requested transportable outgoing particle
Integer nh o N/A Number of groups representing the transportable
        outgoing particle's energy grouping
Integer iecflg o N/A Particle and/or Energy conservation flag
This routine returns the number of groups representing the outgoing particle's energy grouping in the uncollapsed production transfer matrix. If outgoing particle's energy grouping is of size nh then in FORTRAN the uncollapsed production transfer matrix would be equivalent to the declaration,

Real*8 matrix( nh, ng ) .

However, ndf treats all matrices as one dimensional vectors. The routine also returns iecflg which is a flag indicating the conservation mode used to process the production transfer matrix for this outgoing particle. The meaning of iecflg is as follows,

iecflg Description
0 Conserve particles
1 Conserve energy, used for gammas (yo = 7)
2 Conserve energy for the l = 0 Legendre order
3 Conserve particles and energy

If the requested yo is not present then nh = -1 and iecflg = -1.

Related routines: ndfbuff: ndfpmat, ndfppmatrix, ndfppyos


next up previous contents
Next: Summary of C routines Up: ndf access routines Previous: Summary of FORTRAN routines   Contents