Skip to content

Commit cce9418

Browse files
committed
Merge branch 'fix/no-resonances-in-spingroup' into 'develop'
Fix/no resonances in spingroup See merge request njoy/dryad!127
2 parents baf6716 + 56421f8 commit cce9418

File tree

7 files changed

+50434
-36
lines changed

7 files changed

+50434
-36
lines changed

cmake/dependencies.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ shacl_FetchContent_Declare( ACEtk
3131

3232
shacl_FetchContent_Declare( ENDFtk
3333
GIT_REPOSITORY ../../njoy/ENDFtk
34-
GIT_TAG 027ff90eac7ddf4145b915c746250bed2e668f22 # NOT A RELEASED VERSION - CHANGE ME!
34+
GIT_TAG d38d4f96b9346bb80f238b083beb28a9d7ea9269 # NOT A RELEASED VERSION - CHANGE ME!
3535
)
3636

3737
#######################################################################

src/njoy/dryad/format/endf/resonances/lrf7/createChannelData.hpp

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -49,38 +49,51 @@ namespace lrf7 {
4949
for ( unsigned int i = 0; i < channels.size(); ++i ) {
5050

5151
// get the energies and amplitudes
52-
auto energies = format::createVector( endfSpinGroup.parameters().resonanceEnergies() );
53-
auto amplitudes = format::createVector( endfSpinGroup.parameters().GAM(i) );
54-
55-
// remove zero widths
56-
auto is_zero= [] ( auto&& value ) { return value == 0.; };
57-
auto amplitude = std::find_if( amplitudes.begin(), amplitudes.end(), is_zero );
58-
while ( amplitude != amplitudes.end() ) {
59-
60-
auto index = std::distance( amplitudes.begin(), amplitude );
61-
amplitude = amplitudes.erase( amplitude );
62-
energies.erase( energies.begin() + index );
63-
amplitude = std::find_if( amplitude, amplitudes.end(), is_zero );
64-
}
52+
std::vector< double > energies;
53+
std::vector< double > amplitudes;
54+
if ( endfSpinGroup.parameters().numberResonances() != 0 ) {
55+
56+
// get the data
57+
energies = format::createVector( endfSpinGroup.parameters().resonanceEnergies() );
58+
amplitudes = format::createVector( endfSpinGroup.parameters().GAM(i) );
59+
60+
// remove zero widths
61+
auto is_zero= [] ( auto&& value ) { return value == 0.; };
62+
auto amplitude = std::find_if( amplitudes.begin(), amplitudes.end(), is_zero );
63+
while ( amplitude != amplitudes.end() ) {
64+
65+
auto index = std::distance( amplitudes.begin(), amplitude );
66+
amplitude = amplitudes.erase( amplitude );
67+
energies.erase( energies.begin() + index );
68+
amplitude = std::find_if( amplitude, amplitudes.end(), is_zero );
69+
}
6570

66-
// if there are non-zero widths
67-
if ( amplitudes.size() != 0 ) {
71+
// if there are non-zero widths left
72+
if ( amplitudes.size() != 0 ) {
6873

69-
// transform into reduced width if required
70-
if ( ! reduced_amplitudes ) {
74+
// transform into reduced width if required
75+
if ( ! reduced_amplitudes ) {
7176

72-
auto to_reduced_width = [&] ( auto&& width, auto&& energy ) {
77+
auto to_reduced_width = [&] ( auto&& width, auto&& energy ) {
7378

74-
double penetrability = channels[i].penetrability( energy );
75-
return ( width < 0. ? -1. : +1. ) *
76-
std::sqrt( 0.5 * std::abs( width ) / penetrability );
77-
};
79+
double penetrability = channels[i].penetrability( energy );
80+
return ( width < 0. ? -1. : +1. ) *
81+
std::sqrt( 0.5 * std::abs( width ) / penetrability );
82+
};
7883

79-
std::transform( amplitudes.begin(), amplitudes.end(),
80-
energies.begin(), amplitudes.begin(), to_reduced_width );
84+
std::transform( amplitudes.begin(), amplitudes.end(),
85+
energies.begin(), amplitudes.begin(), to_reduced_width );
86+
}
8187
}
88+
}
89+
90+
auto id = channels[i].identifier();
91+
auto reaction_id = id.reaction();
92+
auto is_elastic = id.reaction().target() == id.reaction().residual();
93+
auto is_capture = id.reaction().reactionType() == id::ReactionType( "capture" );
94+
95+
if ( amplitudes.size() > 0 || is_elastic || is_capture ) {
8296

83-
auto id = channels[i].identifier();
8497
dryad::resonances::ResonanceTable table( id, std::move( energies ), std::move( amplitudes ) );
8598
channel_data.emplace_back( std::move( channels[i] ), std::move( table ) );
8699
}

src/njoy/dryad/format/endf/resonances/lrf7/createSpinGroups.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ namespace lrf7 {
8282
auto iter = channel_data.begin();
8383
while ( iter != channel_data.end() ) {
8484

85+
// get all channel data for a given Jpi
8586
auto begin = iter;
8687
iter = std::upper_bound( begin, channel_data.end(),
8788
getJpi( *begin ),

0 commit comments

Comments
 (0)