00001 /* 00002 * ******** fete: From ENDF To ENDL ********* 00003 * 00004 * Copyright (c) 2006, The Regents of the University of California. 00005 * All rights reserved. 00006 * 00007 * Produced at the Lawrence Livermore National Laboratory. 00008 * Written by David A. Brown, Gerry Hedstrom, Tony Hill 00009 * 00010 * This file is part of fete v1.0 (UCRL-CODE-218718) 00011 * 00012 * Please read the COPYING file for "Our Notice and GNU General 00013 * Public License" in the root of this software distribution. 00014 * 00015 * This program is free software; you can redistribute it and/or modify 00016 * it under the terms of the GNU General Public License (as published by 00017 * the Free Software Foundation) version 2, dated June 1991. 00018 * 00019 * This program is distributed in the hope that it will be useful, 00020 * but WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF 00021 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms 00022 * and conditions of the GNU General Public License for more details. 00023 * 00024 * You should have received a copy of the GNU General Public License along 00025 * with this program; if not, write to the Free Software Foundation, Inc., 00026 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00027 * 00028 * $Revision: 1735 $ 00029 * $Date: 2006-02-09 13:47:26 -0800 (Thu, 09 Feb 2006) $ 00030 * $Author: dbrown $ 00031 * $Id: mf4classes.hpp 1735 2006-02-09 21:47:26Z dbrown $ 00032 * 00033 * ******** fete: From ENDF To ENDL ********* 00034 */ 00035 00036 //header for the classes used in translating the MF=4 files 00037 00038 #ifndef MF4CLASSES 00039 #define MF4CLASSES 00040 00041 #include "list_2d.hpp" 00042 #include "ENDF_file.hpp" 00043 00044 using namespace std; 00045 00046 // ----------- class two_d_isotropic ----------------- 00047 // derive this class from two_d_list 00048 //! Class to handle isotropic distributions 00049 class two_d_isotropic : public two_d_list<one_d_isotropic> 00050 { 00051 public: 00052 //! Makes an isotropic list 00053 void expand_data(int MT); 00054 00055 }; 00056 00057 // ----------- class two_d_Legendre ----------------- 00058 // derive this class from two_d_list 00059 //! Class to handle Legendre data 00060 class two_d_Legendre : public two_d_list<one_d_Legendre> 00061 { 00062 public: 00063 //! Reads in all the data and expands into linearly interpolable pointwise data 00064 void expand_data(mf4_file& inFile, int NE, int MF); 00065 00066 //! Reads in data for one incident neutron energy and expands 00067 //! *done = true if the incident energy is at or above the maximum 00068 void one_E_in( mf4_file& inFile, int MF, bool *done ); 00069 00070 //! Converts data so that it is linearly interpolable in incident energy 00071 void expand_interp(); 00072 }; 00073 00074 00075 // ----------- class mf4_table ----------------- 00076 //! Class that handles tabular data 00077 class mf4_table : public two_d_table 00078 { 00079 public: 00080 //! Manages everything 00081 void master( mf4_file& inFile ); 00082 00083 //! Reads in all the data 00084 void read_data( mf4_file& inFile, int NE ); 00085 00086 //! Reads in data for a particular incident energy 00087 void one_E_in( mf4_file& inFile ); 00088 00089 }; 00090 00091 // ----------- class mixed_mf4 ----------------- 00092 //! Class that handles Legendre data at low incident energies and tables at high energies 00093 class mixed_mf4 : public two_d_Legendre 00094 { 00095 private: 00096 // For the tabular data 00097 mf4_table table_data; 00098 00099 public: 00100 // Manage everything 00101 void master( mf4_file& inFile ); 00102 }; 00103 00104 // ----------- class gen_mf4 ----------------- 00105 // derive this class from two_d_table 00106 //! Class to handle data coming from MF=6 files 00107 class gen_mf4 : public two_d_table 00108 { 00109 // This class is used by mf6 files, and it may 00110 // contain Legendre data for some incident energies 00111 // and tabular data for others. We convert it to a 00112 // 2-d table. 00113 public: 00114 //! Interprets the data 00115 void master( mf6_file& inFile ); 00116 00117 //! Interprets Legendre data for 1 incident energy 00118 void one_legendre( mf6_file& inFile, double e_in, int NL ); 00119 00120 //! Interprets tabular data for 1 incident energy 00121 void one_table( mf6_file& inFile, double e_in, int NL ); 00122 00123 }; 00124 00125 #endif 00126