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 // 56 // 57 // This class is a copy of Fission.cc, made fo 57 // This class is a copy of Fission.cc, made for use with Geant4. 58 // 58 // 59 59 60 #include "G4fissionEvent.hh" 60 #include "G4fissionEvent.hh" 61 61 62 G4fissionEvent* fe; 62 G4fissionEvent* fe; 63 63 64 extern G4float (*rngfptr) (void); 64 extern G4float (*rngfptr) (void); 65 65 66 extern G4double (*rngdptr) (void); 66 extern G4double (*rngdptr) (void); 67 67 68 extern G4double rngf2d(void); 68 extern G4double rngf2d(void); 69 69 70 void genspfissevt_(G4int *isotope, G4double 70 void genspfissevt_(G4int *isotope, G4double *time) { 71 if (fe != 0) delete fe; 71 if (fe != 0) delete fe; 72 fe = new G4fissionEvent(*isotope, *time, 72 fe = new G4fissionEvent(*isotope, *time, -1., 0.); 73 } 73 } 74 74 75 void genfissevt_(G4int *isotope, G4double * 75 void genfissevt_(G4int *isotope, G4double *time, G4double *nubar, G4double *eng) { 76 if (fe != 0) delete fe; 76 if (fe != 0) delete fe; 77 fe = new G4fissionEvent(*isotope, *time, 77 fe = new G4fissionEvent(*isotope, *time, *nubar, *eng); 78 } 78 } 79 79 80 G4int getnnu_() { 80 G4int getnnu_() { 81 return (*fe).getNeutronNu(); 81 return (*fe).getNeutronNu(); 82 } 82 } 83 83 84 G4int getpnu_() { 84 G4int getpnu_() { 85 return (*fe).getPhotonNu(); 85 return (*fe).getPhotonNu(); 86 } 86 } 87 87 88 G4double getneng_(G4int *index) { 88 G4double getneng_(G4int *index) { 89 return (*fe).getNeutronEnergy(*index); 89 return (*fe).getNeutronEnergy(*index); 90 } 90 } 91 91 92 G4double getnvel_(G4int *index) { 92 G4double getnvel_(G4int *index) { 93 return (*fe).getNeutronVelocity(*index); 93 return (*fe).getNeutronVelocity(*index); 94 } 94 } 95 95 96 G4double getndircosu_(G4int *index) { 96 G4double getndircosu_(G4int *index) { 97 return (*fe).getNeutronDircosu(*index); 97 return (*fe).getNeutronDircosu(*index); 98 } 98 } 99 99 100 G4double getndircosv_(G4int *index) { 100 G4double getndircosv_(G4int *index) { 101 return (*fe).getNeutronDircosv(*index); 101 return (*fe).getNeutronDircosv(*index); 102 } 102 } 103 103 104 G4double getndircosw_(G4int *index) { 104 G4double getndircosw_(G4int *index) { 105 return (*fe).getNeutronDircosw(*index); 105 return (*fe).getNeutronDircosw(*index); 106 } 106 } 107 107 108 G4double getpeng_(G4int *index) { 108 G4double getpeng_(G4int *index) { 109 return (*fe).getPhotonEnergy(*index); 109 return (*fe).getPhotonEnergy(*index); 110 } 110 } 111 111 112 G4double getpvel_(G4int *index) { 112 G4double getpvel_(G4int *index) { 113 return (*fe).getPhotonVelocity(*index); 113 return (*fe).getPhotonVelocity(*index); 114 } 114 } 115 115 116 G4double getpdircosu_(G4int *index) { 116 G4double getpdircosu_(G4int *index) { 117 return (*fe).getPhotonDircosu(*index); 117 return (*fe).getPhotonDircosu(*index); 118 } 118 } 119 119 120 G4double getpdircosv_(G4int *index) { 120 G4double getpdircosv_(G4int *index) { 121 return (*fe).getPhotonDircosv(*index); 121 return (*fe).getPhotonDircosv(*index); 122 } 122 } 123 123 124 G4double getpdircosw_(G4int *index) { 124 G4double getpdircosw_(G4int *index) { 125 return (*fe).getPhotonDircosw(*index); 125 return (*fe).getPhotonDircosw(*index); 126 } 126 } 127 127 128 G4double getnage_(G4int *index) { 128 G4double getnage_(G4int *index) { 129 return (*fe).getNeutronAge(*index); 129 return (*fe).getNeutronAge(*index); 130 } 130 } 131 131 132 G4double getpage_(G4int *index) { 132 G4double getpage_(G4int *index) { 133 return (*fe).getPhotonAge(*index); 133 return (*fe).getPhotonAge(*index); 134 } 134 } 135 135 136 void setdelay_(G4int *delay) { 136 void setdelay_(G4int *delay) { 137 (*fe).setDelayOption(*delay); 137 (*fe).setDelayOption(*delay); 138 } 138 } 139 139 140 void setcorrel_(G4int *correlation) { 140 void setcorrel_(G4int *correlation) { 141 (*fe).setCorrelationOption(*correlation) 141 (*fe).setCorrelationOption(*correlation); 142 } 142 } 143 143 144 void setnudist_(G4int *nudist) { 144 void setnudist_(G4int *nudist) { 145 /* 145 /* 146 where the argument *nudist affects induc 146 where the argument *nudist affects induced fissions only, it 147 is set to 147 is set to 148 0 for sampling Zucker and Holden prob 148 0 for sampling Zucker and Holden probability distributions 149 for U-235,238 and Pu-239. Terrell f 149 for U-235,238 and Pu-239. Terrell for other isotopes. 150 1 same as above, but using Gwin, Spen 150 1 same as above, but using Gwin, Spencer and Ingle 151 tabulated distributions for thermal 151 tabulated distributions for thermal energies for U-235. 152 Terrell for other isotopes. 152 Terrell for other isotopes. 153 2 for sampling fission-induced neutro 153 2 for sampling fission-induced neutron multiplicity in 154 (a) U-232, U-234, U-236 and U-238 u 154 (a) U-232, U-234, U-236 and U-238 using Zucker and 155 Holden's tabulated data for U-2 155 Holden's tabulated data for U-238 156 (b) U-233 and U-235 using Zucker an 156 (b) U-233 and U-235 using Zucker and Holden's tabulated 157 data for U-235 157 data for U-235 158 (c) Pu-239 and Pu-241 using Zucker 158 (c) Pu-239 and Pu-241 using Zucker and Holden's tabulated 159 data for Pu-239 159 data for Pu-239 160 The P(nu) distributions for *nudist 160 The P(nu) distributions for *nudist=2 are given as a 161 function of the average number of n 161 function of the average number of neutrons from fission, 162 based on interpolation of the data 162 based on interpolation of the data from Zucker and Holden. 163 Terrell for other isotopes. 163 Terrell for other isotopes. 164 3 for sampling fission-induced neutro 164 3 for sampling fission-induced neutron multiplicity in 165 (a) U-232, U-234, U-236 and U-238 u 165 (a) U-232, U-234, U-236 and U-238 using Zucker and 166 Holden's tabulated data for U-2 166 Holden's tabulated data for U-238 167 (b) U-233 and U-235 using Zucker an 167 (b) U-233 and U-235 using Zucker and Holden's tabulated 168 data for U-235 168 data for U-235 169 (c) Pu-239 and Pu-241 using Zucker 169 (c) Pu-239 and Pu-241 using Zucker and Holden's tabulated 170 data for Pu-239 170 data for Pu-239 171 The Z&H tables have P(nu) distribut 171 The Z&H tables have P(nu) distributions for 11 energies 172 (0 MeV through 10 MeV), along with 172 (0 MeV through 10 MeV), along with their nubars. For 173 *nudist=3, we select the P(nu) dist 173 *nudist=3, we select the P(nu) distribution that has 174 a nubar closest either from above, 174 a nubar closest either from above, or from below, to the 175 to the nubar entered for the induce 175 to the nubar entered for the induced fission, based on a 176 random number and fractional distan 176 random number and fractional distances to the end of the 177 nubar interval thus formed. 177 nubar interval thus formed. 178 Terrell for other isotopes. 178 Terrell for other isotopes. 179 */ 179 */ 180 180 181 (*fe).setNudistOption(*nudist); 181 (*fe).setNudistOption(*nudist); 182 } 182 } 183 183 184 void setcf252_(G4int *ndist, G4int *neng) { 184 void setcf252_(G4int *ndist, G4int *neng) { 185 /* 185 /* 186 where the argument 186 where the argument 187 *ndist is set to 187 *ndist is set to 188 0 to sample the spontaneous fission n 188 0 to sample the spontaneous fission neutron multiplicity 189 using tabulated data from Spencer 189 using tabulated data from Spencer 190 1 to sample the spontaneous fission n 190 1 to sample the spontaneous fission neutron multiplicity 191 using tabulated data from Boldeman 191 using tabulated data from Boldeman 192 *neng is set to 192 *neng is set to 193 0 to sample the Mannhart corrected Ma 193 0 to sample the Mannhart corrected Maxwellian spectrum 194 1 to sample the Madland-Nix theoretic 194 1 to sample the Madland-Nix theoretical spectrum 195 2 to sample the Froehner Watt spectru 195 2 to sample the Froehner Watt spectrum 196 */ 196 */ 197 (*fe).setCf252Option(*ndist, *neng); 197 (*fe).setCf252Option(*ndist, *neng); 198 } 198 } 199 199 200 void setrngf_(G4float (*funcptr) (void)) { 200 void setrngf_(G4float (*funcptr) (void)) { 201 G4fissionEvent::setRNGf(funcptr); 201 G4fissionEvent::setRNGf(funcptr); 202 } 202 } 203 203 204 void setrngd_(G4double (*funcptr) (void)) { 204 void setrngd_(G4double (*funcptr) (void)) { 205 G4fissionEvent::setRNGd(funcptr); 205 G4fissionEvent::setRNGd(funcptr); 206 } 206 } 207 // } 207 // } 208 208