Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // 26 // 27 // This software was developed by Lawrence Liv 27 // This software was developed by Lawrence Livermore National Laboratory. 28 // 28 // 29 // Redistribution and use in source and binary 29 // Redistribution and use in source and binary forms, with or without 30 // modification, are permitted provided that t 30 // modification, are permitted provided that the following conditions are met: 31 // 31 // 32 // 1. Redistributions of source code must reta 32 // 1. Redistributions of source code must retain the above copyright notice, 33 // this list of conditions and the following 33 // this list of conditions and the following disclaimer. 34 // 2. Redistributions in binary form must repr 34 // 2. Redistributions in binary form must reproduce the above copyright notice, 35 // this list of conditions and the following 35 // this list of conditions and the following disclaimer in the documentation 36 // and/or other materials provided with the 36 // and/or other materials provided with the distribution. 37 // 3. The name of the author may not be used t 37 // 3. The name of the author may not be used to endorse or promote products 38 // derived from this software without specif 38 // derived from this software without specific prior written permission. 39 // 39 // 40 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``A 40 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 41 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 41 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 42 // MERCHANTABILITY AND FITNESS FOR A PARTICULA 42 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 43 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DI 43 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGE 44 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 45 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES 45 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 46 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AN 46 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 47 // WHETHER IN CONTRACT, STRICT LIABILITY, OR T 47 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 48 // OTHERWISE) ARISING IN ANY WAY OUT OF THE US 48 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 49 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 49 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 50 // 50 // 51 // Copyright (c) 2006 The Regents of the Unive 51 // Copyright (c) 2006 The Regents of the University of California. 52 // All rights reserved. 52 // All rights reserved. 53 // UCRL-CODE-224807 53 // UCRL-CODE-224807 54 // 54 // 55 // 55 // >> 56 // $Id: G4LLNLFission.cc 68799 2013-04-05 13:29:46Z gcosmo $ 56 // 57 // 57 // This class is a copy of Fission.cc, made fo 58 // This class is a copy of Fission.cc, made for use with Geant4. 58 // 59 // 59 60 60 #include "G4fissionEvent.hh" 61 #include "G4fissionEvent.hh" 61 62 62 G4fissionEvent* fe; 63 G4fissionEvent* fe; 63 64 64 extern G4float (*rngfptr) (void); 65 extern G4float (*rngfptr) (void); 65 66 66 extern G4double (*rngdptr) (void); 67 extern G4double (*rngdptr) (void); 67 68 68 extern G4double rngf2d(void); 69 extern G4double rngf2d(void); 69 70 70 void genspfissevt_(G4int *isotope, G4double 71 void genspfissevt_(G4int *isotope, G4double *time) { 71 if (fe != 0) delete fe; 72 if (fe != 0) delete fe; 72 fe = new G4fissionEvent(*isotope, *time, 73 fe = new G4fissionEvent(*isotope, *time, -1., 0.); 73 } 74 } 74 75 75 void genfissevt_(G4int *isotope, G4double * 76 void genfissevt_(G4int *isotope, G4double *time, G4double *nubar, G4double *eng) { 76 if (fe != 0) delete fe; 77 if (fe != 0) delete fe; 77 fe = new G4fissionEvent(*isotope, *time, 78 fe = new G4fissionEvent(*isotope, *time, *nubar, *eng); 78 } 79 } 79 80 80 G4int getnnu_() { 81 G4int getnnu_() { 81 return (*fe).getNeutronNu(); 82 return (*fe).getNeutronNu(); 82 } 83 } 83 84 84 G4int getpnu_() { 85 G4int getpnu_() { 85 return (*fe).getPhotonNu(); 86 return (*fe).getPhotonNu(); 86 } 87 } 87 88 88 G4double getneng_(G4int *index) { 89 G4double getneng_(G4int *index) { 89 return (*fe).getNeutronEnergy(*index); 90 return (*fe).getNeutronEnergy(*index); 90 } 91 } 91 92 92 G4double getnvel_(G4int *index) { 93 G4double getnvel_(G4int *index) { 93 return (*fe).getNeutronVelocity(*index); 94 return (*fe).getNeutronVelocity(*index); 94 } 95 } 95 96 96 G4double getndircosu_(G4int *index) { 97 G4double getndircosu_(G4int *index) { 97 return (*fe).getNeutronDircosu(*index); 98 return (*fe).getNeutronDircosu(*index); 98 } 99 } 99 100 100 G4double getndircosv_(G4int *index) { 101 G4double getndircosv_(G4int *index) { 101 return (*fe).getNeutronDircosv(*index); 102 return (*fe).getNeutronDircosv(*index); 102 } 103 } 103 104 104 G4double getndircosw_(G4int *index) { 105 G4double getndircosw_(G4int *index) { 105 return (*fe).getNeutronDircosw(*index); 106 return (*fe).getNeutronDircosw(*index); 106 } 107 } 107 108 108 G4double getpeng_(G4int *index) { 109 G4double getpeng_(G4int *index) { 109 return (*fe).getPhotonEnergy(*index); 110 return (*fe).getPhotonEnergy(*index); 110 } 111 } 111 112 112 G4double getpvel_(G4int *index) { 113 G4double getpvel_(G4int *index) { 113 return (*fe).getPhotonVelocity(*index); 114 return (*fe).getPhotonVelocity(*index); 114 } 115 } 115 116 116 G4double getpdircosu_(G4int *index) { 117 G4double getpdircosu_(G4int *index) { 117 return (*fe).getPhotonDircosu(*index); 118 return (*fe).getPhotonDircosu(*index); 118 } 119 } 119 120 120 G4double getpdircosv_(G4int *index) { 121 G4double getpdircosv_(G4int *index) { 121 return (*fe).getPhotonDircosv(*index); 122 return (*fe).getPhotonDircosv(*index); 122 } 123 } 123 124 124 G4double getpdircosw_(G4int *index) { 125 G4double getpdircosw_(G4int *index) { 125 return (*fe).getPhotonDircosw(*index); 126 return (*fe).getPhotonDircosw(*index); 126 } 127 } 127 128 128 G4double getnage_(G4int *index) { 129 G4double getnage_(G4int *index) { 129 return (*fe).getNeutronAge(*index); 130 return (*fe).getNeutronAge(*index); 130 } 131 } 131 132 132 G4double getpage_(G4int *index) { 133 G4double getpage_(G4int *index) { 133 return (*fe).getPhotonAge(*index); 134 return (*fe).getPhotonAge(*index); 134 } 135 } 135 136 136 void setdelay_(G4int *delay) { 137 void setdelay_(G4int *delay) { 137 (*fe).setDelayOption(*delay); 138 (*fe).setDelayOption(*delay); 138 } 139 } 139 140 140 void setcorrel_(G4int *correlation) { 141 void setcorrel_(G4int *correlation) { 141 (*fe).setCorrelationOption(*correlation) 142 (*fe).setCorrelationOption(*correlation); 142 } 143 } 143 144 144 void setnudist_(G4int *nudist) { 145 void setnudist_(G4int *nudist) { 145 /* 146 /* 146 where the argument *nudist affects induc 147 where the argument *nudist affects induced fissions only, it 147 is set to 148 is set to 148 0 for sampling Zucker and Holden prob 149 0 for sampling Zucker and Holden probability distributions 149 for U-235,238 and Pu-239. Terrell f 150 for U-235,238 and Pu-239. Terrell for other isotopes. 150 1 same as above, but using Gwin, Spen 151 1 same as above, but using Gwin, Spencer and Ingle 151 tabulated distributions for thermal 152 tabulated distributions for thermal energies for U-235. 152 Terrell for other isotopes. 153 Terrell for other isotopes. 153 2 for sampling fission-induced neutro 154 2 for sampling fission-induced neutron multiplicity in 154 (a) U-232, U-234, U-236 and U-238 u 155 (a) U-232, U-234, U-236 and U-238 using Zucker and 155 Holden's tabulated data for U-2 156 Holden's tabulated data for U-238 156 (b) U-233 and U-235 using Zucker an 157 (b) U-233 and U-235 using Zucker and Holden's tabulated 157 data for U-235 158 data for U-235 158 (c) Pu-239 and Pu-241 using Zucker 159 (c) Pu-239 and Pu-241 using Zucker and Holden's tabulated 159 data for Pu-239 160 data for Pu-239 160 The P(nu) distributions for *nudist 161 The P(nu) distributions for *nudist=2 are given as a 161 function of the average number of n 162 function of the average number of neutrons from fission, 162 based on interpolation of the data 163 based on interpolation of the data from Zucker and Holden. 163 Terrell for other isotopes. 164 Terrell for other isotopes. 164 3 for sampling fission-induced neutro 165 3 for sampling fission-induced neutron multiplicity in 165 (a) U-232, U-234, U-236 and U-238 u 166 (a) U-232, U-234, U-236 and U-238 using Zucker and 166 Holden's tabulated data for U-2 167 Holden's tabulated data for U-238 167 (b) U-233 and U-235 using Zucker an 168 (b) U-233 and U-235 using Zucker and Holden's tabulated 168 data for U-235 169 data for U-235 169 (c) Pu-239 and Pu-241 using Zucker 170 (c) Pu-239 and Pu-241 using Zucker and Holden's tabulated 170 data for Pu-239 171 data for Pu-239 171 The Z&H tables have P(nu) distribut 172 The Z&H tables have P(nu) distributions for 11 energies 172 (0 MeV through 10 MeV), along with 173 (0 MeV through 10 MeV), along with their nubars. For 173 *nudist=3, we select the P(nu) dist 174 *nudist=3, we select the P(nu) distribution that has 174 a nubar closest either from above, 175 a nubar closest either from above, or from below, to the 175 to the nubar entered for the induce 176 to the nubar entered for the induced fission, based on a 176 random number and fractional distan 177 random number and fractional distances to the end of the 177 nubar interval thus formed. 178 nubar interval thus formed. 178 Terrell for other isotopes. 179 Terrell for other isotopes. 179 */ 180 */ 180 181 181 (*fe).setNudistOption(*nudist); 182 (*fe).setNudistOption(*nudist); 182 } 183 } 183 184 184 void setcf252_(G4int *ndist, G4int *neng) { 185 void setcf252_(G4int *ndist, G4int *neng) { 185 /* 186 /* 186 where the argument 187 where the argument 187 *ndist is set to 188 *ndist is set to 188 0 to sample the spontaneous fission n 189 0 to sample the spontaneous fission neutron multiplicity 189 using tabulated data from Spencer 190 using tabulated data from Spencer 190 1 to sample the spontaneous fission n 191 1 to sample the spontaneous fission neutron multiplicity 191 using tabulated data from Boldeman 192 using tabulated data from Boldeman 192 *neng is set to 193 *neng is set to 193 0 to sample the Mannhart corrected Ma 194 0 to sample the Mannhart corrected Maxwellian spectrum 194 1 to sample the Madland-Nix theoretic 195 1 to sample the Madland-Nix theoretical spectrum 195 2 to sample the Froehner Watt spectru 196 2 to sample the Froehner Watt spectrum 196 */ 197 */ 197 (*fe).setCf252Option(*ndist, *neng); 198 (*fe).setCf252Option(*ndist, *neng); 198 } 199 } 199 200 200 void setrngf_(G4float (*funcptr) (void)) { 201 void setrngf_(G4float (*funcptr) (void)) { 201 G4fissionEvent::setRNGf(funcptr); 202 G4fissionEvent::setRNGf(funcptr); 202 } 203 } 203 204 204 void setrngd_(G4double (*funcptr) (void)) { 205 void setrngd_(G4double (*funcptr) (void)) { 205 G4fissionEvent::setRNGd(funcptr); 206 G4fissionEvent::setRNGd(funcptr); 206 } 207 } 207 // } 208 // } 208 209