From 33bd54815d6235539bdff3035113cb388ecacbf0 Mon Sep 17 00:00:00 2001 From: ralfulrich <ralf.ulrich@kit.edu> Date: Fri, 8 Feb 2019 10:24:34 +0100 Subject: [PATCH] implemented CombinedStack with unit tests --- CMakeModules/CorsikaUtilities.cmake | 1 + Framework/Cascade/Cascade.h | 3 + Framework/StackInterface/CMakeLists.txt | 13 +- Framework/StackInterface/CombinedStack.h | 131 ++ Framework/StackInterface/ParticleBase.h | 23 +- Framework/StackInterface/SecondaryView.h | 6 +- Framework/StackInterface/Stack.h | 33 +- .../StackInterface/StackIteratorInterface.h | 50 +- Framework/StackInterface/comp | 2 + Framework/StackInterface/testCombinedStack.cc | 306 ++++ Framework/StackInterface/testSecondaryView.cc | 105 ++ .../StackInterface/testStackInterface.cc | 161 +- Framework/StackInterface/testTestStack.h | 88 + .../NuclearStackExtension.h | 5 +- nuc/DataSet04.dat | 1497 +++++++++++++++++ nuc/ExpDatabase_Fortran77_v04.tar.gz | Bin 0 -> 22393 bytes nuc/Makefile_ifc | 14 + nuc/input04.f | 782 +++++++++ nuc/main04.f | 20 + 19 files changed, 3061 insertions(+), 179 deletions(-) create mode 100644 Framework/StackInterface/CombinedStack.h create mode 100644 Framework/StackInterface/comp create mode 100644 Framework/StackInterface/testCombinedStack.cc create mode 100644 Framework/StackInterface/testSecondaryView.cc create mode 100644 Framework/StackInterface/testTestStack.h create mode 100644 nuc/DataSet04.dat create mode 100644 nuc/ExpDatabase_Fortran77_v04.tar.gz create mode 100644 nuc/Makefile_ifc create mode 100644 nuc/input04.f create mode 100644 nuc/main04.f diff --git a/CMakeModules/CorsikaUtilities.cmake b/CMakeModules/CorsikaUtilities.cmake index c2a7df5c..85105468 100644 --- a/CMakeModules/CorsikaUtilities.cmake +++ b/CMakeModules/CorsikaUtilities.cmake @@ -86,6 +86,7 @@ endmacro(CORSIKA_ADD_FILES_ABSOLUTE) # function (CORSIKA_ADD_TEST name) + target_include_directories (${name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/test_outputs/) add_test (NAME ${name} COMMAND ${name} -o ${PROJECT_BINARY_DIR}/test_outputs/junit-${name}.xml -r junit) endfunction (CORSIKA_ADD_TEST) diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h index deb90070..d989fba6 100644 --- a/Framework/Cascade/Cascade.h +++ b/Framework/Cascade/Cascade.h @@ -29,6 +29,8 @@ namespace corsika::cascade { /** + * \class Cascade + * * The Cascade class is constructed from template arguments making * it very versatile. Via the template arguments physics models are * plugged into the cascade simulation. @@ -53,6 +55,7 @@ namespace corsika::cascade { class Cascade { using Particle = typename Stack::ParticleType; + // we only want fully configured objects Cascade() = delete; public: diff --git a/Framework/StackInterface/CMakeLists.txt b/Framework/StackInterface/CMakeLists.txt index b3e45fe6..fa0edbef 100644 --- a/Framework/StackInterface/CMakeLists.txt +++ b/Framework/StackInterface/CMakeLists.txt @@ -1,9 +1,10 @@ set ( CORSIKAstackinterface_HEADERS + ParticleBase.h + StackIteratorInterface.h Stack.h SecondaryView.h - StackIteratorInterface.h - ParticleBase.h + CombinedStack.h ) set ( @@ -36,3 +37,11 @@ install ( add_executable (testStackInterface testStackInterface.cc) target_link_libraries (testStackInterface CORSIKAstackinterface CORSIKAthirdparty) # for catch2 CORSIKA_ADD_TEST(testStackInterface) + +add_executable (testSecondaryView testSecondaryView.cc) +target_link_libraries (testSecondaryView CORSIKAstackinterface CORSIKAthirdparty) # for catch2 +CORSIKA_ADD_TEST(testSecondaryView) + +add_executable (testCombinedStack testCombinedStack.cc) +target_link_libraries (testCombinedStack CORSIKAstackinterface CORSIKAthirdparty) # for catch2 +CORSIKA_ADD_TEST(testCombinedStack) diff --git a/Framework/StackInterface/CombinedStack.h b/Framework/StackInterface/CombinedStack.h new file mode 100644 index 00000000..95085c66 --- /dev/null +++ b/Framework/StackInterface/CombinedStack.h @@ -0,0 +1,131 @@ + +/* + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * This software is distributed under the terms of the GNU General Public + * Licence version 3 (GPL Version 3). See file LICENSE for a full version of + * the license. + */ + +#ifndef _include_stack_combinedstack_h_ +#define _include_stack_combinedstack_h_ + +#include <corsika/particles/ParticleProperties.h> +#include <corsika/stack/Stack.h> +#include <corsika/units/PhysicalUnits.h> + +namespace corsika::stack { + + /** + * + * + */ + template <template <typename> typename ParticleInterface, + template <typename> typename ParticleInterfaceAdd, typename StackIterator> + class CombinedParticleInterface + : public ParticleInterfaceAdd<ParticleInterface<StackIterator>> { + + using C = + CombinedParticleInterface<ParticleInterface, ParticleInterfaceAdd, StackIterator>; + using T = ParticleInterfaceAdd<ParticleInterface<StackIterator>>; + using I = ParticleInterface<StackIterator>; + + protected: + using T::GetIndex; + using T::GetStackData; + + public: + template <typename... Args1> + void SetParticleData(const std::tuple<Args1...> vA) { + I::SetParticleData(vA); + T::SetParticleData(); + } + template <typename... Args1, typename... Args2> + void SetParticleData(const std::tuple<Args1...> vA, const std::tuple<Args2...> vB) { + I::SetParticleData(vA); + T::SetParticleData(vB); + } + + template <typename... Args1> + void SetParticleData(C& p, const std::tuple<Args1...> vA) { + // static_assert(MT<I>::has_not, "error"); + I::SetParticleData(static_cast<I&>(p), vA); + T::SetParticleData(static_cast<T&>(p)); + } + template <typename... Args1, typename... Args2> + void SetParticleData(C& p, const std::tuple<Args1...> vA, + const std::tuple<Args2...> vB) { + I::SetParticleData(static_cast<I&>(p), vA); + T::SetParticleData(static_cast<T&>(p), vB); + } + }; + + /** + * Memory implementation of the most simple (stupid) particle stack object. + */ + template <typename Stack1Impl, typename Stack2Impl> + class CombinedStackImpl : public Stack1Impl, public Stack2Impl { + + public: + void Init() { + Stack1Impl::Init(); + Stack2Impl::Init(); + } + + void Clear() { + Stack1Impl::Clear(); + Stack2Impl::Clear(); + } + + unsigned int GetSize() const { return Stack1Impl::GetSize(); } + unsigned int GetCapacity() const { return Stack1Impl::GetCapacity(); } + + /** + * Function to copy particle at location i1 in stack to i2 + */ + void Copy(const unsigned int i1, const unsigned int i2) { + if (i1 >= GetSize() || i2 >= GetSize()) { + std::ostringstream err; + err << "CombinedStack: trying to access data beyond size of stack!"; + throw std::runtime_error(err.str()); + } + Stack1Impl::Copy(i1, i2); + Stack2Impl::Copy(i1, i2); + } + + /** + * Function to copy particle at location i2 in stack to i1 + */ + void Swap(const unsigned int i1, const unsigned int i2) { + if (i1 >= GetSize() || i2 >= GetSize()) { + std::ostringstream err; + err << "CombinedStack: trying to access data beyond size of stack!"; + throw std::runtime_error(err.str()); + } + Stack1Impl::Swap(i1, i2); + Stack2Impl::Swap(i1, i2); + } + + void IncrementSize() { + Stack1Impl::IncrementSize(); + Stack2Impl::IncrementSize(); + } + + void DecrementSize() { + Stack1Impl::DecrementSize(); + Stack2Impl::DecrementSize(); + } + + private: + /// the actual memory to store particle data + + }; // end class CombinedStackImpl + + template <typename Stack1Impl, typename Stack2Impl, template <typename> typename _PI> + using CombinedStack = Stack<CombinedStackImpl<Stack1Impl, Stack2Impl>, _PI>; + +} // namespace corsika::stack + +#endif diff --git a/Framework/StackInterface/ParticleBase.h b/Framework/StackInterface/ParticleBase.h index 417ca49c..e2f277e3 100644 --- a/Framework/StackInterface/ParticleBase.h +++ b/Framework/StackInterface/ParticleBase.h @@ -87,9 +87,9 @@ namespace corsika::stack { return static_cast<const StackIterator&>(*this); } - protected: + // protected: /** - @name Access to underlying stack data, these are service + @name Access to underlying stack dfata, these are service function for user classes. User code can only rely on GetIndex and GetStackData to retrieve data @{ @@ -106,6 +106,25 @@ namespace corsika::stack { ///@} }; + template <typename T> + class ParticleBaseAdd { + + public: + ParticleBaseAdd() = default; + + using T::GetIndex; + using T::GetStackData; + + public: + template <typename... Args1, typename... Args2> + void SetParticleData(Args1... args1, Args2... args2) { + T::SetParticleData(args1...); + } + + template <typename... Args1, typename... Args2> + void SetParticleData(T& p, Args1... args1, Args2... args2) {} + }; + } // namespace corsika::stack #endif diff --git a/Framework/StackInterface/SecondaryView.h b/Framework/StackInterface/SecondaryView.h index 29b25a1b..0993edd9 100644 --- a/Framework/StackInterface/SecondaryView.h +++ b/Framework/StackInterface/SecondaryView.h @@ -3,7 +3,6 @@ #include <corsika/stack/Stack.h> -#include <algorithm> #include <vector> namespace corsika::stack { @@ -176,6 +175,11 @@ namespace corsika::stack { bool IsEmpty() { return GetSize() == 0; } protected: + /** + * We only want to 'see' secondaries indexed in fIndices. In this + * function the conversion form iterator-index to stack-index is + * performed. + */ unsigned int GetIndexFromIterator(const unsigned int vI) const { if (vI == 0) return fProjectileIndex; return fIndices[vI - 1]; diff --git a/Framework/StackInterface/Stack.h b/Framework/StackInterface/Stack.h index aba9049a..bfb5acfb 100644 --- a/Framework/StackInterface/Stack.h +++ b/Framework/StackInterface/Stack.h @@ -49,7 +49,7 @@ namespace corsika::stack { <b>Important:</b> ParticleInterface must inherit from ParticleBase ! */ - template <typename> + template <typename> //, bool> class ParticleInterface; // forward decl /** @@ -83,7 +83,11 @@ namespace corsika::stack { delete; ///< since Stack can be very big, we don't want to copy it public: - // template<typename = std::enable_if_t<std::is_reference<StackDataType>{}>> + /** + * if StackDataType is a reference member we *have* to initialize + * it in the constructor, this is typically needed for SecondaryView + */ + template <typename = std::enable_if_t<std::is_reference<StackDataType>{}>> Stack(StackDataType vD) : fData(vD) {} @@ -96,15 +100,13 @@ namespace corsika::stack { typename = std::enable_if_t<!std::is_reference<StackDataType>{}>> Stack(Args... args) : fData(args...) {} - // , typename std::enable_if<!std::is_reference<StackDataType>::value, - // std::nullptr_t>::type = nullptr) public: typedef StackDataType StackImpl; ///< this is the type of the user-provided data structure - template <typename SI> - using PIType = ParticleInterface<SI>; + template <typename SI> //, bool IsBase> + using PIType = ParticleInterface<SI>; //, IsBase>; /** * Via the StackIteratorInterface and ConstStackIteratorInterface @@ -125,18 +127,21 @@ namespace corsika::stack { */ typedef typename StackIterator::ParticleInterfaceType ParticleType; + // friends are needed since they need access to protected members friend class StackIteratorInterface< typename std::remove_reference<StackDataType>::type, ParticleInterface, StackType>; - friend class ConstStackIteratorInterface< typename std::remove_reference<StackDataType>::type, ParticleInterface, StackType>; public: + /** + * @name Most generic proxy methods for StackDataType fData + * @{ + */ unsigned int GetCapacity() const { return fData.GetCapacity(); } unsigned int GetSize() const { return fData.GetSize(); } - template <typename... Args> auto Init(Args... args) { return fData.Init(args...); @@ -145,6 +150,7 @@ namespace corsika::stack { auto Clear(Args... args) { return fData.Clear(args...); } + ///@} public: /** @@ -231,12 +237,23 @@ namespace corsika::stack { // typename std::enable_if<HasGetIndexFromIterator<T>::value, unsigned int>::type // typename std::enable_if<std::is_base_of<decltype(*this)>, // SecondaryView<StackDataType, ParticleInterface>>::value, unsigned int>::type + /** + * Function to perform eventual transformation from + * StackIterator::GetIndex() to index in data stored in + * StackDataType fData. By default (and in almost all cases) this + * should just be identiy. See class SecondaryView for an alternative implementation. + */ unsigned int GetIndexFromIterator(const unsigned int vI) const { return vI; } + /** + * @name Return reference to StackDataType object fData for data access + * @{ + */ typename std::remove_reference<StackDataType>::type& GetStackData() { return fData; } const typename std::remove_reference<StackDataType>::type& GetStackData() const { return fData; } + ///@} }; } // namespace corsika::stack diff --git a/Framework/StackInterface/StackIteratorInterface.h b/Framework/StackInterface/StackIteratorInterface.h index 124fa158..cf1b6d7b 100644 --- a/Framework/StackInterface/StackIteratorInterface.h +++ b/Framework/StackInterface/StackIteratorInterface.h @@ -42,31 +42,38 @@ namespace corsika::stack { the StackIteratorInterface. In addition to Stack the iterator only knows the index fIndex in the Stack data. - The template argument Particles acts as a policy to provide - readout function of Particle data from the stack. The Particle + The template argument `ParticleInterface` acts as a policy to provide + readout function of Particle data from the stack. The ParticleInterface class must know how to retrieve information from the Stack data for a particle entry at any index fIndex. + + The ParticleInterface class must be written and provided by the + user, it contains methods like <code> auto GetData() const { + return GetStackData().GetData(GetIndex()); }</code>, where + StackIteratorInterface::GetStackData() return a reference to the + object storing the particle data of type StackDataType. And + StackIteratorInterface::GetIndex() provides the iterator index to + be readout. The StackDataType is another user-provided class to + store data and must implement functions compatible with + ParticleInterface, in this example StackDataType::GetData(const unsigned int + vIndex). + + For an example see stack_example.cc, or the + corsika::processes::sibyll::SibStack class */ template <typename StackDataType, template <typename> typename ParticleInterface, - typename StackType = Stack<StackDataType, ParticleInterface>> + typename StackType = + Stack<StackDataType, ParticleInterface>> //, bool IsBase=true > class StackIteratorInterface - : public ParticleInterface< - StackIteratorInterface<StackDataType, ParticleInterface, StackType>> { + : public ParticleInterface<StackIteratorInterface<StackDataType, ParticleInterface, + StackType>> { //,IsBase> { public: - typedef StackDataType SD; - // typedef Stack<StackDataType, ParticleInterface> StackType; - /*typedef - typename std::conditional<std::is_const<StackDataType>::value, - const Stack<const StackDataType, ParticleInterface>&, - Stack<StackDataType, ParticleInterface>&>::type - StackType;*/ - - typedef ParticleInterface< - StackIteratorInterface<StackDataType, ParticleInterface, StackType>> - ParticleInterfaceType; + using ParticleInterfaceType = ParticleInterface< + StackIteratorInterface<StackDataType, ParticleInterface, StackType>>; //,IsBase>; + // friends are needed for access to protected methods friend class Stack<StackDataType, ParticleInterface>; // for access to GetIndex for Stack friend class Stack<StackDataType&, ParticleInterface>; // for access to GetIndex @@ -123,7 +130,8 @@ namespace corsika::stack { : fIndex(index) , fData(&data) { ParticleInterfaceType& p = **this; - p.SetParticleData(*parent, args...); + ParticleInterfaceType& pa = *parent; + p.SetParticleData(pa, args...); } public: @@ -192,12 +200,12 @@ namespace corsika::stack { template <typename StackDataType, template <typename> typename ParticleInterface, typename StackType = Stack<StackDataType, ParticleInterface>> class ConstStackIteratorInterface - : public ParticleInterface< - ConstStackIteratorInterface<StackDataType, ParticleInterface, StackType>> { + : public ParticleInterface<ConstStackIteratorInterface< + StackDataType, ParticleInterface, StackType>> { //,IsBase> { public: - typedef ParticleInterface< - ConstStackIteratorInterface<StackDataType, ParticleInterface, StackType>> + typedef ParticleInterface<ConstStackIteratorInterface< + StackDataType, ParticleInterface, StackType>> //,IsBase> ParticleInterfaceType; friend class Stack<StackDataType, ParticleInterface>; // for access to GetIndex diff --git a/Framework/StackInterface/comp b/Framework/StackInterface/comp new file mode 100644 index 00000000..3b233562 --- /dev/null +++ b/Framework/StackInterface/comp @@ -0,0 +1,2 @@ +TestParticleInterface2<TestParticleInterface<corsika::stack::StackIteratorInterface<corsika::stack::CombinedStackImpl<corsika::stack::CombinedStackImpl<TestStackData, TestStackData2>, TestStackData3>, CombinedTestInterfaceType2, corsika::stack::Stack<corsika::stack::CombinedStackImpl<corsika::stack::CombinedStackImpl<TestStackData, TestStackData2>, TestStackData3>, CombinedTestInterfaceType2> > > >::content + diff --git a/Framework/StackInterface/testCombinedStack.cc b/Framework/StackInterface/testCombinedStack.cc new file mode 100644 index 00000000..5cd65446 --- /dev/null +++ b/Framework/StackInterface/testCombinedStack.cc @@ -0,0 +1,306 @@ + +/* + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * This software is distributed under the terms of the GNU General Public + * Licence version 3 (GPL Version 3). See file LICENSE for a full version of + * the license. + */ + +#include <corsika/stack/CombinedStack.h> +#include <corsika/stack/Stack.h> + +#include <testTestStack.h> // for testing: simple stack. This is a +// test-build, and inluce file is obtained from CMAKE_CURRENT_SOURCE_DIR + +#include <boost/type_index.hpp> +#include <type_traits> +using boost::typeindex::type_id_with_cvr; + +#include <iomanip> +#include <iostream> +#include <vector> + +#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one + // cpp file +#include <catch2/catch.hpp> + +using namespace corsika::stack; +using namespace std; + +// definition of stack-data object +class TestStackData2 { + +public: + // these functions are needed for the Stack interface + void Init() {} + void Clear() { fData2.clear(); } + unsigned int GetSize() const { return fData2.size(); } + unsigned int GetCapacity() const { return fData2.size(); } + void Copy(const int i1, const int i2) { fData2[i2] = fData2[i1]; } + void Swap(const int i1, const int i2) { + double tmp0 = fData2[i1]; + fData2[i1] = fData2[i2]; + fData2[i2] = tmp0; + } + + // custom data access function + void SetData2(const int i, const double v) { fData2[i] = v; } + double GetData2(const int i) const { return fData2[i]; } + + // these functions are also needed by the Stack interface + void IncrementSize() { fData2.push_back(0.); } + void DecrementSize() { + if (fData2.size() > 0) { fData2.pop_back(); } + } + + // custom private data section +private: + std::vector<double> fData2; +}; + +// defintion of a stack-readout object, the iteractor dereference +// operator will deliver access to these function +template <typename T> +class TestParticleInterface2 + : public T { // corsika::stack::ParticleBaseAdd<T> {//public T { + +public: + using T::GetIndex; + using T::GetStackData; + using T::SetParticleData; + + // default version for particle-creation from input data + void SetParticleData(const std::tuple<double> v = {0.}) { SetData2(std::get<0>(v)); } + void SetParticleData(TestParticleInterface2<T>& parent, + const std::tuple<double> v = {0.}) { + SetData2(parent.GetData2() + std::get<0>(v)); + } + void SetData2(const double v) { GetStackData().SetData2(GetIndex(), v); } + double GetData2() const { return GetStackData().GetData2(GetIndex()); } +}; + +// combined stack +template <typename StackIter> +using CombinedTestInterfaceType = + corsika::stack::CombinedParticleInterface<TestParticleInterface, + TestParticleInterface2, StackIter>; + +using StackTest = CombinedStack<TestStackData, TestStackData2, CombinedTestInterfaceType>; +typedef StackTest::ParticleType Particle; + +TEST_CASE("Combined Stack", "[stack]") { + + // helper function for sum over stack data + auto sum = [](const StackTest& stack) { + double v = 0; + for (const auto& p : stack) v += p.GetData(); + return v; + }; + auto sum2 = [](const StackTest& stack) { + double v = 0; + for (const auto& p : stack) v += p.GetData2(); + return v; + }; + + SECTION("StackInterface") { + + // construct a valid Stack object + StackTest s; + s.Init(); + s.Clear(); + s.AddParticle(std::tuple{0.}); + s.Copy(s.cbegin(), s.begin()); + s.Swap(s.begin(), s.begin()); + REQUIRE(s.GetSize() == 1); + } + + SECTION("construct") { + + // construct a valid, empty Stack object + StackTest s; + } + + SECTION("write and read") { + + StackTest s; + s.AddParticle(std::tuple{9.9}); + REQUIRE(sum2(s) == 0.); + REQUIRE(sum(s) == 9.9); + } + + SECTION("delete from stack") { + + StackTest s; + REQUIRE(s.GetSize() == 0); + StackTest::StackIterator p = + s.AddParticle(std::tuple{0.}); // valid way to access particle data + p.SetData(8.9); + p.SetData2(3.); + REQUIRE(sum2(s) == 3.); + REQUIRE(sum(s) == 8.9); + REQUIRE(s.GetSize() == 1); + s.Delete(p); + REQUIRE(s.GetSize() == 0); + } + + SECTION("delete particle") { + + StackTest s; + REQUIRE(s.GetSize() == 0); + auto p = s.AddParticle( + std::tuple{9.9}); // also valid way to access particle data, identical to above + REQUIRE(s.GetSize() == 1); + p.Delete(); + REQUIRE(s.GetSize() == 0); + } + + SECTION("create secondaries") { + StackTest s; + REQUIRE(s.GetSize() == 0); + auto iter = s.AddParticle(std::tuple{9.9}); + Particle& p = *iter; // also this is valid to access particle data + p.SetData2(2); + REQUIRE(s.GetSize() == 1); + p.AddSecondary(std::tuple{4.4}); + REQUIRE(s.GetSize() == 2); + // p.AddSecondary(3.3, 2.2, 1.); + // REQUIRE(s.GetSize() == 3); + double v = 0; + for (const auto& i : s) { + v += i.GetData(); + REQUIRE(i.GetData2() == 2); + } + REQUIRE(v == 9.9 + 4.4); + } + + SECTION("get next particle") { + StackTest s; + REQUIRE(s.GetSize() == 0); + auto p1 = s.AddParticle(std::tuple{9.9}); + auto p2 = s.AddParticle(std::tuple{8.8}); + p1.SetData2(20.2); + p2.SetData2(20.3); + auto particle = s.GetNextParticle(); // first particle + REQUIRE(particle.GetData() == 8.8); + REQUIRE(particle.GetData2() == 20.3); + + particle.Delete(); + auto particle2 = s.GetNextParticle(); // first particle + REQUIRE(particle2.GetData() == 9.9); + REQUIRE(particle2.GetData2() == 20.2); + particle2.Delete(); + + REQUIRE(s.GetSize() == 0); + } +} + +//////////////////////////////////////////////////////////// + +// definition of stack-data object +class TestStackData3 { + +public: + // these functions are needed for the Stack interface + void Init() {} + void Clear() { fData3.clear(); } + unsigned int GetSize() const { return fData3.size(); } + unsigned int GetCapacity() const { return fData3.size(); } + void Copy(const int i1, const int i2) { fData3[i2] = fData3[i1]; } + void Swap(const int i1, const int i2) { + double tmp0 = fData3[i1]; + fData3[i1] = fData3[i2]; + fData3[i2] = tmp0; + } + + // custom data access function + void SetData3(const int i, const double v) { fData3[i] = v; } + double GetData3(const int i) const { return fData3[i]; } + + // these functions are also needed by the Stack interface + void IncrementSize() { fData3.push_back(0.); } + void DecrementSize() { + if (fData3.size() > 0) { fData3.pop_back(); } + } + + // custom private data section +private: + std::vector<double> fData3; +}; + +// defintion of a stack-readout object, the iteractor dereference +// operator will deliver access to these function +template <typename T> +class TestParticleInterface3 : public T { + +public: + using T::GetIndex; + using T::GetStackData; + using T::SetParticleData; + + // default version for particle-creation from input data + void SetParticleData(const std::tuple<double> v = {0.}) { SetData3(std::get<0>(v)); } + void SetParticleData(TestParticleInterface3<T>& parent, + const std::tuple<double> v = {0.}) { + SetData3(parent.GetData3() + std::get<0>(v)); + } + void SetData3(const double v) { GetStackData().SetData3(GetIndex(), v); } + double GetData3() const { return GetStackData().GetData3(GetIndex()); } +}; + +// double combined stack +// combined stack +template <typename StackIter> +using CombinedTestInterfaceType2 = + corsika::stack::CombinedParticleInterface<CombinedTestInterfaceType, + TestParticleInterface3, StackIter>; + +using StackTest2 = CombinedStack<typename StackTest::StackImpl, TestStackData3, + CombinedTestInterfaceType2>; +typedef StackTest2::ParticleType Particle2; + +TEST_CASE("Combined Stack - multi", "[stack]") { + + SECTION("create secondaries") { + + StackTest2 s; + REQUIRE(s.GetSize() == 0); + auto p1 = s.AddParticle(std::tuple{9.9}); + auto p2 = s.AddParticle(std::tuple{8.8}, std::tuple{0.1}); + p2.SetData2(0.1); // not clear why this is needed, need to check + // SetParticleData workflow for more complicated + // settings + // auto p3 = s.AddParticle( std::tuple {8.8}, std::tuple{1.}, std::tuple{0.1} ); + p1.SetData3(20.2); + p2.SetData3(10.3); + + REQUIRE(p1.GetData() == 9.9); + REQUIRE(p1.GetData2() == 0.); + p1.SetData2(10.2); + REQUIRE(p1.GetData2() == 10.2); + REQUIRE(p1.GetData3() == 20.2); + + REQUIRE(p2.GetData() == 8.8); + REQUIRE(p2.GetData2() == 0.1); + REQUIRE(p2.GetData3() == 10.3); + + auto particle = s.GetNextParticle(); // first particle + REQUIRE(particle.GetData() == 8.8); + REQUIRE(particle.GetData2() == 0.1); + REQUIRE(particle.GetData3() == 10.3); + + REQUIRE(s.GetSize() == 2); + auto sec = particle.AddSecondary(std::tuple{4.4}); + REQUIRE(s.GetSize() == 3); + REQUIRE(sec.GetData() == 4.4); + REQUIRE(sec.GetData2() == 0.1); + REQUIRE(sec.GetData3() == 10.3); + + sec.Delete(); + s.DeleteLast(); + s.GetNextParticle().Delete(); + REQUIRE(s.GetSize() == 0); + } +} diff --git a/Framework/StackInterface/testSecondaryView.cc b/Framework/StackInterface/testSecondaryView.cc new file mode 100644 index 00000000..ebd2182a --- /dev/null +++ b/Framework/StackInterface/testSecondaryView.cc @@ -0,0 +1,105 @@ + +/* + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * This software is distributed under the terms of the GNU General Public + * Licence version 3 (GPL Version 3). See file LICENSE for a full version of + * the license. + */ + +#include <corsika/stack/SecondaryView.h> +#include <corsika/stack/Stack.h> + +#include <testTestStack.h> // for testing: simple stack. This is a +// test-build, and inluce file is obtained from CMAKE_CURRENT_SOURCE_DIR + +#include <boost/type_index.hpp> +#include <type_traits> +using boost::typeindex::type_id_with_cvr; + +#include <iomanip> +#include <iostream> +#include <vector> + +#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one + // cpp file +#include <catch2/catch.hpp> + +using namespace corsika::stack; +using namespace std; + +typedef Stack<TestStackData, TestParticleInterface> StackTest; +typedef StackTest::ParticleType Particle; + +TEST_CASE("SecondaryStack", "[stack]") { + + // helper function for sum over stack data + auto sum = [](const StackTest& stack) { + double v = 0; + for (const auto& p : stack) v += p.GetData(); + return v; + }; + + SECTION("secondary view") { + StackTest s; + REQUIRE(s.GetSize() == 0); + s.AddParticle(std::tuple{9.9}); + s.AddParticle(std::tuple{8.8}); + const double sumS = 9.9 + 8.8; + + auto particle = s.GetNextParticle(); + + typedef SecondaryView<TestStackData, TestParticleInterface> StackTestView; + StackTestView v(particle); + REQUIRE(v.GetSize() == 0); + + { + auto proj = v.GetProjectile(); + REQUIRE(proj.GetData() == particle.GetData()); + } + + v.AddSecondary(std::tuple{4.4}); + v.AddSecondary(std::tuple{4.5}); + v.AddSecondary(std::tuple{4.6}); + + REQUIRE(v.GetSize() == 3); + REQUIRE(s.GetSize() == 5); + REQUIRE(!v.IsEmpty()); + + auto sumView = [](const StackTestView& stack) { + double v = 0; + for (const auto& p : stack) { v += p.GetData(); } + return v; + }; + + REQUIRE(sum(s) == sumS + 4.4 + 4.5 + 4.6); + REQUIRE(sumView(v) == 4.4 + 4.5 + 4.6); + + v.DeleteLast(); + REQUIRE(v.GetSize() == 2); + REQUIRE(s.GetSize() == 4); + + REQUIRE(sum(s) == sumS + 4.4 + 4.5); + REQUIRE(sumView(v) == 4.4 + 4.5); + + auto pDel = v.GetNextParticle(); + v.Delete(pDel); + REQUIRE(v.GetSize() == 1); + REQUIRE(s.GetSize() == 3); + + REQUIRE(sum(s) == sumS + 4.4 + 4.5 - pDel.GetData()); + REQUIRE(sumView(v) == 4.4 + 4.5 - pDel.GetData()); + + v.Delete(v.GetNextParticle()); + REQUIRE(sum(s) == sumS); + REQUIRE(sumView(v) == 0); + REQUIRE(v.IsEmpty()); + + { + auto proj = v.GetProjectile(); + REQUIRE(proj.GetData() == particle.GetData()); + } + } +} diff --git a/Framework/StackInterface/testStackInterface.cc b/Framework/StackInterface/testStackInterface.cc index 293aa591..7b80b301 100644 --- a/Framework/StackInterface/testStackInterface.cc +++ b/Framework/StackInterface/testStackInterface.cc @@ -9,20 +9,19 @@ * the license. */ -#include <corsika/stack/SecondaryView.h> #include <corsika/stack/Stack.h> +#include <testTestStack.h> // simple test-stack for testing. This is + // for testing only: include from + // CMAKE_CURRENT_SOURCE_DIR + #include <boost/type_index.hpp> #include <type_traits> using boost::typeindex::type_id_with_cvr; -template <typename T> -struct ID { - typedef T type; -}; - #include <iomanip> #include <iostream> +#include <tuple> #include <vector> #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one @@ -32,72 +31,6 @@ struct ID { using namespace corsika::stack; using namespace std; -// definition of stack-data object -class TestStackData { - -public: - // these functions are needed for the Stack interface - void Init() {} - void Clear() { fData.clear(); } - unsigned int GetSize() const { return fData.size(); } - unsigned int GetCapacity() const { return fData.size(); } - void Copy(const int i1, const int i2) { fData[i2] = fData[i1]; } - void Swap(const int i1, const int i2) { - double tmp0 = fData[i1]; - fData[i1] = fData[i2]; - fData[i2] = tmp0; - } - - // custom data access function - void SetData(const int i, const double v) { fData[i] = v; } - double GetData(const int i) const { return fData[i]; } - - // these functions are also needed by the Stack interface - void IncrementSize() { fData.push_back(0.); } - void DecrementSize() { - if (fData.size() > 0) { fData.pop_back(); } - } - - // custom private data section -private: - std::vector<double> fData; -}; - -// defintion of a stack-readout object, the iteractor dereference -// operator will deliver access to these function -template <typename StackIteratorInterface> -class TestParticleInterface : public ParticleBase<StackIteratorInterface> { - using ParticleBase<StackIteratorInterface>::GetStack; - using ParticleBase<StackIteratorInterface>::GetStackData; - using ParticleBase<StackIteratorInterface>::GetIndex; - using ParticleBase<StackIteratorInterface>::GetIterator; - -public: - /* normally this function does not need to be specified here, it is - part of ParticleBase<StackIteratorInterface>. - - However, when overloading this function again with a different - parameter set, as here, seems to require also the declaration of - the original function here... - */ - - // default version for particle-creation from input data - void SetParticleData(const double v) { SetData(v); } - void SetParticleData(TestParticleInterface<StackIteratorInterface>& /*parent*/, - const double v) { - SetData(v); - } - /// alternative set-particle data for non-standard construction from different inputs - void SetParticleData(const double v, const double p) { SetData(v + p); } - void SetParticleData(TestParticleInterface<StackIteratorInterface>& /*parent*/, - const double v, const double p) { - SetData(v + p); - } - - void SetData(const double v) { GetStackData().SetData(GetIndex(), v); } - double GetData() const { return GetStackData().GetData(GetIndex()); } -}; - typedef Stack<TestStackData, TestParticleInterface> StackTest; typedef StackTest::ParticleType Particle; @@ -116,7 +49,7 @@ TEST_CASE("Stack", "[Stack]") { StackTest s; s.Init(); s.Clear(); - s.AddParticle(0.); + s.AddParticle(std::tuple{0.}); s.Copy(s.cbegin(), s.begin()); s.Swap(s.begin(), s.begin()); REQUIRE(s.GetSize() == 1); @@ -131,7 +64,7 @@ TEST_CASE("Stack", "[Stack]") { SECTION("write and read") { StackTest s; - s.AddParticle(9.9); + s.AddParticle(std::tuple{9.9}); const double v = sum(s); REQUIRE(v == 9.9); } @@ -140,7 +73,8 @@ TEST_CASE("Stack", "[Stack]") { StackTest s; REQUIRE(s.GetSize() == 0); - StackTest::StackIterator p = s.AddParticle(0.); // valid way to access particle data + StackTest::StackIterator p = + s.AddParticle(std::tuple{0.}); // valid way to access particle data p.SetData(9.9); REQUIRE(s.GetSize() == 1); s.Delete(p); @@ -151,8 +85,8 @@ TEST_CASE("Stack", "[Stack]") { StackTest s; REQUIRE(s.GetSize() == 0); - auto p = - s.AddParticle(9.9); // also valid way to access particle data, identical to above + auto p = s.AddParticle( + std::tuple{9.9}); // also valid way to access particle data, identical to above REQUIRE(s.GetSize() == 1); p.Delete(); REQUIRE(s.GetSize() == 0); @@ -162,23 +96,23 @@ TEST_CASE("Stack", "[Stack]") { StackTest s; REQUIRE(s.GetSize() == 0); - auto iter = s.AddParticle(9.9); + auto iter = s.AddParticle(std::tuple{9.9}); Particle& p = *iter; // also this is valid to access particle data REQUIRE(s.GetSize() == 1); - p.AddSecondary(4.4); + p.AddSecondary(std::tuple{4.4}); REQUIRE(s.GetSize() == 2); - p.AddSecondary(3.3, 2.2); + /*p.AddSecondary(3.3, 2.2); REQUIRE(s.GetSize() == 3); double v = 0; for (auto& p : s) { v += p.GetData(); } - REQUIRE(v == 9.9 + 4.4 + 3.3 + 2.2); + REQUIRE(v == 9.9 + 4.4 + 3.3 + 2.2);*/ } SECTION("get next particle") { StackTest s; REQUIRE(s.GetSize() == 0); - s.AddParticle(9.9); - s.AddParticle(8.8); + s.AddParticle(std::tuple{9.9}); + s.AddParticle(std::tuple{8.8}); auto particle = s.GetNextParticle(); // first particle REQUIRE(particle.GetData() == 8.8); @@ -189,65 +123,4 @@ TEST_CASE("Stack", "[Stack]") { REQUIRE(s.GetSize() == 0); } - - SECTION("secondary view") { - StackTest s; - REQUIRE(s.GetSize() == 0); - s.AddParticle(9.9); - s.AddParticle(8.8); - const double sumS = 9.9 + 8.8; - - auto particle = s.GetNextParticle(); - - typedef SecondaryView<TestStackData, TestParticleInterface> StackTestView; - StackTestView v(particle); - REQUIRE(v.GetSize() == 0); - - { - auto proj = v.GetProjectile(); - REQUIRE(proj.GetData() == particle.GetData()); - } - - v.AddSecondary(4.4); - v.AddSecondary(4.5); - v.AddSecondary(4.6); - - REQUIRE(v.GetSize() == 3); - REQUIRE(s.GetSize() == 5); - REQUIRE(!v.IsEmpty()); - - auto sumView = [](const StackTestView& stack) { - double v = 0; - for (const auto& p : stack) { v += p.GetData(); } - return v; - }; - - REQUIRE(sum(s) == sumS + 4.4 + 4.5 + 4.6); - REQUIRE(sumView(v) == 4.4 + 4.5 + 4.6); - - v.DeleteLast(); - REQUIRE(v.GetSize() == 2); - REQUIRE(s.GetSize() == 4); - - REQUIRE(sum(s) == sumS + 4.4 + 4.5); - REQUIRE(sumView(v) == 4.4 + 4.5); - - auto pDel = v.GetNextParticle(); - v.Delete(pDel); - REQUIRE(v.GetSize() == 1); - REQUIRE(s.GetSize() == 3); - - REQUIRE(sum(s) == sumS + 4.4 + 4.5 - pDel.GetData()); - REQUIRE(sumView(v) == 4.4 + 4.5 - pDel.GetData()); - - v.Delete(v.GetNextParticle()); - REQUIRE(sum(s) == sumS); - REQUIRE(sumView(v) == 0); - REQUIRE(v.IsEmpty()); - - { - auto proj = v.GetProjectile(); - REQUIRE(proj.GetData() == particle.GetData()); - } - } } diff --git a/Framework/StackInterface/testTestStack.h b/Framework/StackInterface/testTestStack.h new file mode 100644 index 00000000..a3bf6346 --- /dev/null +++ b/Framework/StackInterface/testTestStack.h @@ -0,0 +1,88 @@ +#ifndef _include_corsika_stack_testTestStack_h_ +#define _include_corsika_stack_testTestStack_h_ + +#include <corsika/stack/Stack.h> +#include <tuple> +#include <vector> + +/** + * definition of stack-data object for unit tests + * + * TestStackData contain only a single variable "Data" stored in fData + * with Get/SetData functions. + */ +class TestStackData { + +public: + // these functions are needed for the Stack interface + void Init() {} + void Clear() { fData.clear(); } + unsigned int GetSize() const { return fData.size(); } + unsigned int GetCapacity() const { return fData.size(); } + void Copy(const unsigned int i1, const unsigned int i2) { fData[i2] = fData[i1]; } + void Swap(const unsigned int i1, const unsigned int i2) { + double tmp0 = fData[i1]; + fData[i1] = fData[i2]; + fData[i2] = tmp0; + } + + // custom data access function + void SetData(const unsigned int i, const double v) { fData[i] = v; } + double GetData(const unsigned int i) const { return fData[i]; } + + // these functions are also needed by the Stack interface + void IncrementSize() { fData.push_back(0.); } + void DecrementSize() { + if (fData.size() > 0) { fData.pop_back(); } + } + + // custom private data section +private: + std::vector<double> fData; +}; + +/** + * From static_cast of a StackIterator over entries in the + * TestStackData class you get and object of type + * TestParticleInterface defined here + * + * It provides Get/Set methods to read and write data to the "Data" + * storage of TestStackData obtained via + * "StackIteratorInterface::GetStackData()", given the index of the + * iterator "StackIteratorInterface::GetIndex()" + * + */ +template <typename StackIteratorInterface> +class TestParticleInterface + : public corsika::stack::ParticleBase<StackIteratorInterface> { + +public: + using corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData; + using corsika::stack::ParticleBase<StackIteratorInterface>::GetIndex; + + /* + The SetParticleData methods are called for creating new entries + on the stack. You can specifiy various parametric versions to + perform this task: + */ + + // default version for particle-creation from input data + void SetParticleData(const std::tuple<double> v) { SetData(std::get<0>(v)); } + void SetParticleData(TestParticleInterface<StackIteratorInterface>& /*parent*/, + std::tuple<double> v) { + SetData(std::get<0>(v)); + } + /// alternative set-particle data for non-standard construction from different inputs + /* + void SetParticleData(const double v, const double p) { SetData(v + p); } + void SetParticleData(TestParticleInterface<StackIteratorInterface>&, + const double v, const double p) { + SetData(v + p); + }*/ + + // here are the fundamental methods for access to TestStackData data + void SetData(const double v) { GetStackData().SetData(GetIndex(), v); } + double GetData() const { return GetStackData().GetData(GetIndex()); } +}; + +#endif diff --git a/Stack/NuclearStackExtension/NuclearStackExtension.h b/Stack/NuclearStackExtension/NuclearStackExtension.h index a08dad1d..4b3fa4de 100644 --- a/Stack/NuclearStackExtension/NuclearStackExtension.h +++ b/Stack/NuclearStackExtension/NuclearStackExtension.h @@ -104,7 +104,10 @@ namespace corsika::stack { }; /** - * Memory implementation of the most simple (stupid) particle stack object. + * @class NuclearStackExtensionImpl + * + * Memory implementation of the extension of particle stack of + * type InnerStackImpl with nuclear data */ template <typename InnerStackImpl> class NuclearStackExtensionImpl : public InnerStackImpl { diff --git a/nuc/DataSet04.dat b/nuc/DataSet04.dat new file mode 100644 index 00000000..6a6787f0 --- /dev/null +++ b/nuc/DataSet04.dat @@ -0,0 +1,1497 @@ +SPHERICA ! Z N B [MeV] dB[MeV] R0 [fm] sigma [fm] Rch [fm] Rp [fm] + 71 + 6 6 -92.16069 0.00000 2.44300 0.81000 0.00000 0.00000 + 8 8 -127.61723 0.00000 2.77700 0.83900 2.70100 2.57728 + 14 20 -283.42083 0.01411 0.00000 0.00000 0.00000 0.00000 + 16 20 -308.70312 0.00018 3.57700 0.99400 3.29900 3.20303 + 18 20 -327.32804 0.00034 0.00000 0.00000 3.40400 3.30864 + 20 16 -281.34140 0.04000 0.00000 0.00000 0.00000 0.00000 + 20 18 -313.10392 0.00456 0.00000 0.00000 0.00000 0.00000 + 20 20 -342.03360 0.00020 3.84500 0.97800 3.47800 3.38282 + 20 22 -361.87704 0.00025 3.87600 0.99900 3.51300 3.42049 + 20 24 -380.94104 0.00040 3.91200 0.97500 3.52300 3.43245 + 20 26 -398.75027 0.00225 0.00000 0.00000 3.50200 3.41260 + 20 28 -415.97198 0.00408 3.96400 0.88100 3.47900 3.39070 + 20 30 -427.47131 0.00925 0.00000 0.00000 3.52300 3.43752 + 20 32 -436.55224 0.69862 0.00000 0.00000 0.00000 0.00000 + 22 20 -346.88210 0.00546 0.00000 0.00000 0.00000 0.00000 + 22 28 -437.75775 0.00080 4.05100 0.94700 3.57000 3.48189 + 24 28 -456.32058 0.00078 4.17300 0.92400 3.64200 3.55394 + 26 28 -471.72806 0.00070 4.25800 0.90000 3.69300 3.60474 + 28 28 -483.95050 0.01109 0.00000 0.00000 3.75000 3.66189 + 28 30 -506.41717 0.00064 4.36400 0.00000 3.77600 3.68964 + 28 32 -526.80421 0.00060 4.39600 0.92600 3.81800 3.73372 + 28 34 -545.22083 0.00062 4.43800 0.93700 3.84800 3.76550 + 28 36 -561.71668 0.00064 4.48600 0.91600 3.86800 3.78703 + 28 40 -590.36648 0.00299 0.00000 0.00000 0.00000 0.00000 + 34 50 -727.28411 0.00198 0.00000 0.00000 0.00000 0.00000 + 36 50 -749.15919 0.00009 0.00000 0.00000 4.18400 4.11071 + 38 50 -768.38296 0.00106 4.99400 0.92300 4.22000 4.14633 + 40 50 -783.79526 0.00234 5.04000 0.95700 4.26900 4.19528 + 42 50 -796.39907 0.00377 5.10400 0.95000 4.31500 4.24126 + 44 50 -806.74888 0.00390 0.00000 0.00000 0.00000 0.00000 + 46 50 -814.91396 0.00470 0.00000 0.00000 0.00000 0.00000 + 48 50 -820.91761 0.07801 0.00000 0.00000 0.00000 0.00000 + 50 50 -824.62947 0.70540 0.00000 0.00000 0.00000 0.00000 + 50 58 -914.50074 0.00574 0.00000 0.00000 4.56300 4.49294 + 50 62 -953.36675 0.00426 5.47700 0.96300 4.59600 4.52748 + 50 64 -971.40893 0.00319 5.50900 0.94800 4.61000 4.54220 + 50 66 -988.51881 0.00290 5.54100 0.94500 4.62600 4.55895 + 50 68 -1004.78946 0.00283 5.57100 0.93100 4.64000 4.57366 + 50 70 -1020.38103 0.00252 5.59100 0.00000 4.65200 4.58634 + 50 72 -1035.36456 0.00268 5.62800 0.89500 4.66300 4.59800 + 50 74 -1049.79795 0.00136 5.64000 0.90800 4.67400 4.60966 + 50 76 -1063.72433 0.01071 0.00000 0.00000 0.00000 0.00000 + 50 78 -1077.18119 0.02726 0.00000 0.00000 0.00000 0.00000 + 50 80 -1090.12811 0.01066 0.00000 0.00000 0.00000 0.00000 + 50 82 -1102.68603 0.01360 0.00000 0.00000 0.00000 0.00000 + 50 84 -1109.07025 0.09996 0.00000 0.00000 0.00000 0.00000 + 52 82 -1123.25310 0.01072 0.00000 0.00000 0.00000 0.00000 + 54 82 -1141.67949 0.00707 0.00000 0.00000 4.79100 4.72873 + 56 82 -1158.07598 0.00041 5.86800 0.90000 4.83400 4.77163 + 58 82 -1172.45664 0.00252 0.00000 0.00000 4.87700 4.81458 + 60 82 -1184.88667 0.00227 5.87600 0.98900 4.91500 4.85250 + 62 82 -1195.46065 0.00274 0.00000 0.00000 4.96000 4.89755 + 64 82 -1204.13814 0.00467 0.00000 0.00000 4.98400 4.92137 + 66 82 -1210.45971 0.01066 0.00000 0.00000 5.04600 4.98370 + 68 82 -1214.98739 0.01725 0.00000 0.00000 5.07600 5.01365 + 70 82 -1218.01338 0.20839 0.00000 0.00000 0.00000 0.00000 + 80 126 -1620.54246 0.02039 0.00000 0.00000 5.48500 5.43129 + 82 116 -1559.48128 0.01465 0.00000 0.00000 5.45000 5.39422 + 82 118 -1575.81684 0.01100 0.00000 0.00000 5.45900 5.40357 + 82 120 -1591.64987 0.00808 0.00000 0.00000 5.47400 5.41899 + 82 122 -1606.96857 0.00122 6.74900 0.91800 5.48300 5.42834 + 82 124 -1621.78701 0.00124 6.76600 0.92100 5.49400 5.43971 + 82 126 -1635.89266 0.00125 6.77600 0.91300 5.50400 5.45007 + 82 128 -1645.01508 0.00147 0.00000 0.00000 5.52300 5.46952 + 82 130 -1653.97679 0.00212 0.00000 0.00000 5.54200 5.48896 + 82 132 -1662.75325 0.00235 0.00000 0.00000 5.55900 5.50638 + 84 126 -1644.64324 0.00126 0.00000 0.00000 5.53400 5.47998 + 86 126 -1651.89482 0.00318 0.00000 0.00000 5.55500 5.50082 + 88 126 -1657.67874 0.00920 0.00000 0.00000 5.57100 5.51662 + 90 126 -1662.01769 0.01296 0.00000 0.00000 0.00000 0.00000 + 92 126 -1664.94051 0.03052 0.00000 0.00000 0.00000 0.00000 +DEFORMED ! Z N B [MeV] dB [MeV] b2 (SLy4) Meas. + 233 + 10 12 -177.76671 0.00002 0.26752 1 + 12 10 -168.57233 0.00134 0.31598 1 + 12 12 -198.25158 0.00002 0.41246 1 + 12 24 -259.73456 0.50400 0.33813 0 + 14 24 -299.81662 0.13748 0.25111 1 + 14 26 -306.42490 0.55604 0.28952 1 + 24 24 -411.43757 0.00739 0.29557 1 + 24 26 -435.02054 0.00100 0.27046 1 + 26 24 -417.66588 0.06000 0.28607 1 + 26 26 -447.66458 0.00655 0.26089 1 + 32 32 -545.82241 0.03168 0.27548 1 + 34 56 -755.66446 0.36000 0.26161 0 + 38 38 -637.84931 0.03724 0.63780 1 + 40 66 -883.83736 0.53000 0.51161 0 + 44 58 -877.82772 0.00204 0.25697 1 + 44 60 -892.96127 0.00312 0.30122 1 + 46 64 -940.07111 0.01089 0.26280 1 + 46 70 -980.00574 0.00792 0.25848 1 + 52 58 -919.25903 0.05269 0.25156 1 + 52 60 -940.42588 0.17024 0.25769 1 + 52 62 -961.15577 0.02793 0.36961 1 + 54 58 -921.50947 0.10405 0.32107 1 + 54 60 -944.77137 0.01117 0.34862 1 + 54 62 -966.87486 0.01299 0.39437 1 + 54 64 -988.04976 0.01038 0.42105 1 + 54 66 -1008.28584 0.01176 0.41785 1 + 54 68 -1027.61101 0.01110 0.39897 1 + 54 70 -1046.05870 0.00186 0.34610 1 + 54 72 -1063.70971 0.00630 0.28664 1 + 54 90 -1177.14600 0.28800 0.25107 0 + 56 60 -946.80802 0.34800 0.46283 0 + 56 62 -970.80602 0.23600 0.52386 0 + 56 64 -993.41930 0.30012 0.49423 1 + 56 66 -1015.28225 0.02794 0.45705 1 + 56 68 -1035.90570 0.01252 0.42758 1 + 56 70 -1055.62849 0.01247 0.38676 1 + 56 72 -1074.50274 0.01011 0.33565 1 + 56 74 -1092.50539 0.00273 0.28219 1 + 56 90 -1199.38499 0.07227 0.28276 1 + 56 92 -1208.54101 0.08421 0.32530 1 + 58 64 -996.87112 0.36600 0.55452 0 + 58 66 -1020.03712 0.24800 0.51992 0 + 58 68 -1042.19551 0.02797 0.47928 1 + 58 70 -1063.05152 0.02790 0.43066 1 + 58 72 -1083.08320 0.02795 0.37076 1 + 58 74 -1102.27691 0.02059 0.30596 1 + 58 88 -1208.47679 0.06643 0.27043 1 + 58 90 -1219.33470 0.02945 0.33434 1 + 58 92 -1229.91032 0.04785 0.39587 1 + 58 94 -1240.38912 0.15200 0.41706 0 + 58 96 -1250.09112 0.46200 0.42490 0 + 60 66 -1022.73930 0.37800 0.55224 0 + 60 68 -1046.14530 0.25600 0.53313 0 + 60 70 -1068.67199 0.02795 0.55097 1 + 60 72 -1089.64422 0.02416 0.55943 1 + 60 74 -1110.00739 0.01179 0.32527 1 + 60 76 -1129.70293 0.01183 0.26073 1 + 60 88 -1224.77282 0.00281 0.29271 1 + 60 90 -1237.19175 0.00315 0.39403 1 + 60 92 -1249.80272 0.02462 0.43627 1 + 60 94 -1261.47885 0.11396 0.44992 1 + 60 96 -1272.46022 0.20296 0.45671 1 + 60 98 -1282.54730 0.47400 0.45965 0 + 62 68 -1048.04454 0.39000 0.53869 0 + 62 70 -1071.82854 0.26400 0.54703 0 + 62 72 -1094.23654 0.13400 0.55625 0 + 62 74 -1115.72911 0.01251 0.35409 1 + 62 76 -1136.55860 0.01187 0.28020 1 + 62 88 -1238.97399 0.00240 0.31499 1 + 62 90 -1252.82804 0.00243 0.41549 1 + 62 92 -1266.66344 0.00262 0.44882 1 + 62 94 -1279.71483 0.00952 0.45958 1 + 62 96 -1291.69986 0.07837 0.46619 1 + 62 98 -1303.08454 0.16000 0.46941 0 + 62 100 -1313.54454 0.48600 0.46957 0 + 64 72 -1096.40682 0.40800 0.54681 0 + 64 74 -1119.29682 0.13800 0.52743 0 + 64 88 -1251.18707 0.00258 0.32767 1 + 64 90 -1266.32864 0.00246 0.40202 1 + 64 92 -1281.30023 0.00250 0.44183 1 + 64 94 -1295.59749 0.00253 0.45463 1 + 64 96 -1308.99194 0.00256 0.46137 1 + 64 98 -1321.47330 0.00454 0.46516 1 + 64 100 -1333.02282 0.32800 0.46572 0 + 64 102 -1343.80482 0.66400 0.46117 0 + 66 74 -1120.80014 0.56000 0.51905 0 + 66 88 -1261.42632 0.00770 0.32280 1 + 66 90 -1277.70063 0.00655 0.38571 1 + 66 92 -1293.72542 0.00348 0.43079 1 + 66 94 -1309.13406 0.00256 0.44749 1 + 66 96 -1323.78552 0.00259 0.45499 1 + 66 98 -1337.71449 0.00246 0.45935 1 + 66 100 -1350.47410 0.00249 0.46048 1 + 66 102 -1362.59073 0.13994 0.45600 1 + 66 104 -1373.79014 0.17000 0.44510 0 + 68 88 -1269.79523 0.02449 0.30023 1 + 68 90 -1287.02880 0.02528 0.35779 1 + 68 92 -1303.92609 0.02448 0.40452 1 + 68 94 -1320.35290 0.00340 0.43385 1 + 68 96 -1336.10249 0.00312 0.44738 1 + 68 98 -1351.22716 0.00249 0.45398 1 + 68 100 -1365.43500 0.00252 0.45582 1 + 68 102 -1378.69547 0.00272 0.45165 1 + 68 104 -1391.21286 0.00464 0.44102 1 + 68 106 -1402.79249 0.34800 0.42550 0 + 70 88 -1276.15050 0.00822 0.27784 1 + 70 90 -1294.44801 0.01648 0.32482 1 + 70 92 -1312.25256 0.01604 0.36478 1 + 70 94 -1329.58624 0.01607 0.40004 1 + 70 96 -1346.29473 0.00830 0.43024 1 + 70 98 -1362.42349 0.00437 0.45114 1 + 70 100 -1377.76048 0.00238 0.45638 1 + 70 102 -1392.39445 0.00241 0.45035 1 + 70 104 -1406.22627 0.00244 0.43576 1 + 70 106 -1418.91345 0.00264 0.41847 1 + 70 108 -1431.26039 0.01032 0.40207 1 + 72 88 -1280.62524 0.01152 0.26012 1 + 72 90 -1300.00369 0.00956 0.29605 1 + 72 92 -1318.79482 0.02034 0.32715 1 + 72 94 -1336.97491 0.02789 0.35843 1 + 72 96 -1354.61911 0.02789 0.39202 1 + 72 98 -1371.65495 0.02788 0.44582 1 + 72 100 -1387.94738 0.02442 0.46359 1 + 72 102 -1403.53303 0.00278 0.45428 1 + 72 104 -1418.40662 0.00229 0.41845 1 + 72 106 -1432.41596 0.00214 0.39316 1 + 72 108 -1445.90278 0.00216 0.37754 1 + 72 110 -1458.31546 0.00637 0.36434 1 + 74 90 -1303.61571 0.01181 0.27007 1 + 74 92 -1323.41644 0.01046 0.29382 1 + 74 94 -1342.55744 0.01630 0.31962 1 + 74 96 -1361.10309 0.01513 0.36255 1 + 74 98 -1379.04965 0.02786 0.43185 1 + 74 100 -1396.32210 0.02801 0.45015 1 + 74 102 -1412.87927 0.02798 0.44309 1 + 74 104 -1428.79638 0.01531 0.39061 1 + 74 106 -1444.16739 0.00396 0.36159 1 + 74 108 -1458.91307 0.00091 0.34661 1 + 74 110 -1472.51556 0.00092 0.33351 1 + 74 112 -1485.46046 0.00167 0.31548 1 + 74 114 -1497.76058 0.00338 0.28799 1 + 74 116 -1509.53254 0.16492 0.25136 1 + 76 92 -1326.06544 0.01210 0.25837 1 + 76 94 -1346.14517 0.01088 0.27800 1 + 76 96 -1365.59807 0.01462 0.39704 1 + 76 98 -1384.49897 0.01114 0.42099 1 + 76 100 -1402.74321 0.02798 0.43157 1 + 76 102 -1420.33418 0.01638 0.42633 1 + 76 104 -1437.28946 0.02034 0.39016 1 + 76 106 -1453.68238 0.02166 0.34946 1 + 76 108 -1469.47195 0.00129 0.32709 1 + 76 110 -1484.35808 0.00130 0.30812 1 + 76 112 -1498.63756 0.00150 0.28613 1 + 76 114 -1512.35012 0.00152 0.25840 1 + 78 98 -1387.97979 0.01443 0.40918 1 + 78 100 -1407.19257 0.01086 0.42264 1 + 78 102 -1425.77316 0.01098 0.42119 1 + 78 104 -1443.64914 0.01565 0.40118 1 + 78 106 -1460.95459 0.01822 0.36856 1 + 78 108 -1477.62966 0.02176 0.33139 1 + 80 102 -1429.46162 0.00965 0.42682 1 + 88 138 -1730.96591 0.00226 0.26738 1 + 88 140 -1741.83584 0.00251 0.28587 1 + 88 142 -1752.40246 0.01219 0.30148 1 + 90 136 -1729.83809 0.00475 0.28285 1 + 90 138 -1742.40562 0.00228 0.30560 1 + 90 140 -1754.45645 0.00184 0.32075 1 + 90 142 -1766.01478 0.00209 0.33337 1 + 90 144 -1776.99141 0.00351 0.34352 1 + 90 146 -1787.26475 0.23600 0.34980 0 + 92 134 -1724.10556 0.01311 0.27440 1 + 92 136 -1738.35228 0.01505 0.31225 1 + 92 138 -1752.10483 0.00483 0.33329 1 + 92 140 -1765.25149 0.00232 0.34715 1 + 92 142 -1777.85822 0.00187 0.35853 1 + 92 144 -1789.70112 0.00189 0.36677 1 + 92 146 -1800.98110 0.00190 0.37049 1 + 92 148 -1811.71758 0.00504 0.36876 1 + 94 136 -1745.18385 0.01518 0.32796 1 + 94 138 -1759.89465 0.01810 0.34664 1 + 94 140 -1774.05327 0.00702 0.36027 1 + 94 142 -1787.64270 0.00212 0.37183 1 + 94 144 -1800.52348 0.00190 0.38030 1 + 94 146 -1812.70387 0.00192 0.38394 1 + 94 148 -1824.25491 0.00194 0.38215 1 + 94 150 -1835.31058 0.00512 0.37683 1 + 96 140 -1781.01680 0.23600 0.36935 0 + 96 142 -1795.68911 0.03665 0.38077 1 + 96 144 -1809.50224 0.00240 0.38934 1 + 96 146 -1822.56507 0.00194 0.39340 1 + 96 148 -1835.05913 0.00171 0.39233 1 + 96 150 -1847.03719 0.00197 0.38842 1 + 96 152 -1858.40608 0.00496 0.38351 1 + 98 142 -1801.57723 0.24000 0.38866 0 + 98 144 -1816.42832 0.03678 0.39702 1 + 98 146 -1830.42944 0.00293 0.40140 1 + 98 148 -1843.95952 0.00221 0.40088 1 + 98 150 -1856.95416 0.00521 0.39770 1 + 98 152 -1869.16473 0.00200 0.39386 1 + 98 154 -1880.44518 0.00504 0.38872 1 + 98 156 -1891.28115 0.01219 0.38061 1 + 100 144 -1821.32853 0.24400 0.40128 0 + 100 146 -1836.30537 0.03862 0.40601 1 + 100 148 -1850.68221 0.01166 0.40598 1 + 100 150 -1864.65753 0.01200 0.40339 1 + 100 152 -1878.05634 0.00580 0.40036 1 + 100 154 -1890.11218 0.00279 0.39617 1 + 100 156 -1901.67298 0.00717 0.38846 1 + 100 158 -1912.98053 0.25800 0.37580 0 + 102 148 -1855.59468 0.25000 0.40581 0 + 102 150 -1870.38620 0.01310 0.40377 1 + 102 152 -1884.68553 0.01753 0.40139 1 + 102 154 -1897.72867 0.00794 0.39779 1 + 102 156 -1910.10068 0.25800 0.39039 0 + 102 158 -1922.31468 0.26000 0.37800 0 + 102 160 -1933.96468 0.52400 0.36201 0 + 104 152 -1889.70921 0.02406 0.39725 1 + 104 154 -1903.60768 0.25800 0.39400 0 + 104 156 -1917.07168 0.26000 0.38730 0 + 104 158 -1929.99168 0.26200 0.37652 0 + 104 160 -1942.35568 0.52800 0.36299 0 + 104 162 -1954.68368 0.53200 0.35035 0 + 106 154 -1908.03775 0.03874 0.38787 1 + 106 156 -1922.34951 0.26200 0.38176 0 + 106 158 -1936.23951 0.26400 0.37234 0 + 106 160 -1949.31951 0.26600 0.36073 0 + 106 162 -1962.10751 0.53600 0.34929 0 + 106 164 -1974.05751 0.54000 0.33592 0 + 108 156 -1925.69700 0.04380 0.30000 1 + 108 158 -1940.23016 0.26600 0.36570 0 + 108 160 -1954.55816 0.53600 0.35506 0 + 108 162 -1968.34216 0.27000 0.34422 0 + 108 164 -1980.21016 0.54400 0.33152 0 + 108 166 -1992.58616 0.54800 0.31692 0 +DELTA3_N ! Z N Delta3 Error Meas. + 179 + 66 90 1.236011 0.015817 1 + 66 91 1.043146 0.011608 1 + 66 92 1.111383 0.008124 1 + 66 93 0.871543 0.005721 1 + 66 94 1.060700 0.005200 1 + 66 95 0.871266 0.005152 1 + 66 96 0.963021 0.005184 1 + 66 97 0.693528 0.005134 1 + 66 98 0.970962 0.005001 1 + 66 99 0.663721 0.004950 1 + 66 100 0.812905 0.033871 1 + 66 101 0.640595 0.131504 1 + 66 102 0.794315 0.320413 1 + 66 103 0.489430 0.455623 0 + 66 104 0.798569 0.491326 0 + 66 105 0.667000 0.599000 0 + 66 106 0.878000 0.774500 0 + 68 90 1.310176 0.041399 1 + 68 91 1.113687 0.029173 1 + 68 92 1.170212 0.031296 1 + 68 93 0.991497 0.023279 1 + 68 94 1.151089 0.010679 1 + 68 95 0.972069 0.008475 1 + 68 96 1.098414 0.007291 1 + 68 97 0.912298 0.005938 1 + 68 98 1.019105 0.005310 1 + 68 99 0.667499 0.005010 1 + 68 100 0.884072 0.005040 1 + 68 101 0.626958 0.005155 1 + 68 102 0.787811 0.005356 1 + 68 103 0.577123 0.006418 1 + 68 104 0.795093 0.092512 0 + 68 105 0.544184 0.349322 0 + 68 106 0.797500 0.609500 0 + 68 107 0.597000 0.700000 0 + 68 108 0.720000 0.792500 0 + 70 90 1.326147 0.033592 1 + 70 91 1.156470 0.032198 1 + 70 92 1.257375 0.031995 1 + 70 93 1.122843 0.032029 1 + 70 94 1.226862 0.038001 1 + 70 95 1.018287 0.040071 1 + 70 96 1.147836 0.024580 1 + 70 97 0.987519 0.011010 1 + 70 98 1.092449 0.008903 1 + 70 99 0.801494 0.007768 1 + 70 100 0.927748 0.005774 1 + 70 101 0.702494 0.004788 1 + 70 102 0.826099 0.004816 1 + 70 103 0.548626 0.004844 1 + 70 104 0.821005 0.004872 1 + 70 105 0.521062 0.004988 1 + 70 106 0.649099 0.005192 1 + 70 107 0.607020 0.009137 1 + 70 108 0.967020 0.190652 0 + 70 109 0.599273 0.543162 0 + 70 110 0.825500 0.720000 0 + 72 90 1.370594 0.034765 1 + 72 91 1.211121 0.042820 1 + 72 92 1.360707 0.048215 1 + 72 93 1.204780 0.051997 1 + 72 94 1.307404 0.055775 1 + 72 95 1.142078 0.055777 1 + 72 96 1.268299 0.055775 1 + 72 97 1.090345 0.055769 1 + 72 98 1.179695 0.056272 1 + 72 99 0.897333 0.055051 1 + 72 100 0.981974 0.052886 1 + 72 101 0.713233 0.041630 1 + 72 102 0.898721 0.018197 1 + 72 103 0.728173 0.005336 1 + 72 104 0.890780 0.004750 1 + 72 105 0.621263 0.004336 1 + 72 106 0.763501 0.004272 1 + 72 107 0.644483 0.004296 1 + 72 108 0.846532 0.004320 1 + 72 109 0.511504 0.006437 1 + 72 110 0.709429 0.022462 1 + 72 111 0.493735 0.053069 1 + 72 112 0.695571 0.147250 0 + 72 113 0.609344 0.390872 0 + 72 114 0.758000 0.651500 0 + 72 115 0.734000 0.842000 0 + 90 136 0.861069 0.008582 1 + 90 137 0.821505 0.006010 1 + 90 138 0.924103 0.004903 1 + 90 139 0.768352 0.004808 1 + 90 140 0.837797 0.004138 1 + 90 141 0.660994 0.003812 1 + 90 142 0.826877 0.004060 1 + 90 143 0.701911 0.004896 1 + 90 144 0.880002 0.029586 1 + 90 145 0.706443 0.169810 0 + 90 146 0.792555 0.498027 0 + 90 147 0.700000 0.711000 0 + 92 136 0.891580 0.026424 1 + 92 137 0.790906 0.015893 1 + 92 138 0.894230 0.009308 1 + 92 139 0.694606 0.006578 1 + 92 140 0.752914 0.005220 1 + 92 141 0.541259 0.004892 1 + 92 142 0.773575 0.004210 1 + 92 143 0.623977 0.003760 1 + 92 144 0.709860 0.003776 1 + 92 145 0.514288 0.003792 1 + 92 146 0.673860 0.003808 1 + 92 147 0.561677 0.005384 1 + 92 148 0.727979 0.126496 0 + 92 149 0.685520 0.364520 0 + 94 136 0.908780 0.053995 1 + 94 137 0.635736 0.042972 1 + 94 138 0.803041 0.056427 1 + 94 139 0.694259 0.062886 1 + 94 140 0.768226 0.042524 1 + 94 141 0.557598 0.025252 1 + 94 142 0.735778 0.013530 1 + 94 143 0.559636 0.004147 1 + 94 144 0.676976 0.003927 1 + 94 145 0.444117 0.003824 1 + 94 146 0.646420 0.003840 1 + 94 147 0.534049 0.003856 1 + 94 148 0.637640 0.004479 1 + 94 149 0.493543 0.006689 1 + 94 150 0.625302 0.013931 1 + 94 151 0.505728 0.024643 1 + 94 152 0.686288 0.145979 0 + 96 138 0.860121 0.171634 0 + 96 139 0.549677 0.362126 0 + 96 140 0.709000 0.472000 0 + 96 141 0.734157 0.373326 0 + 96 142 0.882814 0.155152 0 + 96 143 0.601877 0.019526 0 + 96 144 0.707599 0.003484 0 + 96 145 0.438176 0.004337 1 + 96 146 0.638396 0.004114 1 + 96 147 0.554231 0.004009 1 + 96 148 0.640464 0.003781 1 + 96 149 0.468693 0.003798 1 + 96 150 0.650947 0.005171 1 + 96 151 0.528623 0.007910 1 + 96 152 0.749956 0.009673 1 + 96 153 0.559696 0.013085 1 + 96 154 0.709914 0.025160 1 + 96 155 0.679776 0.154466 0 + 98 140 0.831500 0.832500 0 + 98 141 0.598000 0.597000 0 + 98 142 0.720000 0.480000 0 + 98 143 0.638542 0.379392 0 + 98 144 0.800084 0.278784 0 + 98 145 0.536646 0.262856 0 + 98 146 0.686725 0.125898 0 + 98 147 0.601284 0.005511 1 + 98 148 0.669912 0.007759 1 + 98 149 0.470818 0.011862 1 + 98 150 0.691349 0.010404 1 + 98 151 0.519847 0.005845 1 + 98 152 0.758315 0.005379 1 + 98 153 0.531722 0.008038 1 + 98 154 0.683826 0.010335 1 + 98 155 0.613687 0.014688 1 + 98 156 0.722790 0.142728 0 + 98 157 0.657956 0.389096 0 + 100 143 0.609000 0.607000 0 + 100 144 0.853500 0.488000 0 + 100 145 0.755418 0.386311 0 + 100 146 0.778836 0.284622 0 + 100 147 0.502258 0.272139 0 + 100 148 0.723680 0.135156 0 + 100 149 0.744340 0.011828 0 + 100 150 0.786805 0.016141 0 + 100 151 0.541016 0.017181 1 + 100 152 0.850559 0.011835 1 + 100 153 0.488613 0.008090 1 + 100 154 0.670112 0.007114 1 + 100 155 0.604096 0.009826 1 + 100 156 0.708287 0.012803 1 + 100 157 0.685852 0.139009 0 + 100 158 0.885314 0.390713 0 + 100 159 0.899000 0.648000 0 +DELTA3_P ! N Z Delta3 Error Meas. + 149 + 90 56 1.547525 0.101742 1 + 90 57 0.846937 0.098930 1 + 90 58 1.438443 0.094536 1 + 90 59 0.983616 0.098400 1 + 90 60 1.463936 0.046842 1 + 90 61 0.833878 0.008076 1 + 90 62 1.384523 0.006299 1 + 90 63 0.867323 0.004896 1 + 90 64 1.399328 0.009733 1 + 90 65 0.867022 0.016598 1 + 90 66 1.488387 0.024843 1 + 90 67 1.087846 0.040408 1 + 90 68 1.604275 0.051518 1 + 90 69 1.166224 0.048864 1 + 90 70 1.603471 0.044479 1 + 90 71 1.108959 0.041033 1 + 90 72 1.621532 0.042636 1 + 90 73 1.162271 0.048825 1 + 90 74 1.634994 0.044739 1 + 94 56 1.545614 0.751000 0 + 94 57 0.550885 0.754000 0 + 94 58 1.165221 0.430367 0 + 94 59 0.796868 0.236714 0 + 94 60 1.390670 0.180862 1 + 94 61 0.557600 0.091808 1 + 94 62 1.150088 0.027220 1 + 94 63 0.565913 0.011360 1 + 94 64 1.193627 0.006469 1 + 94 65 0.648296 0.005088 1 + 94 66 1.307286 0.005442 1 + 94 67 0.807411 0.006201 1 + 94 68 1.373835 0.008027 1 + 94 69 0.947508 0.015768 1 + 94 70 1.434169 0.032370 1 + 94 71 0.998500 0.048545 1 + 94 72 1.462478 0.055115 1 + 94 73 1.023384 0.049981 1 + 94 74 1.521906 0.044268 1 + 98 58 1.454616 1.247000 0 + 98 59 0.965883 1.020000 0 + 98 60 1.560118 0.789000 0 + 98 61 0.569882 0.476000 0 + 98 62 1.110119 0.400500 0 + 98 63 0.576117 0.404268 0 + 98 64 1.089316 0.167900 0 + 98 65 0.528730 0.008225 1 + 98 66 1.220352 0.006061 1 + 98 67 0.547715 0.004950 1 + 98 68 1.205275 0.005064 1 + 98 69 0.704661 0.006101 1 + 98 70 1.261905 0.008323 1 + 98 71 0.836722 0.021363 1 + 98 72 1.355072 0.044436 1 + 98 73 0.955037 0.055745 1 + 98 74 1.460228 0.055814 1 + 102 62 1.294119 1.557500 0 + 102 63 0.673880 1.402000 0 + 102 64 1.151121 1.161000 0 + 102 65 0.639171 0.735972 0 + 102 66 1.258002 0.316999 0 + 102 67 0.536252 0.091443 1 + 102 68 1.105483 0.014058 1 + 102 69 0.471835 0.005129 1 + 102 70 1.209795 0.004902 1 + 102 71 0.667558 0.005018 1 + 102 72 1.199502 0.017995 1 + 102 73 0.835269 0.043384 1 + 102 74 1.302755 0.055967 1 + 106 66 1.536122 0.944500 0 + 106 67 0.785877 0.692000 0 + 106 68 1.231061 0.546025 0 + 106 69 0.394551 0.225370 0 + 106 70 1.141859 0.028727 1 + 106 71 0.579946 0.004512 1 + 106 72 1.066655 0.004272 1 + 106 73 0.677826 0.005196 1 + 106 74 1.205591 0.011279 1 + 140 87 0.764086 0.327361 0 + 140 88 1.262631 0.069164 1 + 140 89 0.850493 0.035379 1 + 140 90 1.225721 0.019598 1 + 140 91 0.688164 0.004390 1 + 140 92 1.077069 0.028989 1 + 140 93 0.469344 0.055697 1 + 140 94 0.956174 0.150033 0 + 140 95 0.523878 0.356510 0 + 140 96 0.963141 0.472000 0 + 140 97 0.571858 0.593000 0 + 142 87 0.861930 0.271422 0 + 142 88 1.349118 0.080865 1 + 142 89 0.934167 0.107162 1 + 142 90 1.255505 0.053148 1 + 142 91 0.692402 0.004077 1 + 142 92 1.120897 0.003861 1 + 142 93 0.519916 0.003878 1 + 142 94 0.930851 0.003064 0 + 142 95 0.472750 0.019388 0 + 142 96 1.017455 0.156152 0 + 142 97 0.483015 0.377326 0 + 142 98 0.981142 0.480000 0 + 142 99 0.579857 0.603000 0 + 144 88 1.275636 0.579500 0 + 144 89 0.913196 0.350755 0 + 144 90 1.344074 0.145038 0 + 144 91 0.800021 0.052754 1 + 144 92 1.155614 0.027864 1 + 144 93 0.567539 0.003792 1 + 144 94 0.968146 0.004047 1 + 144 95 0.446946 0.004542 1 + 144 96 0.978702 0.124095 0 + 144 97 0.484120 0.260592 0 + 144 98 1.060226 0.278784 0 + 144 99 0.623399 0.383392 0 + 144 100 1.120643 0.488000 0 + 146 89 0.822863 0.822000 0 + 146 90 1.192751 0.521007 0 + 146 91 0.745368 0.218966 0 + 146 92 1.168272 0.052986 1 + 146 93 0.594382 0.004063 1 + 146 94 0.997465 0.003959 1 + 146 95 0.469764 0.003856 1 + 146 96 1.008497 0.005330 1 + 146 97 0.548814 0.007292 1 + 146 98 1.086708 0.127858 0 + 146 99 0.630379 0.265775 0 + 146 100 1.044979 0.284622 0 + 146 101 0.492274 0.390311 0 + 148 91 0.688382 0.360520 0 + 148 92 1.116487 0.159967 0 + 148 93 0.544839 0.074342 1 + 148 94 1.000597 0.038456 1 + 148 95 0.589801 0.004009 1 + 148 96 1.042104 0.003904 1 + 148 97 0.542491 0.004166 1 + 148 98 1.117592 0.003316 0 + 148 99 0.603842 0.006935 0 + 148 100 1.112323 0.136156 0 + 148 101 0.715696 0.379828 0 + 148 102 1.146645 0.500000 0 + 150 93 0.824535 0.123562 0 + 150 94 1.143003 0.006839 0 + 150 95 0.687758 0.006976 1 + 150 96 1.076950 0.006400 1 + 150 97 0.561325 0.009022 1 + 150 98 1.145474 0.007925 0 + 150 99 0.622821 0.008604 0 + 150 100 1.037143 0.137500 0 + 150 101 0.464116 0.263552 0 + 150 102 0.967665 0.265104 0 +SDSTATES ! Z N B [MeV] ESD [MeV] beta Reference + 13 + 18 18 -306.70166 4.329 0.6 Nucl. Phys. A682, 1c (2001) + 20 20 -342.03357 5.212 0.6 Phys. Rev. Lett. 87, 222501 (2001) + 30 30 -514.94141 7.500 0.6 Phys. Rev. Lett. 82, 3400 (1999) + 66 86 -1245.01013 7.500 0.6 Phys. Rev. Lett. 88, 042501 (2002) + 80 112 -1518.61035 5.300 0.6 Phys. Rev. Lett. 77, 1707 (1996) + 80 114 -1534.93335 6.017 0.6 Phys. Rev. Lett. 73, 777 (1994) + 82 110 -1507.55969 4.011 0.6 Phys. Rev. C49, 2849 (1994) + 82 112 -1525.35364 4.640 0.6 Phys. Rev. C55, 2819 (1997) + 82 114 -1542.64868 5.630 0.6 ANU-P/1667 (2005) + 92 144 -1789.70166 2.750 0.7 + 92 146 -1800.98157 2.557 0.7 + 94 146 -1812.70387 2.800 0.7 + 96 146 -1822.56482 1.900 0.7 +MONOPRES ! Z N E [MeV] DeltaE [MeV] + 3 + 40 50 17.81 0.35 + 50 66 15.83 0.06 + 82 126 14.18 0.11 +DIPOLRES ! Z N E [MeV] + 3 + 40 50 16.74 + 50 66 15.68 + 82 126 13.63 +ODDNUCLE ! Z N Spin Par. Meas. + 630 + 6 5 1.5 -1 1 + 6 7 0.5 -1 1 + 6 9 0.5 1 1 + 7 4 0.5 1 1 + 7 6 0.5 -1 1 + 7 8 0.5 -1 1 + 7 10 0.5 -1 1 + 8 7 0.5 -1 1 + 8 9 2.5 1 1 + 8 11 2.5 1 1 + 9 8 2.5 1 1 + 9 10 0.5 1 1 + 9 12 2.5 1 1 + 10 7 0.5 -1 1 + 10 9 0.5 1 1 + 10 11 1.5 1 1 + 10 13 2.5 1 1 + 11 10 1.5 1 1 + 11 12 1.5 1 1 + 11 14 2.5 1 1 + 11 16 2.5 1 1 + 12 11 1.5 1 1 + 12 13 2.5 1 1 + 12 15 0.5 1 1 + 12 17 1.5 1 1 + 12 19 1.5 1 1 + 13 12 2.5 1 1 + 13 14 2.5 1 1 + 13 16 2.5 1 1 + 14 11 2.5 1 1 + 14 13 2.5 1 1 + 14 15 0.5 1 1 + 14 17 1.5 1 1 + 15 12 0.5 1 1 + 15 14 0.5 1 1 + 15 16 0.5 1 1 + 15 18 0.5 1 1 + 15 20 0.5 1 1 + 16 13 2.5 1 1 + 16 15 0.5 1 1 + 16 17 1.5 1 1 + 16 19 1.5 1 1 + 16 21 3.5 -1 1 + 17 14 1.5 1 1 + 17 16 1.5 1 1 + 17 18 1.5 1 1 + 17 20 1.5 1 1 + 17 22 1.5 1 1 + 18 15 0.5 1 1 + 18 17 1.5 1 1 + 18 19 1.5 1 1 + 18 21 3.5 -1 1 + 18 23 3.5 -1 1 + 19 16 1.5 1 1 + 19 18 1.5 1 1 + 19 20 1.5 1 1 + 19 22 1.5 1 1 + 19 24 1.5 1 1 + 19 26 1.5 1 1 + 19 28 0.5 1 1 + 20 19 1.5 1 1 + 20 21 3.5 -1 1 + 20 23 3.5 -1 1 + 20 25 3.5 -1 1 + 20 27 3.5 -1 1 + 20 29 1.5 -1 1 + 21 20 3.5 -1 1 + 21 22 3.5 -1 1 + 21 24 3.5 -1 1 + 21 26 3.5 -1 1 + 21 28 3.5 -1 1 + 22 19 1.5 1 0 + 22 21 3.5 -1 1 + 22 23 3.5 -1 1 + 22 25 2.5 -1 1 + 22 27 3.5 -1 1 + 22 29 1.5 -1 1 + 23 22 3.5 -1 1 + 23 24 1.5 -1 1 + 23 26 3.5 -1 1 + 23 28 3.5 -1 1 + 23 30 3.5 -1 1 + 24 23 1.5 -1 1 + 24 25 2.5 -1 1 + 24 27 3.5 -1 1 + 24 29 1.5 -1 1 + 24 31 1.5 -1 1 + 25 24 2.5 -1 1 + 25 26 2.5 -1 1 + 25 28 3.5 -1 1 + 25 30 2.5 -1 1 + 25 32 2.5 -1 1 + 26 25 2.5 -1 1 + 26 27 3.5 -1 1 + 26 29 1.5 -1 1 + 26 31 0.5 -1 1 + 26 33 1.5 -1 1 + 27 28 3.5 -1 1 + 27 30 3.5 -1 1 + 27 32 3.5 -1 1 + 27 34 3.5 -1 1 + 27 36 3.5 -1 1 + 28 27 3.5 -1 1 + 28 29 1.5 -1 1 + 28 31 1.5 -1 1 + 28 33 1.5 -1 1 + 28 35 0.5 -1 1 + 28 37 2.5 -1 1 + 28 39 0.5 -1 1 + 28 41 4.5 1 1 + 29 28 1.5 -1 1 + 29 30 1.5 -1 1 + 29 32 1.5 -1 1 + 29 34 1.5 -1 1 + 29 36 1.5 -1 1 + 29 38 1.5 -1 1 + 29 40 1.5 -1 1 + 30 29 1.5 -1 1 + 30 31 1.5 -1 1 + 30 33 1.5 -1 1 + 30 35 2.5 -1 1 + 30 37 2.5 -1 1 + 30 39 0.5 -1 1 + 30 41 0.5 -1 1 + 31 30 1.5 -1 1 + 31 34 1.5 -1 1 + 31 36 1.5 -1 1 + 31 38 1.5 -1 1 + 31 40 1.5 -1 1 + 31 42 1.5 -1 1 + 32 35 0.5 -1 1 + 32 37 2.5 -1 1 + 32 39 0.5 -1 1 + 32 41 4.5 1 1 + 32 43 0.5 -1 1 + 32 45 3.5 1 1 + 33 36 2.5 -1 1 + 33 38 2.5 -1 1 + 33 40 1.5 -1 1 + 33 42 1.5 -1 1 + 33 44 1.5 -1 1 + 33 46 1.5 -1 1 + 33 48 1.5 -1 1 + 34 37 2.5 -1 1 + 34 39 4.5 1 1 + 34 41 2.5 1 1 + 34 43 0.5 -1 1 + 34 45 3.5 1 1 + 34 47 0.5 -1 1 + 34 49 4.5 1 1 + 35 38 0.5 -1 1 + 35 40 1.5 -1 1 + 35 42 1.5 -1 1 + 35 44 1.5 -1 1 + 35 46 1.5 -1 1 + 35 48 1.5 -1 1 + 35 50 1.5 -1 1 + 35 52 1.5 -1 1 + 36 37 1.5 -1 1 + 36 39 2.5 1 1 + 36 41 2.5 1 1 + 36 43 0.5 -1 1 + 36 45 3.5 1 1 + 36 47 4.5 1 1 + 36 49 4.5 1 1 + 36 51 2.5 1 1 + 36 57 0.5 1 1 + 37 40 1.5 -1 1 + 37 42 2.5 1 1 + 37 44 1.5 -1 1 + 37 46 2.5 -1 1 + 37 48 2.5 -1 1 + 37 50 1.5 -1 1 + 37 52 1.5 -1 1 + 37 56 2.5 -1 1 + 37 58 2.5 -1 1 + 37 60 1.5 1 1 + 38 39 2.5 1 1 + 38 43 0.5 -1 1 + 38 45 3.5 1 1 + 38 47 4.5 1 1 + 38 49 4.5 1 1 + 38 51 2.5 1 1 + 38 53 2.5 1 1 + 38 55 2.5 1 1 + 38 57 0.5 1 1 + 38 59 0.5 1 1 + 38 61 1.5 1 1 + 39 44 4.5 1 1 + 39 48 0.5 -1 1 + 39 50 0.5 -1 1 + 39 52 0.5 -1 1 + 39 54 0.5 -1 1 + 39 56 0.5 -1 1 + 40 45 3.5 1 1 + 40 49 4.5 1 1 + 40 51 2.5 1 1 + 40 53 2.5 1 1 + 40 55 2.5 1 1 + 40 57 0.5 1 1 + 40 59 0.5 1 1 + 40 61 1.5 1 1 + 41 50 4.5 1 1 + 41 52 4.5 1 1 + 41 54 4.5 1 1 + 41 56 4.5 1 1 + 41 58 4.5 1 1 + 42 49 4.5 1 1 + 42 51 2.5 1 1 + 42 53 2.5 1 1 + 42 55 2.5 1 1 + 42 57 0.5 1 1 + 42 59 0.5 1 1 + 43 50 4.5 1 1 + 43 52 4.5 1 1 + 43 54 4.5 1 1 + 43 56 4.5 1 1 + 43 58 4.5 1 1 + 43 60 2.5 1 1 + 44 51 2.5 1 1 + 44 53 2.5 1 1 + 44 55 2.5 1 1 + 44 57 2.5 1 1 + 44 59 1.5 1 1 + 44 61 1.5 1 1 + 45 52 4.5 1 1 + 45 56 0.5 -1 1 + 45 58 0.5 -1 1 + 45 60 3.5 1 1 + 45 62 3.5 1 1 + 45 64 3.5 1 1 + 46 55 2.5 1 1 + 46 57 2.5 1 1 + 46 59 2.5 1 1 + 46 61 2.5 1 1 + 46 63 2.5 1 1 + 46 65 2.5 1 1 + 47 54 4.5 1 1 + 47 56 3.5 1 1 + 47 58 0.5 -1 1 + 47 60 0.5 -1 1 + 47 62 0.5 -1 1 + 47 64 0.5 -1 1 + 47 66 0.5 -1 1 + 47 68 0.5 -1 1 + 48 55 2.5 1 1 + 48 57 2.5 1 1 + 48 59 2.5 1 1 + 48 61 2.5 1 1 + 48 63 0.5 1 1 + 48 65 0.5 1 1 + 48 67 0.5 1 1 + 48 69 0.5 1 1 + 49 56 4.5 1 1 + 49 58 4.5 1 1 + 49 60 4.5 1 1 + 49 62 4.5 1 1 + 49 64 4.5 1 1 + 49 66 4.5 1 1 + 49 68 4.5 1 1 + 49 70 4.5 1 1 + 49 72 4.5 1 1 + 49 74 4.5 1 1 + 49 76 4.5 1 1 + 50 61 3.5 1 1 + 50 63 0.5 1 1 + 50 65 0.5 1 1 + 50 67 0.5 1 1 + 50 69 0.5 1 1 + 50 71 1.5 1 1 + 50 73 5.5 -1 1 + 50 75 5.5 -1 1 + 51 62 2.5 1 1 + 51 64 2.5 1 1 + 51 66 2.5 1 1 + 51 68 2.5 1 1 + 51 70 2.5 1 1 + 51 72 3.5 1 1 + 51 74 3.5 1 1 + 51 76 3.5 1 1 + 51 78 3.5 1 1 + 52 63 3.5 1 1 + 52 65 0.5 1 1 + 52 67 0.5 1 1 + 52 69 0.5 1 1 + 52 71 0.5 1 1 + 52 73 0.5 1 1 + 52 75 1.5 1 1 + 52 77 1.5 1 1 + 52 79 1.5 1 1 + 53 66 2.5 1 1 + 53 68 2.5 1 1 + 53 70 2.5 1 1 + 53 72 2.5 1 1 + 53 74 2.5 1 1 + 53 76 3.5 1 1 + 53 78 3.5 1 1 + 53 80 3.5 1 1 + 53 82 3.5 1 1 + 54 69 0.5 1 1 + 54 73 0.5 1 1 + 54 75 0.5 1 1 + 54 77 1.5 1 1 + 54 79 1.5 1 1 + 54 81 1.5 1 1 + 54 83 3.5 -1 1 + 54 85 1.5 -1 1 + 54 89 2.5 -1 0 + 55 64 4.5 1 1 + 55 68 0.5 1 1 + 55 72 0.5 1 1 + 55 74 0.5 1 1 + 55 76 2.5 1 1 + 55 78 3.5 1 1 + 55 80 3.5 1 1 + 55 82 3.5 1 1 + 55 84 3.5 1 1 + 55 86 3.5 1 1 + 55 88 1.5 1 1 + 55 90 1.5 1 1 + 56 67 2.5 1 1 + 56 71 0.5 1 1 + 56 73 0.5 1 1 + 56 75 0.5 1 1 + 56 77 0.5 1 1 + 56 79 1.5 1 1 + 56 81 1.5 1 1 + 56 85 1.5 -1 1 + 56 87 2.5 -1 1 + 56 89 2.5 -1 1 + 57 72 1.5 1 1 + 57 74 1.5 1 1 + 57 76 2.5 1 1 + 57 78 2.5 1 1 + 57 80 3.5 1 1 + 57 82 3.5 1 1 + 58 75 0.5 1 1 + 58 79 1.5 1 1 + 58 81 1.5 1 1 + 58 83 3.5 -1 1 + 58 85 1.5 -1 1 + 59 78 2.5 1 1 + 59 80 2.5 1 1 + 59 82 2.5 1 1 + 59 84 3.5 1 1 + 59 86 3.5 1 1 + 60 77 0.5 1 1 + 60 79 1.5 1 1 + 60 81 1.5 1 1 + 60 83 3.5 -1 1 + 60 85 3.5 -1 1 + 60 87 2.5 -1 1 + 60 89 2.5 -1 1 + 60 91 1.5 1 1 + 61 80 2.5 1 1 + 61 82 2.5 1 1 + 61 84 2.5 1 1 + 61 86 3.5 1 1 + 61 88 3.5 1 1 + 61 90 2.5 1 1 + 61 92 2.5 -1 1 + 62 77 0.5 1 1 + 62 79 0.5 1 1 + 62 81 1.5 1 1 + 62 83 3.5 -1 1 + 62 85 3.5 -1 1 + 62 87 3.5 -1 1 + 62 89 2.5 -1 1 + 62 91 1.5 1 1 + 62 93 1.5 -1 1 + 62 97 2.5 -1 1 + 63 68 1.5 1 0 + 63 78 2.5 1 1 + 63 80 2.5 1 1 + 63 82 2.5 1 1 + 63 84 2.5 1 1 + 63 86 2.5 1 1 + 63 88 2.5 1 1 + 63 90 2.5 1 1 + 63 92 2.5 1 1 + 63 94 2.5 1 1 + 63 96 2.5 1 1 + 64 71 1.5 -1 0 + 64 81 0.5 1 1 + 64 83 3.5 -1 1 + 64 85 3.5 -1 1 + 64 87 3.5 -1 1 + 64 89 1.5 -1 1 + 64 91 1.5 -1 1 + 64 93 1.5 -1 1 + 64 95 1.5 -1 1 + 64 97 2.5 -1 1 + 65 84 0.5 1 1 + 65 88 2.5 1 1 + 65 90 1.5 1 1 + 65 92 1.5 1 1 + 65 94 1.5 1 1 + 65 96 1.5 1 1 + 65 98 1.5 1 1 + 66 81 0.5 1 1 + 66 89 1.5 -1 1 + 66 91 1.5 -1 1 + 66 93 1.5 -1 1 + 66 95 2.5 1 1 + 66 97 2.5 -1 1 + 66 99 3.5 1 1 + 67 86 5.5 -1 1 + 67 88 2.5 1 1 + 67 90 3.5 -1 1 + 67 92 3.5 -1 1 + 67 94 3.5 -1 1 + 67 96 3.5 -1 1 + 67 98 3.5 -1 1 + 67 100 3.5 -1 1 + 67 102 3.5 -1 1 + 68 87 3.5 -1 1 + 68 89 1.5 -1 1 + 68 91 1.5 -1 1 + 68 93 1.5 -1 1 + 68 95 2.5 -1 1 + 68 97 2.5 -1 1 + 68 99 3.5 1 1 + 68 101 0.5 -1 1 + 68 103 2.5 -1 1 + 69 78 5.5 -1 0 + 69 88 0.5 1 1 + 69 90 2.5 1 1 + 69 92 3.5 1 1 + 69 94 0.5 1 1 + 69 96 0.5 1 1 + 69 98 0.5 1 1 + 69 100 0.5 1 1 + 69 102 0.5 1 1 + 69 106 0.5 1 1 + 70 87 3.5 -1 1 + 70 91 1.5 -1 1 + 70 93 1.5 -1 1 + 70 95 2.5 -1 1 + 70 97 2.5 -1 1 + 70 99 3.5 1 1 + 70 101 0.5 -1 1 + 70 103 2.5 -1 1 + 70 105 3.5 -1 1 + 71 82 5.5 -1 1 + 71 90 0.5 1 1 + 71 94 0.5 1 1 + 71 96 3.5 1 1 + 71 98 3.5 1 1 + 71 100 3.5 1 1 + 71 102 3.5 1 1 + 71 104 3.5 1 1 + 71 106 3.5 1 1 + 72 85 3.5 -1 0 + 72 101 0.5 -1 1 + 72 103 2.5 -1 1 + 72 105 3.5 -1 1 + 72 107 4.5 1 1 + 72 109 0.5 -1 1 + 73 84 0.5 1 1 + 73 100 2.5 -1 1 + 73 102 3.5 1 1 + 73 104 3.5 1 1 + 73 106 3.5 1 1 + 73 108 3.5 1 1 + 73 110 3.5 1 1 + 74 99 2.5 -1 1 + 74 103 0.5 -1 1 + 74 107 4.5 1 1 + 74 109 0.5 -1 1 + 74 111 1.5 -1 1 + 74 113 1.5 -1 1 + 75 86 0.5 1 1 + 75 102 2.5 -1 1 + 75 106 2.5 1 1 + 75 108 2.5 1 1 + 75 110 2.5 1 1 + 75 112 2.5 1 1 + 75 114 2.5 1 1 + 76 101 0.5 -1 1 + 76 105 0.5 -1 1 + 76 107 4.5 1 1 + 76 109 0.5 -1 1 + 76 111 0.5 -1 1 + 76 113 1.5 -1 1 + 76 115 4.5 -1 1 + 76 117 1.5 -1 1 + 77 90 0.5 1 1 + 77 100 2.5 -1 1 + 77 106 2.5 -1 1 + 77 108 2.5 -1 1 + 77 110 1.5 1 1 + 77 112 1.5 1 1 + 77 114 1.5 1 1 + 77 116 1.5 1 1 + 77 118 1.5 1 1 + 77 120 1.5 1 1 + 78 99 2.5 -1 1 + 78 101 0.5 -1 1 + 78 103 0.5 -1 1 + 78 105 0.5 -1 1 + 78 109 1.5 -1 1 + 78 111 1.5 -1 1 + 78 113 1.5 -1 1 + 78 115 0.5 -1 1 + 78 117 0.5 -1 1 + 78 119 0.5 -1 1 + 78 121 2.5 -1 1 + 79 104 2.5 -1 1 + 79 106 2.5 -1 1 + 79 108 0.5 1 1 + 79 110 0.5 1 1 + 79 112 1.5 1 1 + 79 114 1.5 1 1 + 79 116 1.5 1 1 + 79 118 1.5 1 1 + 79 120 1.5 1 1 + 79 122 1.5 1 1 + 79 124 1.5 1 1 + 79 126 1.5 1 0 + 80 103 0.5 -1 1 + 80 105 0.5 -1 1 + 80 107 1.5 -1 1 + 80 109 1.5 -1 1 + 80 113 1.5 -1 1 + 80 115 0.5 -1 1 + 80 117 0.5 -1 1 + 80 119 0.5 -1 1 + 80 121 1.5 -1 1 + 80 123 2.5 -1 1 + 80 125 0.5 -1 1 + 81 114 0.5 1 1 + 81 116 0.5 1 1 + 81 118 0.5 1 1 + 81 120 0.5 1 1 + 81 122 0.5 1 1 + 81 124 0.5 1 1 + 81 126 0.5 1 1 + 82 103 1.5 -1 1 + 82 115 1.5 -1 1 + 82 117 1.5 -1 1 + 82 119 2.5 -1 1 + 82 121 2.5 -1 1 + 82 123 2.5 -1 1 + 82 125 0.5 -1 1 + 82 127 4.5 1 1 + 82 129 4.5 1 1 + 83 116 4.5 -1 1 + 83 118 4.5 -1 1 + 83 120 4.5 -1 1 + 83 122 4.5 -1 1 + 83 124 4.5 -1 1 + 83 126 4.5 -1 1 + 83 128 4.5 -1 1 + 83 130 4.5 -1 1 + 84 117 1.5 -1 1 + 84 119 2.5 -1 1 + 84 121 2.5 -1 1 + 84 123 2.5 -1 1 + 84 125 0.5 -1 1 + 84 127 4.5 1 1 + 84 129 4.5 1 1 + 84 131 4.5 1 1 + 85 118 4.5 -1 1 + 85 120 4.5 -1 1 + 85 122 4.5 -1 1 + 85 124 4.5 -1 1 + 85 126 4.5 -1 1 + 85 128 4.5 -1 1 + 85 130 4.5 -1 1 + 85 132 4.5 -1 1 + 86 119 2.5 -1 1 + 86 121 2.5 -1 1 + 86 123 2.5 -1 1 + 86 125 0.5 -1 1 + 86 129 4.5 1 1 + 86 131 4.5 1 1 + 86 133 2.5 1 1 + 86 139 3.5 -1 0 + 87 120 4.5 -1 1 + 87 122 4.5 -1 1 + 87 124 4.5 -1 1 + 87 126 4.5 -1 1 + 87 128 4.5 -1 1 + 87 130 4.5 -1 1 + 87 132 4.5 -1 1 + 87 134 2.5 -1 1 + 87 138 1.5 -1 1 + 87 140 0.5 1 1 + 88 121 2.5 -1 1 + 88 125 0.5 -1 1 + 88 133 2.5 1 1 + 88 135 1.5 1 1 + 88 137 0.5 1 1 + 88 139 1.5 1 1 + 89 126 4.5 -1 1 + 89 128 4.5 -1 1 + 89 130 4.5 -1 1 + 89 138 1.5 -1 1 + 90 137 0.5 1 1 + 90 139 2.5 1 1 + 90 141 2.5 1 1 + 90 143 0.5 1 1 + 91 128 4.5 -1 1 + 91 130 4.5 -1 1 + 91 140 1.5 -1 1 + 91 142 1.5 -1 1 + 92 141 2.5 1 1 + 92 143 3.5 -1 1 + 92 145 0.5 1 1 + 92 147 2.5 1 1 + 93 142 2.5 1 1 + 93 144 2.5 1 1 + 93 146 2.5 1 1 + 94 143 3.5 -1 1 + 94 145 0.5 1 1 + 94 147 2.5 1 1 + 94 149 3.5 1 1 + 95 146 2.5 -1 1 + 95 148 2.5 -1 1 + 96 145 0.5 1 1 + 96 147 2.5 1 1 + 96 149 3.5 1 1 + 96 151 4.5 -1 1 + 97 148 1.5 -1 1 + 97 152 3.5 1 1 + 98 151 4.5 -1 1 + 98 153 0.5 1 1 + 99 150 3.5 1 0 + 99 154 3.5 1 1 + 100 155 3.5 1 1 +QPSHELEM ! Z N Num. E [MeV] Nilsson Spin Parity + 4 + 96 149 3 0.00000 [624] 3.5 1 + 0.25280 [622] 2.5 1 + 0.38820 [734] 4.5 -1 + 97 152 4 0.00000 [633] 3.5 1 + 0.00800 [521] 1.5 -1 + 0.37760 [400] 0.5 1 + 0.38920 [642] 2.5 1 + 98 153 4 0.00000 [620] 0.5 1 + 0.10630 [613] 3.5 1 + 0.17760 [622] 1.5 1 + 0.37050 [725] 5.5 -1 + 99 154 3 0.00000 [633] 3.5 1 + 0.10600 [521] 1.5 -1 + 0.37100 [514] 3.5 -1 +2+ENERGY ! Z N E [MeV] dE [MeV] BE2(e2b2) dBE2 (e2b2) + 24 + 20 18 2.20600 0.00500 0.00960 0.00210 + 20 20 3.90438 0.00003 0.00990 0.00170 + 20 22 1.52473 0.00003 0.04200 0.00300 + 20 24 1.15705 0.00002 0.04700 0.00200 + 20 26 1.34600 0.00030 0.01820 0.00130 + 20 28 3.83172 0.00006 0.00950 0.00320 + 28 28 2.70060 0.00070 0.06000 0.01200 + 28 30 1.45400 0.00010 0.06950 0.00200 + 28 32 1.33252 0.00001 0.09330 0.00150 + 28 34 1.17291 0.00009 0.08900 0.00250 + 28 36 1.34575 0.00005 0.07600 0.00800 + 28 38 1.42510 0.00030 0.06200 0.00900 + 28 40 2.03320 0.00020 0.02600 0.00600 + 50 62 1.25685 0.00007 0.24000 0.01400 + 50 64 1.29992 0.00007 0.24000 0.05000 + 50 66 1.29356 0.00001 0.20900 0.00600 + 50 68 1.22967 0.00002 0.20900 0.00800 + 50 70 1.17134 0.00019 0.20200 0.00400 + 50 72 1.14055 0.00003 0.19200 0.00400 + 50 74 1.13174 0.00002 0.16600 0.00400 + 82 122 0.89917 0.00002 0.16200 0.00400 + 82 124 0.80310 0.00005 0.10000 0.00200 + 82 126 4.08540 0.00030 0.30000 0.03000 + 82 128 0.79970 0.00010 0.05100 0.01500 +DELTAVPN ! Z N Mass Exc.(keV) Err.(keV) BE/A (keV) Error (%) dVpn (keV) Err. (keV) + 144 + 22 20 -25122.0 5.0 8529.65 0.13 871.1825 40.0400 + 22 22 -37548.5 0.7 8533.52 0.02 2181.4250 1.2650 + 22 24 -44123.4 0.8 8656.36 0.02 913.3675 0.2900 + 22 26 -48487.7 0.8 8722.90 0.02 674.4250 0.6475 + 22 28 -51426.7 0.8 8755.62 0.02 465.0250 1.1875 + 22 30 -49465.0 7.0 8691.57 0.14 670.3250 3.0275 + 22 32 -45590.0 120.0 8596.90 2.30 796.5000 177.5700 + 36 38 -62331.5 2.0 8533.03 0.03 636.6250 15.4350 + 36 40 -69014.0 4.0 8608.81 0.05 590.9500 3.2300 + 36 42 -74179.7 1.1 8661.26 0.01 531.5750 1.1975 + 36 44 -77892.5 1.5 8692.92 0.02 484.7000 0.7600 + 36 46 -80589.5 1.8 8710.65 0.02 490.8000 0.8800 + 36 48 -82431.0 2.8 8717.35 0.03 501.8500 1.0925 + 36 50 -83265.0 0.1 8712.03 0.00 619.1425 3.8475 + 36 52 -79692.0 13.0 8656.86 0.15 459.3575 6.7875 + 38 40 -63174.0 7.0 8500.10 0.10 562.8750 10.2125 + 38 42 -70308.0 7.0 8578.56 0.08 492.0750 2.6825 + 38 44 -76008.0 6.0 8635.70 0.07 496.8000 2.3525 + 38 46 -80644.0 3.0 8677.44 0.04 484.7500 1.7775 + 38 48 -84523.6 1.1 8708.46 0.01 509.5250 1.1525 + 38 50 -87921.7 1.1 8732.60 0.01 640.8825 0.8000 + 38 52 -85941.6 2.9 8695.90 0.03 398.3675 3.3425 + 38 54 -82868.0 3.0 8648.91 0.04 412.1000 5.8500 + 38 56 -78840.0 7.0 8593.78 0.08 539.2500 5.9250 + 40 48 -83623.0 10.0 8665.97 0.12 485.8500 7.9450 + 40 50 -88767.3 2.4 8709.91 0.03 436.5500 2.6000 + 40 52 -88453.9 2.3 8692.62 0.03 416.6750 1.1375 + 40 54 -87266.8 2.4 8666.77 0.03 471.6250 1.3325 + 40 56 -85442.8 2.8 8635.37 0.03 551.0000 2.1150 + 40 58 -81287.0 20.0 8581.45 0.20 436.3000 8.6100 + 40 60 -76600.0 40.0 8524.40 0.40 401.5000 14.5875 + 40 62 -71740.0 50.0 8467.90 0.50 391.5000 36.8075 + 42 48 -80167.0 6.0 8596.97 0.07 411.0000 9.4725 + 42 50 -86805.0 4.0 8657.69 0.04 373.4250 3.1400 + 42 52 -88409.7 1.9 8662.29 0.02 479.5250 1.3850 + 42 54 -88790.5 1.9 8653.94 0.02 391.9750 1.0675 + 42 56 -88111.7 1.9 8635.12 0.02 286.3000 1.1400 + 42 58 -86184.0 6.0 8604.57 0.06 557.0250 5.2875 + 42 60 -83557.0 21.0 8568.37 0.20 515.0000 12.4425 + 42 62 -80330.0 50.0 8257.80 0.50 408.2500 20.9775 + 48 52 -74250.0 100.0 8438.30 1.00 387.5000 49.5875 + 48 54 -79678.0 29.0 8484.31 0.28 375.5000 26.6950 + 48 56 -83975.0 9.0 8517.68 0.09 399.4750 8.1075 + 48 58 -87132.0 6.0 8539.05 0.06 423.0250 2.9800 + 48 60 -89252.0 6.0 8550.02 0.05 402.0000 2.5500 + 48 62 -90353.0 2.7 8551.32 0.02 369.7500 2.0650 + 48 64 -90580.5 2.7 8544.78 0.02 350.6250 3.0050 + 48 66 -90020.9 2.7 8531.56 0.02 363.3500 5.3600 + 48 68 -88719.0 3.0 8512.41 0.03 384.2750 7.5675 + 48 70 -86709.0 20.0 8487.89 0.17 381.7500 16.9275 + 48 72 -83974.0 19.0 8458.16 0.16 438.7500 55.0350 + 48 74 -80730.0 40.0 8425.20 0.40 519.0000 61.4725 + 62 76 -71498.0 12.0 8237.93 0.09 283.5000 6.0000 + 62 78 -75456.0 12.0 8263.82 0.09 284.7500 6.0000 + 62 80 -78993.0 6.0 8286.02 0.04 325.7500 8.3225 + 62 82 -81972.0 2.8 8303.72 0.02 318.9500 7.2150 + 62 84 -81002.0 4.0 8293.90 0.03 308.0000 1.4675 + 62 86 -79342.2 2.4 8279.67 0.02 290.5750 1.4225 + 62 88 -77057.3 2.4 8261.66 0.02 308.2000 1.2400 + 62 90 -74768.8 2.5 8244.10 0.02 358.7250 1.3425 + 62 92 -72461.6 2.5 8226.88 0.02 306.2000 6.3575 + 62 94 -69370.0 10.0 8205.07 0.06 344.1000 28.3200 + 62 96 -65210.0 80.0 8177.10 0.50 250.0000 60.5175 + 64 78 -66960.0 28.0 8190.26 0.20 305.0000 10.7700 + 64 80 -71760.0 28.0 8221.94 0.19 315.7500 10.4525 + 64 82 -76093.0 5.0 8249.56 0.03 388.5000 7.3000 + 64 84 -76275.8 2.8 8248.38 0.02 288.2000 1.7475 + 64 86 -75769.0 6.0 8242.64 0.04 288.2500 2.0250 + 64 88 -74714.2 2.5 8233.45 0.02 307.5250 1.8325 + 64 90 -73713.2 2.5 8224.84 0.02 321.8750 1.2375 + 64 92 -72542.2 2.5 8215.37 0.02 284.0500 1.2500 + 64 94 -70696.8 2.5 8201.86 0.02 311.5500 2.7250 + 64 96 -67948.6 2.6 8183.06 0.02 352.9500 20.1750 + 68 84 -60500.0 11.0 8119.35 0.07 302.2500 5.8950 + 68 86 -62612.0 5.0 8132.44 0.04 326.2500 3.5000 + 68 88 -64213.0 24.0 8141.91 0.16 331.7500 6.5675 + 68 90 -65304.0 25.0 8147.93 0.16 239.7500 8.9125 + 68 92 -66058.0 24.0 8151.69 0.15 218.0000 8.8700 + 68 94 -66343.0 3.0 8152.45 0.02 254.7250 6.1250 + 68 96 -65950.0 3.0 8149.06 0.02 274.5750 1.3800 + 68 98 -64931.6 2.5 8141.99 0.01 298.7750 1.3175 + 68 100 -62996.7 2.5 8129.63 0.01 362.0750 1.2625 + 68 102 -60114.6 2.8 8111.99 0.02 287.0000 35.0175 + 78 94 -21101.0 13.0 7839.21 0.07 214.5000 7.0500 + 78 96 -25319.0 12.0 7866.12 0.07 227.0000 6.4175 + 78 98 -28928.0 14.0 7888.96 0.08 212.7500 6.5475 + 78 100 -31998.0 11.0 7908.26 0.06 242.0000 8.7400 + 78 102 -34436.0 11.0 7923.61 0.06 247.5000 8.9525 + 78 104 -36169.0 16.0 7934.76 0.09 230.0000 8.0350 + 78 106 -37332.0 18.0 7942.56 0.10 228.2500 9.8100 + 78 108 -37864.0 22.0 7946.81 0.12 221.2250 8.9925 + 78 110 -37823.0 5.0 7947.91 0.03 303.9000 5.6600 + 78 112 -37323.0 6.0 7946.58 0.03 340.7750 2.0150 + 78 114 -36292.9 2.5 7942.51 0.01 350.0000 1.7050 + 78 116 -34763.1 0.9 7935.96 0.00 324.0000 1.0025 + 78 118 -32647.4 0.9 7926.54 0.00 333.0250 0.9735 + 78 120 -29908.0 3.0 7914.17 0.02 353.3250 10.0525 + 80 94 -6647.0 20.0 7749.82 0.11 190.5000 212.2000 + 80 96 -11779.0 14.0 7782.63 0.08 228.5000 30.1500 + 80 98 -16317.0 13.0 7811.37 0.07 232.2500 26.5500 + 80 100 -20245.0 14.0 7836.08 0.08 214.5000 26.1200 + 80 102 -23576.0 10.0 7856.97 0.05 223.2500 23.1900 + 80 104 -26349.0 10.0 7874.37 0.05 260.0000 24.0200 + 80 106 -28539.0 11.0 7888.26 0.06 256.7500 28.3000 + 80 108 -30202.0 12.0 7899.05 0.06 282.7500 32.7600 + 80 110 -31370.0 16.0 7907.02 0.08 302.2500 30.1500 + 80 112 -32011.0 16.0 7912.07 0.08 285.2500 23.9400 + 80 114 -32193.0 13.0 7914.64 0.06 303.0250 21.6200 + 80 116 -31826.7 2.9 7914.37 0.01 290.8750 13.5800 + 80 118 -30954.4 0.3 7911.55 0.00 310.8500 3.1800 + 80 120 -29504.1 0.4 7905.90 0.00 322.2750 3.1700 + 80 122 -27345.9 0.6 7896.85 0.00 286.7000 20.2400 + 82 98 -1939.0 21.0 7725.69 0.12 242.2500 9.2950 + 82 100 -6826.0 14.0 7756.34 0.08 239.7500 7.9125 + 82 102 -11045.0 14.0 7782.69 0.08 222.0000 6.5575 + 82 104 -14681.0 11.0 7805.34 0.06 215.7500 5.6850 + 82 106 -17815.0 11.0 7824.84 0.06 236.0000 5.3800 + 82 108 -20417.0 12.0 7841.13 0.06 234.7500 5.7550 + 82 110 -22556.0 13.0 7854.67 0.07 242.7500 6.6750 + 82 112 -24208.0 17.0 7865.42 0.09 252.7500 7.7850 + 82 114 -25361.0 14.0 7873.40 0.07 242.7500 7.5435 + 82 116 -26050.0 15.0 7878.88 0.07 263.8250 6.1150 + 82 118 -26243.0 11.0 7881.77 0.05 266.3250 4.7075 + 82 120 -25934.0 8.0 7882.12 0.04 285.3250 3.4025 + 82 122 -25109.7 1.2 7879.93 0.01 333.4750 2.0300 + 82 124 -23785.4 1.2 7875.36 0.01 332.8500 0.4550 + 82 126 -21748.5 1.2 7867.45 0.01 426.8250 5.0175 + 88 116 6054.0 15.0 7704.16 0.08 221.7500 16.4275 + 88 118 3565.0 18.0 7719.80 0.09 195.0000 8.2850 + 88 120 1714.0 15.0 7732.08 0.07 179.7500 7.9025 + 88 122 461.0 15.0 7741.28 0.07 180.2500 7.0525 + 88 124 -191.0 11.0 7747.47 0.05 175.5000 5.8525 + 88 126 101.0 9.0 7749.13 0.04 161.5000 4.2725 + 88 128 3291.0 9.0 7737.35 0.04 287.5000 3.9675 + 88 130 6651.0 11.0 7725.00 0.05 304.0000 4.5550 + 88 132 10273.0 9.0 7711.68 0.04 334.8750 4.0050 + 88 134 14321.0 5.0 7696.69 0.02 336.9750 2.7000 + 88 136 18827.2 2.2 7679.92 0.01 313.5000 1.5900 + 92 134 27329.0 13.0 7631.92 0.06 294.5000 8.1350 + 92 136 29225.0 15.0 7627.45 0.07 326.2500 5.8100 + 92 138 31615.0 5.0 7620.92 0.02 296.3000 4.1825 + 92 140 34610.7 2.2 7611.89 0.01 274.0250 1.5400 + 92 142 38146.6 1.8 7600.71 0.01 262.1000 0.9775 + 92 144 42446.3 1.8 7586.48 0.01 216.5000 1.1025 +TERMINAT ! Z N Imax(f7/2) Parity E*(f7/2) ImaxdE Parity dE Reference + 8 + 20 22 6.0 1 3.189 11.0 -1 5.108 Eur. Phys. J. A16 (2003) 309 + 20 24 8.0 1 5.088 13.0 -1 5.480 S. Lenzi, Private communication + 21 22 9.5 -1 3.124 13.5 1 5.709 Phys. Rev. C75, 054305 (2007); Phys. Rev. C75, 059904(E) (2007) + 21 23 11.0 1 3.567 15.0 -1 5.574 Eur. Phys. J. A25 1 (2005) + 21 24 11.5 -1 5.417 15.5 1 5.605 Acta Phys. Pol. B32 (2001) 747 + 22 23 13.5 -1 7.143 16.5 1 13.028 S. Lenzi, Private communication + 22 24 14.0 1 10.034 17.0 -1 15.549 S. Lenzi, Private communication + 23 24 15.5 -1 10.004 17.5 1 15.259 Nucl. Phys. A693 (2001) 517 +END_DATA ! diff --git a/nuc/ExpDatabase_Fortran77_v04.tar.gz b/nuc/ExpDatabase_Fortran77_v04.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..784164f85cbc4c63e632259bb29b09a4ad947632 GIT binary patch literal 22393 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	K6I#^N8Ccn^8!4v+|0rtIUc1>)?a5Ao4&&1{ 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 ZEJbmf{$F<;$mdGs7OL9c$~4N#{0~w$Rh0k$ literal 0 HcmV?d00001 diff --git a/nuc/Makefile_ifc b/nuc/Makefile_ifc new file mode 100644 index 00000000..bea75298 --- /dev/null +++ b/nuc/Makefile_ifc @@ -0,0 +1,14 @@ +FORTRAN=gfortran +#FLAGS=-r8 -C -w95 +FLAGS= + +all : main_f77 + +main04.o : main04.f + $(FORTRAN) $(FLAGS) -c $< + +main_f77 : main04.o + $(FORTRAN) $(FLAGS) -o $@ $^ + +clean : + -rm -f *.o *.mod *~ main diff --git a/nuc/input04.f b/nuc/input04.f new file mode 100644 index 00000000..f10d39f4 --- /dev/null +++ b/nuc/input04.f @@ -0,0 +1,782 @@ +C +C The subroutine reads the database, allocates a number of arrays +C that are passed through the interface of this module, and fills +C out these arrays +C +C Version 01: - Reads ATOMIC masses from Audi Wapstra. +C - The electronic binding energy is removed in this +C routine but is present in the data contained in the +C file DataSet01.dat. +C +C Version 02: - Reads NUCLEAR masses from a table that is a mix +C of Audi-Wapstra 2003 and new Jyvaskyla masses. +C The mass of a given nuclide is taken as the +C weighted average of the original Audi-Wapstra +C evaluation and the Jyvaskyla mass, see +C +C J.R. Taylor, An Introduction to Error Analysis +C 2nd Ed., University Science Books, 1997 +C +C - Electronic correction has been removed from the +C data contained in table DataSet02.dat. Also a bug +C relative to deltaVpn data has been fixed. +C +C Version 03: - Adds proton radius for spherical nuclei. +C - Adds experimental error in binding energy of +C spherical nuclei +C - Adds flags for deformed nuclei, delta^(3)_n and +C delta^(3)_p, and odd g.s.,which indicate if the +C corresponding masses have been measured (1) or +C evaluated (0). +C +C Version 04: - Adds rough estimate of axial deformation of SD states +C - Adds one nucleus in the list of SD states +C +C ------------------ +C +C Spherical nuclei: +C - IZsphe, INsphe: proton number Z and neutron number N +C - Bsphe: experimental binding energy +C - dBsphe: experimental error in binding energy +C - R0sphe: experimental diffraction radius +C - SIGsphe: experimental surface thickness +C - RMSspheCharge: experimental r.m.s charge radius +C - RMSspheProton: r.m.s proton radius computed from the charge radius +C +C Deformed nuclei: +C - IZdefo, INdefo: proton number Z and neutron number N +C - Bdefo: experimental binding energy +C - dBdefo: experimental error in binding energy +C - b2defo: beta_2 value of g.s. quadrupole deformation (SLY4 calculation) +C - IsOKdefo: status of binding energy: 1 = measured, 0 = evaluated +C +C Odd-even mass differences: +C - IZd3n, INd3n: proton number and neutron number related to the +C neutron odd-even mass difference +C - DELd3n, ERRd3n: delta3 (neutrons) and relative error +C - IsOKd3n: status of binding energy: 1 = measured, 0 = evaluated +C - IZd3p, INd3p: proton number and neutron number related to the +C proton odd-even mass difference +C - DELd3p, ERRd3p: delta3 (protons) and relative error +C - IsOKd3p: status of binding energy: 1 = measured, 0 = evaluated +C +C Super-deformed states and fission isomers: +C - IZsupd, INsupd: proton number Z and neutron number N +C - Bsupd: experimental binding energy +C - ESDsupd: energy of the SD bandhead or fission isomer +C - b2supd: rough estimate of the beta_2 value of the SD state +C +C Giant monopole resonance +C - IZmono, INmono: proton number Z and neutron number N +C - Emono: experimental energy +c +C Giant dipole resonance +C - IZdipo, INdipo: proton number Z and neutron number N +C - Emdipo: experimental energy +C +C Odd-mass nuclei: +C - IZodd, INodd: proton number Z and neutron number N +C - SPINodd: experimental g.s. spin +C - IPodd: experimental g.s. parity +C - IsOKodd: status of binding energy: 1 = measured, 0 = evaluated +C +C One quasi-particle state in Odd-mass superheavy nuclei: +C - IZqpSH, INqpSH: proton number Z and neutron number N +C - NQPqpSH: number of q.p. states +C - EqpSH: experimental excitation energy +C - LABqpSH: experimental Nilsson label +C - SPINqpSH: experimental spin +C - IPqpSH: experimental parity +C +C Position of the first 2+ state +C - IZtwop, INtwop: proton number Z and neutron number N +C - Etwop: experimental energy of the 2+ state +C - dEtwop: error bar on the energy +C - BE2twop: experimental BE2 +C - dBE2twop: error bar on the BE2 +C +C Delta Vpn +C - IZdvpn, INdvpn: proton number Z and neutron number N +C - ExcMASdvpn: Mass excess +C - ExcERRdvpn: Error on mass excess +C - BnucMASdvpn: binding energy per nucleon B/A +C - BnucERRdvpn: error (in %) on B/A +C - DelVPNdvpn: delta Vpn +C - DelERRdvpn: error on delta Vpn +C +C Terminating states: +C - IZterm, INterm: proton number Z and neutron number N +C - SPINterm, IP1term: spin Imax and parity for the f7/2 state +C - Eterm: energy of the f7/2 state +C - SpindETerm, IP2term: spin Imax and parity for the +C d3/2^(-1)*f7/2 state +C - dEterm: experimental energy difference between the two +C configurations +C +C IMPORTANT REMARK +C +C Experimental binding energies were extracted from Audi-Wapstra +C mass tables. BY DEFINITION, THEY DO INCLUDE A CONTRIBUTION FROM +C THE BINDING ENERGY OF THE ELECTRONS. To cancel out this effect +C and obtain the true NUCLEAR binding energy, a correction is added +C systematically, which goes (in MeV) as +C +C CorrELEC * Z^(2.39), CorrELEC = 1.433.10^(-5) +C +C + SUBROUTINE GetData() + PARAMETER + * (NDSPHE=80,NDDEFO=250,NDSUPD=20,NDMONO=3,NDDIPO=3) + PARAMETER + * (NDTWOP=600,NDTERM=20,ND_ODD=650,NDDVPN=150) + PARAMETER + * (NDQPSH=5,NDSHEL=5,ND_D3N=250,ND_D3P=250) + CHARACTER + * Keyword*8,LABqpSH*5 +C + COMMON + * /NUCLEI_SPHERI/ IZsphe(1:NDSPHE),INsphe(1:NDSPHE), + * IsOKsphe(1:NDSPHE) + * /NUCLEI_DEFORM/ IZdefo(1:NDDEFO),INdefo(1:NDDEFO), + * IsOKdefo(1:NDDEFO) + * /NUCLEI_DELT3N/ IZd3n (1:ND_D3N),INd3n (1:ND_D3N), + * IsOKd3n(1:ND_D3N) + * /NUCLEI_DELT3P/ IZd3p (1:ND_D3P),INd3p (1:ND_D3P), + * IsOKd3p(1:ND_D3P) + * /NUCLEI_SDSTAT/ IZsupd(1:NDSUPD),INsupd(1:NDSUPD) + * /NUCLEI_MONOPO/ IZmono(1:NDMONO),INmono(1:NDMONO) + * /NUCLEI_DIPOLE/ IZdipo(1:NDDIPO),INdipo(1:NDDIPO) + * /NUCLEI_ODDNUC/ IZodd (1:ND_ODD),INodd (1:ND_ODD), + * IsOKodd(1:ND_ODD) + * /NUCLEI_SHELEM/ IZqpSH(1:NDSHEL),INqpSH(1:NDSHEL) + * /NUCLEI_TWOPLU/ IZtwop(1:NDTWOP),INtwop(1:NDTWOP) + * /NUCLEI_TERMIN/ IZterm(1:NDTERM),INterm(1:NDTERM) + * /NUCLEI_DELTPN/ IZdvpn(1:NDDVPN),INdvpn(1:NDDVPN) + COMMON + * /DATABA_SIZVEC/ NUMsphe, NUModd, NUMdefo, + * NUMd3n, NUMd3p, NUMsupd, + * NUMmono, NUMdipo, NUMtwop, + * NUMdvpn, NUMterm, NUMqpSH + COMMON + * /DATABA_SPHERI/ Bsphe(1:NDSPHE),dBsphe(1:NDSPHE), + * R0sphe(1:NDSPHE),SIGsphe(1:NDSPHE), + * RMSspheCharge(1:NDSPHE), + * RMSspheProton(1:NDSPHE) + COMMON + * /DATABA_DEFORM/ Bdefo(1:NDDEFO),dBdefo(1:NDDEFO), + * b2defo(1:NDDEFO) + COMMON + * /DATABA_DELT3N/ DELd3n(1:ND_D3N),ERRd3n(1:ND_D3N) + * /DATABA_DELT3P/ DELd3p(1:ND_D3P),ERRd3p(1:ND_D3P) + COMMON + * /DATABA_SDSTAT/ Bsupd(1:NDSUPD),ESDsupd(1:NDSUPD), + * b2supd(1:NDSUPD) + COMMON + * /DATABA_MONOPO/ Emono(1:NDMONO),dEmono(1:NDMONO) + COMMON + * /DATABA_DIPOLE/ Edipo(1:NDDIPO) + COMMON + * /DATABA_ODDSPI/ SPINodd(1:ND_ODD) + * /DATABA_ODDPAR/ IPodd(1:ND_ODD) + COMMON + * /DATABA_QPNUMB/ NQPqpSH(1:NDSHEL) + * /DATABA_QPEEXC/ EqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPSPIN/ SPINqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPPARI/ IPqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPLABL/ LABqpSH(1:NDSHEL,1:NDQPSH) + COMMON + * /DATABA_TWOPLU/ Etwop(1:NDTWOP),dEtwop(1:NDTWOP), + * BE2twop(1:NDTWOP),dBE2twop(1:NDTWOP) + COMMON + * /DATABA_DELTPN/ ExcMASdvpn(1:NDDVPN), + * ExcERRdvpn(1:NDDVPN), + * BnucMASdvpn(1:NDDVPN), + * BnucERRdvpn(1:NDDVPN), + * DelVPNdvpn(1:NDDVPN), + * DelERRdvpn(1:NDDVPN) + COMMON + * /DATABA_TERMIN/ SPINterm(1:NDTERM),Eterm(1:NDTERM), + * SPINdEterm(1:NDTERM),dEterm(1:NDTERM) + * /PARITY_TERMIN/ IP1Term(1:NDTERM),IP2term(1:NDTERM) +C + n_unit = 15 +C + OPEN (n_unit, FILE='DataSet04.dat', ACTION='READ', IOSTAT=ierror) + IF (ierror .NE. 0) STOP 'Impossible to read: ./DataSet04.dat' +C + Keyword = 'XXXXXXXX' +C +C Scanning of the database proceeds by keywords +C + 1 CONTINUE +C + READ (n_unit,*) Keyword +C + IF (Keyword .EQ. 'END_DATA') THEN + CLOSE (n_unit) + RETURN + END IF +C + IF (Keyword .EQ. 'SPHERICA') THEN +C + READ (n_unit,*) NUMsphe +C + DO i=1, NUMsphe + READ (n_unit,*) IZsphe(i),INsphe(i),Bsphe(i), + * dBsphe(i),R0sphe(i),SIGsphe(i), + * RMSspheCharge(i),RMSspheProton(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'DEFORMED') THEN +C + READ (n_unit,*) NUMdefo +C + DO i=1, NUMdefo + READ (n_unit,*) IZdefo(i),INdefo(i),Bdefo(i), + * dBdefo(i),b2defo(i),IsOKdefo(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'DELTA3_N') THEN +C + READ (n_unit,*) NUMd3n +C + DO i=1, NUMd3n + READ (n_unit,*) IZd3n(i),INd3n(i),DELd3n(i),ERRd3n(i), + * IsOKd3n(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'DELTA3_P') THEN +C + READ (n_unit,*) NUMd3p +C + DO i=1, NUMd3p + READ (n_unit,*) INd3p(i),IZd3p(i),DELd3p(i),ERRd3p(i), + * IsOKd3p(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'SDSTATES') THEN +C + READ (n_unit,*) NUMsupd +C + DO i=1, NUMsupd + READ (n_unit,*) IZsupd(i),INsupd(i),Bsupd(i),ESDsupd(i), + * b2supd(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'MONOPRES') THEN +C + READ (n_unit,*) NUMmono +C + DO i=1, NUMmono + READ (n_unit,*) IZmono(i),INmono(i),Emono(i),dEmono(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'DIPOLRES') THEN +C + READ (n_unit,*) NUMdipo +C + DO i=1, NUMdipo + READ (n_unit,*) IZdipo(i),INdipo(i),Edipo(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'ODDNUCLE') THEN +C + READ (n_unit,*) NUModd +C + DO i=1, NUModd + READ (n_unit,*) IZodd(i),INodd(i),SPINodd(i),IPodd(i), + * IsOKodd(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'QPSHELEM') THEN +C + READ (n_unit,*) NUMqpSH +C + DO i=1, NUMqpSH + READ (n_unit,*) IZqpSH(i),INqpSH(i),NQPqpSH(i), + * EqpSH(i,1),LABqpSH(i,1), + * SPINqpSH(i,1),IPqpSH(i,1) + DO j=2,NQPqpSH(i) + READ (n_unit,*) EqpSH(i,j),LABqpSH(i,j), + * SPINqpSH(i,j),IPqpSH(i,j) + END DO + END DO +C + END IF +C + IF (Keyword .EQ. '2+ENERGY') THEN +C + READ (n_unit,*) NUMtwop +C + DO i=1, NUMtwop + READ (n_unit,*) IZtwop(i),INtwop(i),Etwop(i),dEtwop(i), + * BE2twop(i),dBE2twop(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'DELTAVPN') THEN +C + READ (n_unit,*) NUMdvpn +C + DO i=1, NUMdvpn + READ (n_unit,*) IZdvpn(i),INdvpn(i), + * ExcMASdvpn(i), ExcERRdvpn(i), + * BnucMASdvpn(i), BnucERRdvpn(i), + * DelVPNdvpn(i), DelERRdvpn(i) + END DO +C + END IF +C + IF (Keyword .EQ. 'TERMINAT') THEN +C + READ (n_unit,*) NUMterm +C + DO i=1, NUMterm + READ (n_unit,*) IZterm(i),INterm(i),SPINterm(i), + * IP1term(i),Eterm(i),SpindETerm(i), + * IP2term(i),dEterm(i) + END DO +C + END IF +C + GO TO 1 +C + END + +C This subroutine only prints the data so that the user can verify +C that everything has been read properly. + + SUBROUTINE PrintData() + PARAMETER + * (NDSPHE=80,NDDEFO=250,NDSUPD=20,NDMONO=3,NDDIPO=3) + PARAMETER + * (NDTWOP=600,NDTERM=20,ND_ODD=650,NDDVPN=150) + PARAMETER + * (NDQPSH=5,NDSHEL=5,ND_D3N=250,ND_D3P=250) + PARAMETER + * (NDVALS=4000,NDPROT=140,NDNEUT=200) + CHARACTER + * Keyword*8,LABqpSH*5 +C + COMMON + * /WAPDAT/ BINDNG(0:NDPROT,0:NDNEUT), + * ERRORB(0:NDPROT,0:NDNEUT), + * IVALID(0:NDPROT,0:NDNEUT) + COMMON + * /OEMALL/ OEMVAL(1:NDPROT,1:NDNEUT,0:1) +C + COMMON + * /NUCLEI_SPHERI/ IZsphe(1:NDSPHE),INsphe(1:NDSPHE), + * IsOKsphe(1:NDSPHE) + * /NUCLEI_DEFORM/ IZdefo(1:NDDEFO),INdefo(1:NDDEFO), + * IsOKdefo(1:NDDEFO) + * /NUCLEI_DELT3N/ IZd3n (1:ND_D3N),INd3n (1:ND_D3N), + * IsOKd3n(1:ND_D3N) + * /NUCLEI_DELT3P/ IZd3p (1:ND_D3P),INd3p (1:ND_D3P), + * IsOKd3p(1:ND_D3P) + * /NUCLEI_SDSTAT/ IZsupd(1:NDSUPD),INsupd(1:NDSUPD), + * b2supd(1:NDSUPD) + * /NUCLEI_MONOPO/ IZmono(1:NDMONO),INmono(1:NDMONO) + * /NUCLEI_DIPOLE/ IZdipo(1:NDDIPO),INdipo(1:NDDIPO) + * /NUCLEI_ODDNUC/ IZodd (1:ND_ODD),INodd (1:ND_ODD), + * IsOKodd(1:ND_ODD) + * /NUCLEI_SHELEM/ IZqpSH(1:NDSHEL),INqpSH(1:NDSHEL) + * /NUCLEI_TWOPLU/ IZtwop(1:NDTWOP),INtwop(1:NDTWOP) + * /NUCLEI_DELTPN/ IZdvpn(1:NDDVPN),INdvpn(1:NDDVPN) + * /NUCLEI_TERMIN/ IZterm(1:NDTERM),INterm(1:NDTERM) +C + COMMON + * /DATABA_SIZVEC/ NUMsphe, NUModd, NUMdefo, + * NUMd3n, NUMd3p, NUMsupd, + * NUMmono, NUMdipo, NUMtwop, + * NUMdvpn, NUMterm, NUMqpSH + COMMON + * /DATABA_SPHERI/ Bsphe(1:NDSPHE),dBsphe(1:NDSPHE), + * R0sphe(1:NDSPHE),SIGsphe(1:NDSPHE), + * RMSspheCharge(1:NDSPHE), + * RMSspheProton(1:NDSPHE) + COMMON + * /DATABA_DEFORM/ Bdefo(1:NDDEFO),dBdefo(1:NDDEFO), + * b2defo(1:NDDEFO) + COMMON + * /DATABA_DELT3N/ DELd3n(1:ND_D3N),ERRd3n(1:ND_D3N) + * /DATABA_DELT3P/ DELd3p(1:ND_D3P),ERRd3p(1:ND_D3P) + COMMON + * /DATABA_SDSTAT/ Bsupd(1:NDSUPD),ESDsupd(1:NDSUPD), + * b2supd(1:NDSUPD) + COMMON + * /DATABA_MONOPO/ Emono(1:NDMONO),dEmono(1:NDMONO) + COMMON + * /DATABA_DIPOLE/ Edipo(1:NDDIPO) + COMMON + * /DATABA_ODDSPI/ SPINodd(1:ND_ODD) + * /DATABA_ODDPAR/ IPodd(1:ND_ODD) + COMMON + * /DATABA_QPNUMB/ NQPqpSH(1:NDSHEL) + * /DATABA_QPEEXC/ EqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPSPIN/ SPINqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPPARI/ IPqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPLABL/ LABqpSH(1:NDSHEL,1:NDQPSH) + COMMON + * /DATABA_TWOPLU/ Etwop(1:NDTWOP),dEtwop(1:NDTWOP), + * BE2twop(1:NDTWOP),dBE2twop(1:NDTWOP) + COMMON + * /DATABA_DELTPN/ ExcMASdvpn(1:NDDVPN), + * ExcERRdvpn(1:NDDVPN), + * BnucMASdvpn(1:NDDVPN), + * BnucERRdvpn(1:NDDVPN), + * DelVPNdvpn(1:NDDVPN), + * DelERRdvpn(1:NDDVPN) + COMMON + * /DATABA_TERMIN/ SPINterm(1:NDTERM),Eterm(1:NDTERM), + * SPINdEterm(1:NDTERM),dEterm(1:NDTERM) + * /PARITY_TERMIN/ IP1Term(1:NDTERM),IP2term(1:NDTERM) +C + Keyword = 'SPHERICA' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUMsphe +C + DO i=1, NUMsphe + WRITE (6,'(9X,2I5,1X,6F11.5)') + * IZsphe(i),INsphe(i), + * Bsphe(i),dBsphe(i), + * R0sphe(i),SIGsphe(i), + * RMSspheCharge(i), + * RMSspheProton(i) + END DO +C + Keyword = 'DEFORMED' + WRITE (6,'(A8)') Keyword + WRITE (6,'(10X,I5)') NUMdefo +C + DO i=1, NUMdefo + WRITE (6,'(9X,2I5,F12.5,2F11.5,i4)') IZdefo(i),INdefo(i), + * Bdefo(i),dBdefo(i), + * b2defo(i),IsOKdefo(i) + END DO +C + Keyword = 'DELTA3_N' + WRITE (6,'(A8)') Keyword + WRITE (6,'(10X,I5)') NUMd3n +C + DO i=1, NUMd3n + WRITE (6,'(9X,2I5,2F12.6,i4)') IZd3n(i),INd3n(i), + * DELd3n(i),ERRd3n(i), + * IsOKd3n(i) + END DO +C + Keyword = 'DELTA3_P' + WRITE (6,'(A8)') Keyword + WRITE (6,'(10X,I5)') NUMd3p +C + DO i=1, NUMd3p + WRITE (6,'(9X,2I5,2F12.6,i4)') INd3p(i),IZd3p(i), + * DELd3p(i),ERRd3p(i), + * IsOKd3p(i) + END DO +C + Keyword = 'SDSTATES' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUMsupd +C + DO i=1, NUMsupd + WRITE (6,'(9X,2I5,F12.5,2F9.3)') IZsupd(i),INsupd(i), + * Bsupd(i),ESDsupd(i), + * b2supd(i) + END DO +C + Keyword = 'MONOPRES' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUMmono + + DO i=1, NUMmono + WRITE (6,'(9X,2I5,1X,F9.2,F10.2)') IZmono(i),INmono(i), + * Emono(i),dEmono(i) + END DO +C + Keyword = 'DIPOLRES' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUMdipo +C + DO i=1, NUMdipo + WRITE (6,'(9X,2I5,1X,F9.2)') IZdipo(i),INdipo(i),Edipo(i) + END DO +C + Keyword = 'ODDNUCLE' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUModd +C + DO i=1, NUModd + WRITE (6,'(9X,2I5,F6.1,I5,i4)') IZodd(i),INodd(i), + * SPINodd(i),IPodd(i), + * IsOKodd(i) + END DO +C + Keyword = 'QPSHELEM' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUMqpSH +C + DO i=1, NUMqpSH + WRITE (6,'(9X,2I5,I4,F10.5,4X,A5,F8.1,5X,I2)') + * IZqpSH(i),INqpSH(i),NQPqpSH(i), + * EqpSH(i,1),LABqpSH(i,1), + * SPINqpSH(i,1),IPqpSH(i,1) + DO j=2,NQPqpSH(i) + WRITE (6,'(23X,F10.5,4X,A5,F8.1,5X,I2)') + * EqpSH(i,j),LABqpSH(i,j), + * SPINqpSH(i,j),IPqpSH(i,j) + END DO + END DO +C + Keyword = '2+ENERGY' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUMtwop +C + DO i=1, NUMtwop + WRITE (6,'(9X,2I5,4F11.5)') IZtwop(i),INtwop(i),Etwop(i), + * dEtwop(i),BE2twop(i),dBE2twop(i) + END DO +C + Keyword = 'DELTAVPN' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUMdvpn +C + DO i=1, NUMdvpn + WRITE (6,'(9X,2I5,F12.1,F10.1,F15.2,F10.2,F14.4,F12.4)') + * IZdvpn(i),INdvpn(i), + * ExcMASdvpn(i), ExcERRdvpn(i), + * BnucMASdvpn(i), BnucERRdvpn(i), + * DelVPNdvpn(i), DelERRdvpn(i) + END DO +C + Keyword = 'TERMINAT' + WRITE (6,'(A8)') Keyword + WRITE (6,'(9X,I5)') NUMterm +C + DO i=1, NUMterm + WRITE (6,'(9X,2I5,F9.1,I10,F12.3,F8.1,I8,F9.3)') + * IZterm(i),INterm(i),SPINterm(i),IP1term(i), + * Eterm(i),SpindETerm(i),IP2term(i),dEterm(i) + END DO +C + RETURN + END +C +C This subroutine only initializes all the common blocks +C + SUBROUTINE InitializeData() + PARAMETER + * (NDSPHE=80,NDDEFO=250,NDSUPD=20,NDMONO=3,NDDIPO=3) + PARAMETER + * (NDTWOP=600,NDTERM=20,ND_ODD=650,NDDVPN=150) + PARAMETER + * (NDQPSH=5,NDSHEL=5,ND_D3N=250,ND_D3P=250) +C + CHARACTER + * LABqpSH*5 +C + COMMON + * /NUCLEI_SPHERI/ IZsphe(1:NDSPHE),INsphe(1:NDSPHE), + * IsOKsphe(1:NDSPHE) + * /NUCLEI_DEFORM/ IZdefo(1:NDDEFO),INdefo(1:NDDEFO), + * IsOKdefo(1:NDDEFO) + * /NUCLEI_DELT3N/ IZd3n (1:ND_D3N),INd3n (1:ND_D3N), + * IsOKd3n(1:ND_D3N) + * /NUCLEI_DELT3P/ IZd3p (1:ND_D3P),INd3p (1:ND_D3P), + * IsOKd3p(1:ND_D3P) + * /NUCLEI_SDSTAT/ IZsupd(1:NDSUPD),INsupd(1:NDSUPD) + * /NUCLEI_MONOPO/ IZmono(1:NDMONO),INmono(1:NDMONO) + * /NUCLEI_DIPOLE/ IZdipo(1:NDDIPO),INdipo(1:NDDIPO) + * /NUCLEI_ODDNUC/ IZodd (1:ND_ODD),INodd (1:ND_ODD), + * IsOKodd(1:ND_ODD) + * /NUCLEI_SHELEM/ IZqpSH(1:NDSHEL),INqpSH(1:NDSHEL) + * /NUCLEI_TWOPLU/ IZtwop(1:NDTWOP),INtwop(1:NDTWOP) + * /NUCLEI_DELTPN/ IZdvpn(1:NDDVPN),INdvpn(1:NDDVPN) + * /NUCLEI_TERMIN/ IZterm(1:NDTERM),INterm(1:NDTERM) +C + COMMON + * /DATABA_SIZVEC/ NUMsphe, NUModd, NUMdefo, + * NUMd3n, NUMd3p, NUMsupd, + * NUMmono, NUMdipo, NUMtwop, + * NUMdvpn, NUMterm, NUMqpSH + COMMON + * /DATABA_SPHERI/ Bsphe(1:NDSPHE),dBsphe(1:NDSPHE), + * R0sphe(1:NDSPHE),SIGsphe(1:NDSPHE), + * RMSspheCharge(1:NDSPHE), + * RMSspheProton(1:NDSPHE) + COMMON + * /DATABA_DEFORM/ Bdefo(1:NDDEFO),dBdefo(1:NDDEFO), + * b2defo(1:NDDEFO) + COMMON + * /DATABA_DELT3N/ DELd3n(1:ND_D3N),ERRd3n(1:ND_D3N) + * /DATABA_DELT3P/ DELd3p(1:ND_D3P),ERRd3p(1:ND_D3P) + COMMON + * /DATABA_SDSTAT/ Bsupd(1:NDSUPD),ESDsupd(1:NDSUPD), + * b2supd(1:NDSUPD) + COMMON + * /DATABA_MONOPO/ Emono(1:NDMONO),dEmono(1:NDMONO) + COMMON + * /DATABA_DIPOLE/ Edipo(1:NDDIPO) + COMMON + * /DATABA_ODDSPI/ SPINodd(1:ND_ODD) + * /DATABA_ODDPAR/ IPodd(1:ND_ODD) + COMMON + * /DATABA_QPNUMB/ NQPqpSH(1:NDSHEL) + * /DATABA_QPEEXC/ EqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPSPIN/ SPINqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPPARI/ IPqpSH(1:NDSHEL,1:NDQPSH) + * /DATABA_QPLABL/ LABqpSH(1:NDSHEL,1:NDQPSH) + COMMON + * /DATABA_TWOPLU/ Etwop(1:NDTWOP),dEtwop(1:NDTWOP), + * BE2twop(1:NDTWOP),dBE2twop(1:NDTWOP) + COMMON + * /DATABA_DELTPN/ ExcMASdvpn(1:NDDVPN), + * ExcERRdvpn(1:NDDVPN), + * BnucMASdvpn(1:NDDVPN), + * BnucERRdvpn(1:NDDVPN), + * DelVPNdvpn(1:NDDVPN), + * DelERRdvpn(1:NDDVPN) + COMMON + * /DATABA_TERMIN/ SPINterm(1:NDTERM),Eterm(1:NDTERM), + * SPINdEterm(1:NDTERM),dEterm(1:NDTERM) + * /PARITY_TERMIN/ IP1Term(1:NDTERM),IP2term(1:NDTERM) +C + NUMsphe = 1 + NUModd = 1 + NUMdefo = 1 + NUMsupd = 1 + NUMmono = 1 + NUMdipo = 1 + NUMtwop = 1 + NUMdvpn = 1 + NUMterm = 1 + NUMqpSH = 1 +C + DO i=1,NDSPHE + IZsphe(i) = 82 + INsphe(i) = 126 + Bsphe(i) = 0.0 + dBsphe(i) = 0.0 + R0sphe(i) = 0.0 + SIGsphe(i) = 0.0 + RMSspheCharge(i) = 0.0 + RMSspheProton(i) = 0.0 + END DO +C + DO i=1,NDDEFO + IZdefo(i) = 82 + INdefo(i) = 126 + Bdefo(i) = 0.0 + dBdefo(i) = 0.0 + b2defo(i) = 0.0 + IsOKdefo(i) = 0 + END DO +C + DO i=1,ND_D3N + IZd3n(i) = 82 + INd3n(i) = 126 + DELd3n(i) = 0.0 + ERRd3n(i) = 0.0 + IsOKd3n(i) = 0 + END DO +C + DO i=1,ND_D3P + IZd3p(i) = 82 + INd3p(i) = 126 + DELd3p(i) = 0.0 + ERRd3p(i) = 0.0 + IsOKd3p(i) = 0 + END DO +C + DO i=1,NDSUPD + IZsupd(i) = 82 + INsupd(i) = 126 + Bsupd(i) = 0.0 + ESDsupd(i) = 0.0 + b2supd(i) = 0.7 + END DO +C + DO i=1,NDMONO + IZmono(i) = 82 + INmono(i) = 126 + Emono(i) = 0.0 + dEmono(i) = 0.0 + END DO +C + DO i=1,NDDIPO + IZdipo(i) = 82 + INdipo(i) = 126 + Edipo(i) = 0.0 + END DO +C + DO i=1,ND_ODD + IZodd(i) = 82 + INodd(i) = 126 + SPINodd(i) = 0.0 + IPodd(i) = 0 + IsOKodd(i) = 0 + END DO +C + DO i=1,NDSHEL + IZqpSH(i) = 82 + INqpSH(i) = 126 + NQPqpSH(i) = 1 + DO j=1,NDQPSH + EqpSH(i,j)=0.0 + SPINqpSH(i,j)=0.5 + IPqpSH(i,j)=+1 + LABqpSH(i,j)='XXXXX' + END DO + END DO +C + DO i=1,NDTWOP + IZtwop(i) = 82 + INtwop(i) = 126 + Etwop(i) = 0.0 + dEtwop(i) = 0.0 + BE2twop(i) = 0.0 + dBE2twop(i) = 0.0 + END DO +C + DO i=1,NDDVPN + IZdvpn(i) = 82 + INdvpn(i) = 126 + ExcMASdvpn(i) = 0.0 + ExcERRdvpn(i) = 0.0 + BnucMASdvpn(i) = 0.0 + BnucERRdvpn(i) = 0.0 + DelVPNdvpn(i) = 0.0 + DelERRdvpn(i) = 0.0 + END DO +C + DO i=1,NDTERM + IZterm(i) = 82 + INterm(i) = 126 + SPINterm(i) = 0.0 + Eterm(i) = 0.0 + SPINdEterm(i) = 0.0 + dEterm(i) = 0.0 + IP1term(i) = 0 + IP2term(i) = 0 + END DO +C + RETURN + END + diff --git a/nuc/main04.f b/nuc/main04.f new file mode 100644 index 00000000..6acca572 --- /dev/null +++ b/nuc/main04.f @@ -0,0 +1,20 @@ + PROGRAM main + COMMON + * /DATABA_SIZVEC/ NUMsphe, NUModd, NUMdefo, + * NUMd3n, NUMd3p, NUMsupd, + * NUMmono, NUMdipo, NUMtwop, + * NUMdvpn, NUMterm, NUMqpSH +C + CALL InitializeData() +C + CALL GetData() +C + CALL PrintData() +C + STOP +C + END +C + INCLUDE 'input04.f' + + -- GitLab