diff --git a/sammy/src/clm/CrystalLatticeBroadening_M.f90 b/sammy/src/clm/CrystalLatticeBroadening_M.f90 index d19fad46a443bf9f2ca18899a381859a121128f1..fe48d47b708f15af5d472706b2aed9bb349e66d1 100644 --- a/sammy/src/clm/CrystalLatticeBroadening_M.f90 +++ b/sammy/src/clm/CrystalLatticeBroadening_M.f90 @@ -101,16 +101,14 @@ subroutine CrystalLatticeBroadening_broaden(this) class(CrystalLatticeBroadening) :: this integer::ndatb - type(DerivativeHandler)::data + + call FreeGasDopplerBroadening_broaden(this) ! reserve the data ndatb = this%getNumEnergyBroadened() - call this%getData(data) - call data%nullify() - call data%reserve(ndatb*data%getNnnsig(), this%numPar+1) if( this%hasSelf) then call this%dataSelf%nullify() - call this%dataSelf%reserve(ndatb*this%dataSelf%getNnnsig(), this%numPar+1) + call this%dataSelf%reserve(ndatb*this%dataSelf%getNnnsig(), this%getNumParams()+1) end if end subroutine diff --git a/sammy/src/clm/mclm8a.f90 b/sammy/src/clm/mclm8a.f90 index 6e878dc33ccd4838be2655b71f1faef33e4bedce..129246c46728076b6b394764cd50ff2d5d22dd16 100644 --- a/sammy/src/clm/mclm8a.f90 +++ b/sammy/src/clm/mclm8a.f90 @@ -42,7 +42,7 @@ module Qtrap_Clm_m irow = calc%getCurrentPos() Na = derivs%getNnnsig() call tmpCalc%setNnsig(Na) - call tmpCalc%reserve(Na, calc%numPar+1) + call tmpCalc%reserve(Na, calc%getNumParams()+1) ! Lstart = 1 Jmax = 10 @@ -90,7 +90,7 @@ module Qtrap_Clm_m E_Prime = Xxa + Half*Del ! ! *** Take half of what's already there - do ipar = 0, calc%numPar + do ipar = 0, calc%getNumParams() do N = 1, Na val = tmpCalc%getDataNs(1, N, ipar, 1)*Half if (val.eq.0.0d0) cycle @@ -140,7 +140,7 @@ module Qtrap_Clm_m accu = .true. call derivs%setAccumulate(accu) - do ipar = 0, calc%numPar + do ipar = 0, calc%getNumParams() do N = 1, Na val = tmpCalc%getDataNs(1, N, ipar, 1) if (val.eq.0.0d0) cycle @@ -163,7 +163,7 @@ module Qtrap_Clm_m IF (calc%Mode_S_Norm.EQ.0) THEN ELSE IF (calc%Mode_S_Norm.EQ.1) THEN Yy = (One-Sel)/(C_Norm-Sel) - do ipar = 0, calc%numPar + do ipar = 0, calc%getNumParams() do N = 1, Na val = Yy * derivs%getDataNs( irow, N, Ipar, Isox) if (val.eq.0.0d0) cycle @@ -230,7 +230,7 @@ module Qtrap_Clm_m END IF ! update cross section (ipar=0) as well as derivatives - do Ipar = 0, calc%numPar + do Ipar = 0, calc%getNumParams() DO N=1,Na L = 0 val = 0.0d0 @@ -308,7 +308,7 @@ module Qtrap_Clm_m ! *** ! update cross section (ipar=0) as well as derivatives - Do Ipar = 0, calc%numPar + Do Ipar = 0, calc%getNumParams() DO N=1,Na L = 0 val = 0.0d0 diff --git a/sammy/src/convolution/DopplerAndResolutionBroadener.cpp b/sammy/src/convolution/DopplerAndResolutionBroadener.cpp index 97f6119705e4ec7a01cefc25540a7b70f314398a..b972d63708767abc1e13c7ae40acd1687e0de60c 100644 --- a/sammy/src/convolution/DopplerAndResolutionBroadener.cpp +++ b/sammy/src/convolution/DopplerAndResolutionBroadener.cpp @@ -12,6 +12,7 @@ DopplerAndResolutionBroadener::DopplerAndResolutionBroadener(DerivativeHandler & numPerEner = 1; posUn = posBroad = 0; offUn = offBroad = 0; + numParams = 0; if( !(list.getLength() > 0)) throw std::runtime_error( "We need at least one energy grid in order to broaden"); unGrid = 0; broadGrid = 0; @@ -136,8 +137,24 @@ void DopplerAndResolutionBroadener::insertEnergyBroadened(int pos){ } -void DopplerAndResolutionBroadener::broaden(bool makebroadGrid){} +void DopplerAndResolutionBroadener::broaden(bool makebroadGrid){ + // reserve the data + int ndatb = getNumEnergyBroadened(); + handler.nullify(); + handler.reserve(ndatb*handler.getNnnsig(), numParams+1); +} +void DopplerAndResolutionBroadener::transferUnbroadened(int ipos, int iso){ + int nsig = handler.getNnnsig(); + for (int ipar = 0; ipar < numParams+1; ipar++){ + for (int n = 0; n < nsig; n++){ + double val = handler.getDataNs(ipos, n, ipar, iso, false); + if (val != 0.0){ + handler.addDataNs(currentPos, n, ipar, iso, val); + } + } + } +} int DopplerAndResolutionBroadener::getEmInUnbroadened(double em, int istart) const{ int nener = getNumEnergyUnbroadened(); @@ -248,7 +265,7 @@ void DopplerAndResolutionBroadener::ensureWorkGridLength(int length){ } } -void DopplerAndResolutionBroadener::setupBroadnener(bool moreBroadening){ +void DopplerAndResolutionBroadener::setupBroadnener(bool moreBroadening, int num){ const std::unique_ptr<GridData> & grid = gridList.getGrid(0); int numcro = 1; int ipos = 0; @@ -271,6 +288,8 @@ void DopplerAndResolutionBroadener::setupBroadnener(bool moreBroadening){ else{ setBroadenedGrid(0,ipos); // if last broadening it is on the experimental grid } + + numParams = num; } void DopplerAndResolutionBroadener::setXoefWeights(int index){ diff --git a/sammy/src/convolution/DopplerAndResolutionBroadener.h b/sammy/src/convolution/DopplerAndResolutionBroadener.h index 170fbd6849064af83fb771e5f8cc62bb105c7f81..4e5224b874466be42fc8f10cdf671ff6aac34543 100644 --- a/sammy/src/convolution/DopplerAndResolutionBroadener.h +++ b/sammy/src/convolution/DopplerAndResolutionBroadener.h @@ -259,8 +259,9 @@ public: * Set up the grid * * @param moreBroadening true if more broadening is to happen after + * @param the number of parameters that have derivatives */ - void setupBroadnener(bool moreBroadening); + void setupBroadnener(bool moreBroadening, int num); /** * Indicate where broadenend data actually start on the @@ -282,6 +283,23 @@ public: */ int getLength() const { return length;} + /** + * Get the number of parameters for which derivatives exist + * @return the number of parameters for which derivatives exist + */ + int getNumParams() const { return numParams; } + + /** + * Transfer the unbroadened data unchanged to the broadened + * data array. + * The broadened data will be storted at position + * getCurrentPos() and the unbroadened data are retrieved from + * ipos. + * + * @param ipos the position of the unbroadened data + * @param iso the isotope for which to transfer the data + */ + void transferUnbroadened(int ipos, int iso); private: void ensureWorkGridLength(int length); @@ -302,6 +320,8 @@ private: int integralStart, integralPts; + int numParams; + int currentPos; int length; }; diff --git a/sammy/src/convolution/interface/cix/DopplerAndResolutionBroadener.cpp2f.xml b/sammy/src/convolution/interface/cix/DopplerAndResolutionBroadener.cpp2f.xml index 3fb977f258779bbe894e24fe7b3027dcc140c3e6..21fe0cd08207b16b73822cad9b86ce724a46467e 100644 --- a/sammy/src/convolution/interface/cix/DopplerAndResolutionBroadener.cpp2f.xml +++ b/sammy/src/convolution/interface/cix/DopplerAndResolutionBroadener.cpp2f.xml @@ -91,7 +91,9 @@ </method> <method name="setupBroadnener"> <param name="moreBroadening" type="bool"/> + <param name="num" type="int"/> </method> + <method name="getNumParams" return_type="int"/> <method name="updateBroadenedOffset"> <param name="offSet" type="int" offset="-1"/> @@ -103,6 +105,11 @@ <method name="getLength" return_type="int"/> <method name="broaden"/> + + <method name="transferUnbroadened"> + <param name="ipos" type="int" offset="-1"/> + <param name="iso" type="int" offset="-1"/> + </method> </class> </generate> diff --git a/sammy/src/convolution/interface/cix/DopplerBroadening.cpp2f.xml b/sammy/src/convolution/interface/cix/DopplerBroadening.cpp2f.xml index 2a565e82d6dbf336883530ba67133ca3686f8d6d..423d51c66794a94a91d00711967250be3c4a26f1 100644 --- a/sammy/src/convolution/interface/cix/DopplerBroadening.cpp2f.xml +++ b/sammy/src/convolution/interface/cix/DopplerBroadening.cpp2f.xml @@ -21,5 +21,7 @@ <method name="setBrdLim"> <param name="b" type="double"/> </method> + + <method name="broaden"/> </class> </generate> diff --git a/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.cpp b/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.cpp index 708cf7c72bce00b93eecbf4252297ed00b985d20..a28322e557405473b2030db4cdebbfef7d40cf7b 100644 --- a/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.cpp +++ b/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.cpp @@ -2,7 +2,7 @@ * This file has been dynamically generated by Class Interface Xml (CIX) * DO NOT MODIFY THIS FILE -- CHANGES WILL BE OVERWRITTEN UPON REGENERATION * If changes need to occur, modify the appropriate CIX xml file -* Date Generated: Fri Feb 11 16:55:04 EST 2022 +* Date Generated: Tue Apr 19 09:05:33 EDT 2022 * If any issues are experiences with this generated file that cannot be fixed * with adjustment of the CIX xml file, please contact Robert A. Lefebvre, raq@ornl.gov */ @@ -134,9 +134,14 @@ void DopplerAndResolutionBroadener_setXoefWeights(void * DopplerAndResolutionBro ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->setXoefWeights(*index); } -void DopplerAndResolutionBroadener_setupBroadnener(void * DopplerAndResolutionBroadener_ptr,bool * moreBroadening) +void DopplerAndResolutionBroadener_setupBroadnener(void * DopplerAndResolutionBroadener_ptr,bool * moreBroadening,int * num) { - ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->setupBroadnener(*moreBroadening); + ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->setupBroadnener(*moreBroadening,*num); +} + +int DopplerAndResolutionBroadener_getNumParams(void * DopplerAndResolutionBroadener_ptr) +{ + return ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->getNumParams(); } void DopplerAndResolutionBroadener_updateBroadenedOffset(void * DopplerAndResolutionBroadener_ptr,int * offSet) @@ -159,6 +164,11 @@ void DopplerAndResolutionBroadener_broaden(void * DopplerAndResolutionBroadener_ ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->broaden(); } +void DopplerAndResolutionBroadener_transferUnbroadened(void * DopplerAndResolutionBroadener_ptr,int * ipos,int * iso) +{ + ((DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr)->transferUnbroadened(*ipos,*iso); +} + void DopplerAndResolutionBroadener_destroy(void * DopplerAndResolutionBroadener_ptr) { delete (DopplerAndResolutionBroadener*)DopplerAndResolutionBroadener_ptr; diff --git a/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.h b/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.h index e517e2cb68b1c13d066c49fc10b17ac7f9a3a917..090ad8ab3feca83171217855840ef2823ff3f867 100644 --- a/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.h +++ b/sammy/src/convolution/interface/cpp/DopplerAndResolutionBroadenerInterface.h @@ -2,7 +2,7 @@ * This file has been dynamically generated by Class Interface Xml (CIX) * DO NOT MODIFY THIS FILE -- CHANGES WILL BE OVERWRITTEN UPON REGENERATION * If changes need to occur, modify the appropriate CIX xml file -* Date Generated: Fri Feb 11 16:55:04 EST 2022 +* Date Generated: Tue Apr 19 09:05:33 EDT 2022 * If any issues are experiences with this generated file that cannot be fixed * with adjustment of the CIX xml file, please contact Robert A. Lefebvre, raq@ornl.gov */ @@ -39,11 +39,13 @@ void DopplerAndResolutionBroadener_nullifyWorkGrid(void * DopplerAndResolutionBr double DopplerAndResolutionBroadener_getWorkData(void * DopplerAndResolutionBroadener_ptr,int * index,int * row,int * col); void DopplerAndResolutionBroadener_setWorkData(void * DopplerAndResolutionBroadener_ptr,int * index,int * row,int * col,double * val); void DopplerAndResolutionBroadener_setXoefWeights(void * DopplerAndResolutionBroadener_ptr,int * index); -void DopplerAndResolutionBroadener_setupBroadnener(void * DopplerAndResolutionBroadener_ptr,bool * moreBroadening); +void DopplerAndResolutionBroadener_setupBroadnener(void * DopplerAndResolutionBroadener_ptr,bool * moreBroadening,int * num); +int DopplerAndResolutionBroadener_getNumParams(void * DopplerAndResolutionBroadener_ptr); void DopplerAndResolutionBroadener_updateBroadenedOffset(void * DopplerAndResolutionBroadener_ptr,int * offSet); void DopplerAndResolutionBroadener_setLength(void * DopplerAndResolutionBroadener_ptr,int * l); int DopplerAndResolutionBroadener_getLength(void * DopplerAndResolutionBroadener_ptr); void DopplerAndResolutionBroadener_broaden(void * DopplerAndResolutionBroadener_ptr); +void DopplerAndResolutionBroadener_transferUnbroadened(void * DopplerAndResolutionBroadener_ptr,int * ipos,int * iso); void DopplerAndResolutionBroadener_destroy(void * DopplerAndResolutionBroadener_ptr); #ifdef __cplusplus } diff --git a/sammy/src/convolution/interface/cpp/DopplerBroadeningInterface.cpp b/sammy/src/convolution/interface/cpp/DopplerBroadeningInterface.cpp index 73ca614db19add9af0ccae5ce6f737dd8f0bf50d..e7a565a951261b1d18012bfb58848b12d904809b 100644 --- a/sammy/src/convolution/interface/cpp/DopplerBroadeningInterface.cpp +++ b/sammy/src/convolution/interface/cpp/DopplerBroadeningInterface.cpp @@ -2,7 +2,7 @@ * This file has been dynamically generated by Class Interface Xml (CIX) * DO NOT MODIFY THIS FILE -- CHANGES WILL BE OVERWRITTEN UPON REGENERATION * If changes need to occur, modify the appropriate CIX xml file -* Date Generated: Wed Mar 23 10:56:59 EDT 2022 +* Date Generated: Tue Apr 19 10:21:53 EDT 2022 * If any issues are experiences with this generated file that cannot be fixed * with adjustment of the CIX xml file, please contact Robert A. Lefebvre, raq@ornl.gov */ @@ -19,9 +19,24 @@ double DopplerBroadening_getTemperature(void * DopplerBroadening_ptr) return ((DopplerBroadening*)DopplerBroadening_ptr)->getTemperature(); } -void DopplerBroadening_setTemperature(void * DopplerBroadening_ptr,double * n) +void DopplerBroadening_setTemperature(void * DopplerBroadening_ptr,double * t) { - ((DopplerBroadening*)DopplerBroadening_ptr)->setTemperature(*n); + ((DopplerBroadening*)DopplerBroadening_ptr)->setTemperature(*t); +} + +double DopplerBroadening_getBrdLim(void * DopplerBroadening_ptr) +{ + return ((DopplerBroadening*)DopplerBroadening_ptr)->getBrdLim(); +} + +void DopplerBroadening_setBrdLim(void * DopplerBroadening_ptr,double * b) +{ + ((DopplerBroadening*)DopplerBroadening_ptr)->setBrdLim(*b); +} + +void DopplerBroadening_broaden(void * DopplerBroadening_ptr) +{ + ((DopplerBroadening*)DopplerBroadening_ptr)->broaden(); } void DopplerBroadening_destroy(void * DopplerBroadening_ptr) diff --git a/sammy/src/convolution/interface/cpp/DopplerBroadeningInterface.h b/sammy/src/convolution/interface/cpp/DopplerBroadeningInterface.h index 96a1e1ec86551d2df259e21c15c5ed097662ee44..0008d6585ff5ba4fe85f1d8e5ed371c9e0dd39ee 100644 --- a/sammy/src/convolution/interface/cpp/DopplerBroadeningInterface.h +++ b/sammy/src/convolution/interface/cpp/DopplerBroadeningInterface.h @@ -2,23 +2,28 @@ * This file has been dynamically generated by Class Interface Xml (CIX) * DO NOT MODIFY THIS FILE -- CHANGES WILL BE OVERWRITTEN UPON REGENERATION * If changes need to occur, modify the appropriate CIX xml file -* Date Generated: Wed Mar 23 10:56:58 EDT 2022 +* Date Generated: Tue Apr 19 10:21:53 EDT 2022 * If any issues are experiences with this generated file that cannot be fixed * with adjustment of the CIX xml file, please contact Robert A. Lefebvre, raq@ornl.gov */ #ifndef DOPPLERBROADENINGINTERFACE_H #define DOPPLERBROADENINGINTERFACE_H -#include "../../DopplerAndResolutionBroadener.h" -#include "../../DopplerBroadening.h" #include "salmon/DerivativeHandler.h" #include "salmon/GridData.h" +#include "../../DopplerAndResolutionBroadener.h" +#include "../../DopplerBroadening.h" + + using namespace sammy; #ifdef __cplusplus extern "C" { #endif void* DopplerBroadening_initialize(DerivativeHandler * hand,GridDataList * list,GridDataList * work ); double DopplerBroadening_getTemperature(void * DopplerBroadening_ptr); -void DopplerBroadening_setTemperature(void * DopplerBroadening_ptr,double * n); +void DopplerBroadening_setTemperature(void * DopplerBroadening_ptr,double * t); +double DopplerBroadening_getBrdLim(void * DopplerBroadening_ptr); +void DopplerBroadening_setBrdLim(void * DopplerBroadening_ptr,double * b); +void DopplerBroadening_broaden(void * DopplerBroadening_ptr); void DopplerBroadening_destroy(void * DopplerBroadening_ptr); #ifdef __cplusplus } diff --git a/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_I.f90 b/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_I.f90 index 73cd720e76efeb07f848493d4634467a7aa091c4..a9081732abb868e90b65aeb05475d8952338b42c 100644 --- a/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_I.f90 +++ b/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_I.f90 @@ -2,7 +2,7 @@ !! This file has been dynamically generated by Class Interface Xml (CIX) !! DO NOT MODIFY THIS FILE -- CHANGES WILL BE OVERWRITTEN UPON REGENERATION !! If changes need to occur, modify the appropriate CIX xml file -!! Date Generated: Fri Feb 11 16:55:04 EST 2022 +!! Date Generated: Tue Apr 19 09:05:33 EDT 2022 !! If any issues are experiences with this generated file that cannot be fixed !! with adjustment of the CIX xml file, please contact Robert A. Lefebvre, raq@ornl.gov !!/ @@ -164,12 +164,18 @@ subroutine f_DopplerAndResolutionBroadener_setXoefWeights(DopplerAndResolutionBr type(C_PTR), value :: DopplerAndResolutionBroadener_ptr; integer(C_INT) :: index; end subroutine -subroutine f_DopplerAndResolutionBroadener_setupBroadnener(DopplerAndResolutionBroadener_ptr, moreBroadening ) BIND(C,name="DopplerAndResolutionBroadener_setupBroadnener") +subroutine f_DopplerAndResolutionBroadener_setupBroadnener(DopplerAndResolutionBroadener_ptr, moreBroadening,num ) BIND(C,name="DopplerAndResolutionBroadener_setupBroadnener") use,intrinsic :: ISO_C_BINDING implicit none - type(C_PTR), value :: DopplerAndResolutionBroadener_ptr; + type(C_PTR), value :: DopplerAndResolutionBroadener_ptr; logical(C_BOOL) :: moreBroadening; + integer(C_INT) :: num; end subroutine +integer(C_INT) function f_DopplerAndResolutionBroadener_getNumParams(DopplerAndResolutionBroadener_ptr ) BIND(C,name="DopplerAndResolutionBroadener_getNumParams") + use,intrinsic :: ISO_C_BINDING + implicit none + type(C_PTR), value :: DopplerAndResolutionBroadener_ptr; +end function subroutine f_DopplerAndResolutionBroadener_updateBroadenedOffset(DopplerAndResolutionBroadener_ptr, offSet ) BIND(C,name="DopplerAndResolutionBroadener_updateBroadenedOffset") use,intrinsic :: ISO_C_BINDING implicit none @@ -192,6 +198,13 @@ subroutine f_DopplerAndResolutionBroadener_broaden(DopplerAndResolutionBroadener implicit none type(C_PTR), value :: DopplerAndResolutionBroadener_ptr; end subroutine +subroutine f_DopplerAndResolutionBroadener_transferUnbroadened(DopplerAndResolutionBroadener_ptr, ipos,iso ) BIND(C,name="DopplerAndResolutionBroadener_transferUnbroadened") + use,intrinsic :: ISO_C_BINDING + implicit none + type(C_PTR), value :: DopplerAndResolutionBroadener_ptr; + integer(C_INT) :: ipos; + integer(C_INT) :: iso; +end subroutine subroutine f_DopplerAndResolutionBroadener_destroy(this) BIND(C,name="DopplerAndResolutionBroadener_destroy") use,intrinsic :: ISO_C_BINDING implicit none diff --git a/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_M.f90 b/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_M.f90 index 7d25af375ca16a8cd27e4eb5dd09025e9fab066b..9f64dc27ba717c23f87a2392de1754f4db64b2c6 100644 --- a/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_M.f90 +++ b/sammy/src/convolution/interface/fortran/DopplerAndResolutionBroadener_M.f90 @@ -2,7 +2,7 @@ !! This file has been dynamically generated by Class Interface Xml (CIX) !! DO NOT MODIFY THIS FILE -- CHANGES WILL BE OVERWRITTEN UPON REGENERATION !! If changes need to occur, modify the appropriate CIX xml file -!! Date Generated: Fri Feb 11 16:55:04 EST 2022 +!! Date Generated: Tue Apr 19 09:05:33 EDT 2022 !! If any issues are experiences with this generated file that cannot be fixed !! with adjustment of the CIX xml file, please contact Robert A. Lefebvre, raq@ornl.gov !!/ @@ -14,7 +14,7 @@ use GridData_M type DopplerAndResolutionBroadener type(C_PTR) :: instance_ptr=C_NULL_PTR contains - procedure, pass(this) :: initialize => DopplerAndResolutionBroadener_initialize + procedure, pass(this) :: initialize => DopplerAndResolutionBroadener_initialize procedure, pass(this) :: getNumPerEnergy => DopplerAndResolutionBroadener_getNumPerEnergy procedure, pass(this) :: setNumPerEnergy => DopplerAndResolutionBroadener_setNumPerEnergy procedure, pass(this) :: getIntegralStart => DopplerAndResolutionBroadener_getIntegralStart @@ -40,10 +40,12 @@ type DopplerAndResolutionBroadener procedure, pass(this) :: setWorkData => DopplerAndResolutionBroadener_setWorkData procedure, pass(this) :: setXoefWeights => DopplerAndResolutionBroadener_setXoefWeights procedure, pass(this) :: setupBroadnener => DopplerAndResolutionBroadener_setupBroadnener + procedure, pass(this) :: getNumParams => DopplerAndResolutionBroadener_getNumParams procedure, pass(this) :: updateBroadenedOffset => DopplerAndResolutionBroadener_updateBroadenedOffset procedure, pass(this) :: setLength => DopplerAndResolutionBroadener_setLength procedure, pass(this) :: getLength => DopplerAndResolutionBroadener_getLength procedure, pass(this) :: broaden => DopplerAndResolutionBroadener_broaden + procedure, pass(this) :: transferUnbroadened => DopplerAndResolutionBroadener_transferUnbroadened procedure, pass(this) :: destroy => DopplerAndResolutionBroadener_destroy end type DopplerAndResolutionBroadener contains @@ -219,12 +221,19 @@ subroutine DopplerAndResolutionBroadener_setXoefWeights(this, index) integer(C_INT)::index call f_DopplerAndResolutionBroadener_setXoefWeights(this%instance_ptr, index-1) end subroutine -subroutine DopplerAndResolutionBroadener_setupBroadnener(this, moreBroadening) +subroutine DopplerAndResolutionBroadener_setupBroadnener(this, moreBroadening, num) implicit none class(DopplerAndResolutionBroadener)::this logical(C_BOOL)::moreBroadening - call f_DopplerAndResolutionBroadener_setupBroadnener(this%instance_ptr, moreBroadening) + integer(C_INT)::num + call f_DopplerAndResolutionBroadener_setupBroadnener(this%instance_ptr, moreBroadening,num) end subroutine +function DopplerAndResolutionBroadener_getNumParams(this) result(result2Return) + implicit none + class(DopplerAndResolutionBroadener)::this + integer(C_INT):: result2Return + result2Return=f_DopplerAndResolutionBroadener_getNumParams(this%instance_ptr) +end function subroutine DopplerAndResolutionBroadener_updateBroadenedOffset(this, offSet) implicit none class(DopplerAndResolutionBroadener)::this @@ -248,6 +257,13 @@ subroutine DopplerAndResolutionBroadener_broaden(this) class(DopplerAndResolutionBroadener)::this call f_DopplerAndResolutionBroadener_broaden(this%instance_ptr) end subroutine +subroutine DopplerAndResolutionBroadener_transferUnbroadened(this, ipos, iso) + implicit none + class(DopplerAndResolutionBroadener)::this + integer(C_INT)::ipos + integer(C_INT)::iso + call f_DopplerAndResolutionBroadener_transferUnbroadened(this%instance_ptr, ipos-1,iso-1) +end subroutine subroutine DopplerAndResolutionBroadener_destroy(this) implicit none class(DopplerAndResolutionBroadener) :: this diff --git a/sammy/src/convolution/interface/fortran/DopplerBroadening_I.f90 b/sammy/src/convolution/interface/fortran/DopplerBroadening_I.f90 index e0a34c2262c575933383c81d8a3b166a7c2d8bda..1860946f0e3a4473e38e32dffeca2df623bae2f9 100644 --- a/sammy/src/convolution/interface/fortran/DopplerBroadening_I.f90 +++ b/sammy/src/convolution/interface/fortran/DopplerBroadening_I.f90 @@ -2,7 +2,7 @@ !! This file has been dynamically generated by Class Interface Xml (CIX) !! DO NOT MODIFY THIS FILE -- CHANGES WILL BE OVERWRITTEN UPON REGENERATION !! If changes need to occur, modify the appropriate CIX xml file -!! Date Generated: Wed Mar 23 10:56:59 EDT 2022 +!! Date Generated: Tue Apr 19 10:21:53 EDT 2022 !! If any issues are experiences with this generated file that cannot be fixed !! with adjustment of the CIX xml file, please contact Robert A. Lefebvre, raq@ornl.gov !!/ @@ -22,11 +22,27 @@ real(C_DOUBLE) function f_DopplerBroadening_getTemperature(DopplerBroadening_ptr implicit none type(C_PTR), value :: DopplerBroadening_ptr; end function -subroutine f_DopplerBroadening_setTemperature(DopplerBroadening_ptr, n ) BIND(C,name="DopplerBroadening_setTemperature") +subroutine f_DopplerBroadening_setTemperature(DopplerBroadening_ptr, t ) BIND(C,name="DopplerBroadening_setTemperature") + use,intrinsic :: ISO_C_BINDING + implicit none + type(C_PTR), value :: DopplerBroadening_ptr; + real(C_DOUBLE) :: t; +end subroutine +real(C_DOUBLE) function f_DopplerBroadening_getBrdLim(DopplerBroadening_ptr ) BIND(C,name="DopplerBroadening_getBrdLim") + use,intrinsic :: ISO_C_BINDING + implicit none + type(C_PTR), value :: DopplerBroadening_ptr; +end function +subroutine f_DopplerBroadening_setBrdLim(DopplerBroadening_ptr, b ) BIND(C,name="DopplerBroadening_setBrdLim") + use,intrinsic :: ISO_C_BINDING + implicit none + type(C_PTR), value :: DopplerBroadening_ptr; + real(C_DOUBLE) :: b; +end subroutine +subroutine f_DopplerBroadening_broaden(DopplerBroadening_ptr ) BIND(C,name="DopplerBroadening_broaden") use,intrinsic :: ISO_C_BINDING implicit none type(C_PTR), value :: DopplerBroadening_ptr; - real(C_DOUBLE) :: n; end subroutine subroutine f_DopplerBroadening_destroy(this) BIND(C,name="DopplerBroadening_destroy") use,intrinsic :: ISO_C_BINDING diff --git a/sammy/src/convolution/interface/fortran/DopplerBroadening_M.f90 b/sammy/src/convolution/interface/fortran/DopplerBroadening_M.f90 index 4d6a9e24b8153007e86861edc6c23455620291e9..669e667ae770b759c5927e4af9db4ddc72967473 100644 --- a/sammy/src/convolution/interface/fortran/DopplerBroadening_M.f90 +++ b/sammy/src/convolution/interface/fortran/DopplerBroadening_M.f90 @@ -2,7 +2,7 @@ !! This file has been dynamically generated by Class Interface Xml (CIX) !! DO NOT MODIFY THIS FILE -- CHANGES WILL BE OVERWRITTEN UPON REGENERATION !! If changes need to occur, modify the appropriate CIX xml file -!! Date Generated: Wed Mar 23 10:56:59 EDT 2022 +!! Date Generated: Tue Apr 19 10:21:53 EDT 2022 !! If any issues are experiences with this generated file that cannot be fixed !! with adjustment of the CIX xml file, please contact Robert A. Lefebvre, raq@ornl.gov !!/ @@ -17,6 +17,9 @@ type , extends(DopplerAndResolutionBroadener) :: DopplerBroadening procedure, pass(this) :: initialize => DopplerBroadening_initialize procedure, pass(this) :: getTemperature => DopplerBroadening_getTemperature procedure, pass(this) :: setTemperature => DopplerBroadening_setTemperature + procedure, pass(this) :: getBrdLim => DopplerBroadening_getBrdLim + procedure, pass(this) :: setBrdLim => DopplerBroadening_setBrdLim + procedure, pass(this) :: broaden => DopplerBroadening_broaden procedure, pass(this) :: destroy => DopplerBroadening_destroy end type DopplerBroadening contains @@ -34,11 +37,28 @@ function DopplerBroadening_getTemperature(this) result(result2Return) real(C_DOUBLE):: result2Return result2Return=f_DopplerBroadening_getTemperature(this%instance_ptr) end function -subroutine DopplerBroadening_setTemperature(this, n) +subroutine DopplerBroadening_setTemperature(this, t) implicit none class(DopplerBroadening)::this - real(C_DOUBLE)::n - call f_DopplerBroadening_setTemperature(this%instance_ptr, n) + real(C_DOUBLE)::t + call f_DopplerBroadening_setTemperature(this%instance_ptr, t) +end subroutine +function DopplerBroadening_getBrdLim(this) result(result2Return) + implicit none + class(DopplerBroadening)::this + real(C_DOUBLE):: result2Return + result2Return=f_DopplerBroadening_getBrdLim(this%instance_ptr) +end function +subroutine DopplerBroadening_setBrdLim(this, b) + implicit none + class(DopplerBroadening)::this + real(C_DOUBLE)::b + call f_DopplerBroadening_setBrdLim(this%instance_ptr, b) +end subroutine +subroutine DopplerBroadening_broaden(this) + implicit none + class(DopplerBroadening)::this + call f_DopplerBroadening_broaden(this%instance_ptr) end subroutine subroutine DopplerBroadening_destroy(this) implicit none diff --git a/sammy/src/cro/mcro5.f90 b/sammy/src/cro/mcro5.f90 index 5528f5f4715f0078bd02b2a135c8d2a2d8baee1e..be30a79d65b408bb8530e2dcbe41b5914655b2ed 100644 --- a/sammy/src/cro/mcro5.f90 +++ b/sammy/src/cro/mcro5.f90 @@ -243,11 +243,10 @@ end module sumAndConvertAfterBroadening_m ! switch handler data grid call Set_Kws - dopplerOption%broadener%numPar = numUsedPar dopplerOption%broadener%debugOutput = .false. if (Kdebug.ne.0) dopplerOption%broadener%debugOutput = .true. - call dopplerOption%broadener%setupBroadnener(moreBroadening) + call dopplerOption%broadener%setupBroadnener(moreBroadening, numUsedPar) if (Kcros.EQ.8) THEN call dopplerOption%broadener%addSelfData(Ksindi.le.0.and.Ksitmp.GT.0, Lllmax+1) END IF @@ -399,7 +398,7 @@ end module sumAndConvertAfterBroadening_m ! switch handler data grid call Set_Kws - call resolutionOption%resBroad1%setupBroadnener(moreBroadening) + call resolutionOption%resBroad1%setupBroadnener(moreBroadening, numUsedPar) if (Nudwhi.ne.0) then call samudr_0 @@ -421,7 +420,7 @@ end module sumAndConvertAfterBroadening_m ! switch handler data grid call Set_Kws - call resolutionOption%resBroad1%setupBroadnener(moreBroadening) + call resolutionOption%resBroad1%setupBroadnener(moreBroadening, numUsedPar) if (Kkkdex.ne.0) then call samdex_0 @@ -447,7 +446,7 @@ end module sumAndConvertAfterBroadening_m ! switch handler data grid call Set_Kws - call resolutionOption%resBroad2%setupBroadnener(moreBroadening) + call resolutionOption%resBroad2%setupBroadnener(moreBroadening, numUsedPar) if (Nudwhi.ne.0) then diff --git a/sammy/src/dbd/HighEnergyFreeGas_m.f90 b/sammy/src/dbd/HighEnergyFreeGas_m.f90 index f4fc9a233272204c116578210dc5d5efbe1e85ab..e4c7674e0b72d14701fcfd4ecb404073408326b8 100644 --- a/sammy/src/dbd/HighEnergyFreeGas_m.f90 +++ b/sammy/src/dbd/HighEnergyFreeGas_m.f90 @@ -37,15 +37,7 @@ end subroutine subroutine HighEnergyFreeGas_broaden(this) class(HighEnergyFreeGas) :: this - integer::ndatb - type(DerivativeHandler)::data - - ! reserve the data - ndatb = this%getNumEnergyBroadened() - call this%getData(data) - call data%nullify() - call data%reserve(ndatb*data%getNnnsig(), this%numPar+1) - + call FreeGasDopplerBroadening_broaden(this) call this%setXoefWeights(2) call this%nullifyWorkGrid(1) end subroutine diff --git a/sammy/src/dbd/mdbd1.f90 b/sammy/src/dbd/mdbd1.f90 index f0ddb197d543b70038b6e9b02fc704b708b2cb3f..4673199dc2086513f3730c91be74dc3a0b004673 100644 --- a/sammy/src/dbd/mdbd1.f90 +++ b/sammy/src/dbd/mdbd1.f90 @@ -43,7 +43,7 @@ contains ! call calc%getdata(calcData) call calcData%nullify() - call calcData%reserve(nauxMax*calcData%getNnnsig(),calc%numPar+1) + call calcData%reserve(nauxMax*calcData%getNnnsig(),calc%getNumParams()+1) Now = 0 ! @@ -106,7 +106,7 @@ contains IF ((Nolowb.NE.0 .AND. calc%Elowbr.GT.Em) .OR. Ipnts.le.5) THEN ! ********* IF (don't want low-E brdng, or) too few points, do not broaden Now = Now + 1 - do ipar = 0, calc%numPar + do ipar = 0, calc%getNumParams() DO N=1, calcData%getNnnsig() val = calcData%getDataNsOld(iposVel, N, Ipar, Isox) if ( Kvtemp.gt.0.and.Kvtemp.eq.ipar) cycle @@ -183,7 +183,7 @@ contains ! Del = 0.02d0 Derdop = 0d0 - IF (calc%numPar.gt.0 .AND. Kvtemp.GT.0) THEN + IF (calc%getNumParams().gt.0 .AND. Kvtemp.GT.0) THEN W = Wdop*(One+Del) CALL Fundop (calc, W, EM, Sigpls, Isox) W = Wdop*(One-Del) @@ -202,7 +202,7 @@ contains ! DO N=1,calcData%getNnnsig() ! update cross section (ipar=0) as well as derivatives - Do Ipar = 0, calc%numPar + Do Ipar = 0, calc%getNumParams() val = 0.0 DO I=1,Ipnts Wts = calc%getWorkData(1, 1, I) @@ -219,7 +219,7 @@ contains END DO ! IF (.not.calc%debugOutput.OR. Kvtemp.LE.0) RETURN - IF (calc%numPar.EQ.0) RETURN + IF (calc%getNumParams().EQ.0) RETURN ! ! *** here for debug info only Sigt = calcData%getDataNs(irow, 1, 0, Iso) diff --git a/sammy/src/dop/LealHwangBroadening_M.f90 b/sammy/src/dop/LealHwangBroadening_M.f90 index 4e6caf0f452d90a8bcf83ca76690b900a86ceb7b..d198ce727f0e39bc7471c0f508b4e8ed5be88598 100644 --- a/sammy/src/dop/LealHwangBroadening_M.f90 +++ b/sammy/src/dop/LealHwangBroadening_M.f90 @@ -43,15 +43,7 @@ end subroutine subroutine LealHwangBroadening_broaden(this) class(LealHwangBroadening) :: this - integer::ndatb - type(DerivativeHandler)::data - - ! reserve the data - ndatb = this%getNumEnergyBroadened() - call this%getData(data) - call data%nullify() - call data%reserve(ndatb*data%getNnnsig(), this%numPar+1) - + call FreeGasDopplerBroadening_broaden(this) call this%coefGrid%nullify() end subroutine diff --git a/sammy/src/dop/mdop1.f90 b/sammy/src/dop/mdop1.f90 index 1f24a4717af6a474ca847786afa42ccb295d3664..dfa925814446b17955dfcfdb33ae4edf739a70a9 100644 --- a/sammy/src/dop/mdop1.f90 +++ b/sammy/src/dop/mdop1.f90 @@ -62,9 +62,9 @@ module dop1_m DO I=1,Imax Mmm = Mmm + 1 ! - call derivs%reserveColumnsNs(Kkkkkk+1, derivs%getNnnsig(),calc%numPar+1) + call derivs%reserveColumnsNs(Kkkkkk+1, derivs%getNnnsig(),calc%getNumParams()+1) IF (calc%hasSelf) THEN - call calc%dataSelf%reserveColumnsNs(Kkkkkk+1, calc%dataSelf%getNnnsig(),calc%numPar+1) + call calc%dataSelf%reserveColumnsNs(Kkkkkk+1, calc%dataSelf%getNnnsig(),calc%getNumParams()+1) END IF ! Ii = I @@ -95,7 +95,7 @@ module dop1_m Imax = I 196 CONTINUE ! - IF (calc%numPar.gt.0 .AND. Kvtemp.GT.0) THEN + IF (calc%getNumParams().gt.0 .AND. Kvtemp.GT.0) THEN ! *** generate derivatives wrt temperature CALL Temp_Deriv ( calc, Imax) END IF @@ -144,7 +144,7 @@ module dop1_m if (ee.ge.0.0d0) exit DO Iso=1,derivs%getUsedIsotopes() ! set negative cross section to positive - DO Ipar=0,calc%numPar + DO Ipar=0,calc%getNumParams() do N=1, derivs%getNnnsig() val = derivs%getDataNsOld(Jj, N, Ipar, iso) if (val.ne.0.0d0) then @@ -182,7 +182,7 @@ module dop1_m call calc%getData(derivs) DO N=1,derivs%getNnnsig() ! update cross section (ipar=0) as well as derivatives - DO Ipar=0,calc%numPar + DO Ipar=0,calc%getNumParams() val = derivs%getDataNsOld(Mm, n, Ipar, Isox)*Cc val = val + derivs%getDataNs(irow, N, Ipar, Isox) if (val.eq.0.0d0) cycle @@ -194,7 +194,7 @@ module dop1_m ! update cross section (ipar=0) as well as derivatives DO N=1,calc%dataSelf%getNnnsig() ! update cross section (ipar=0) as well as derivatives - DO Ipar=0,calc%numPar + DO Ipar=0,calc%getNumParams() val = calc%dataSelf%getDataNsOld(Mm, n, Ipar, Isox)*Cc val = val +calc%dataSelf%getDataNs(irow, N, Ipar, Isox) if (val.eq.0.0d0) cycle @@ -274,7 +274,7 @@ module dop1_m call calc%getData(derivs) DO N=1,derivs%getNnnsig() - do ipar = 0, calc%numPar + do ipar = 0, calc%getNumParams() val = derivs%getDataNs(irow, N, Ipar, isox) if( val.eq.0.0d0) cycle val = val/Ebm @@ -284,7 +284,7 @@ module dop1_m ! IF (calc%hasSelf) THEN DO N=1,calc%dataSelf%getNnnsig() - do ipar = 0, calc%numPar + do ipar = 0, calc%getNumParams() val = calc%dataSelf%getDataNs(irow, N, Ipar, isox) if( val.eq.0.0d0) cycle val = val/Ebm diff --git a/sammy/src/fgm/FreeGasDopplerBroadening_M.f90 b/sammy/src/fgm/FreeGasDopplerBroadening_M.f90 index 7c17b2327766b2db0105932e5c9ef3c755d41568..fc193a8ebc83d0dc5e594edef61a09ae2c008cf4 100644 --- a/sammy/src/fgm/FreeGasDopplerBroadening_M.f90 +++ b/sammy/src/fgm/FreeGasDopplerBroadening_M.f90 @@ -9,7 +9,6 @@ implicit none type, extends(DopplerBroadening) :: FreeGasDopplerBroadening real(kind=8),allocatable,dimension(:)::velocity real(kind=8),allocatable,dimension(:,:)::rowData -integer::numPar logical::debugOutput type(DerivativeHandler)::dataSelf real(kind=8)::Sitemp @@ -24,7 +23,7 @@ procedure, pass(this) :: initialize => FreeGasDopplerBroadening_initialize procedure, pass(this) :: broaden => FreeGasDopplerBroadening_broaden procedure, pass(this) :: addSelfData => FreeGasDopplerBroadening_addSelfData procedure, pass(this) :: transferUnbroadenedAll => FreeGasDopplerBroadening_transferUnbroadenedAll -procedure, pass(this) :: transferUnbroadened => FreeGasDopplerBroadening_transferUnbroadened +procedure, pass(this) :: transferUnbroadenedBroad => FreeGasDopplerBroadening_transferUnbroadened procedure, pass(this) :: copyRowData => FreeGasDopplerBroadening_copyRowData procedure, pass(this) :: destroy => FreeGasDopplerBroadening_destroy end type FreeGasDopplerBroadening @@ -39,7 +38,6 @@ subroutine FreeGasDopplerBroadening_initialize(this, hand, list, work) call DopplerBroadening_initialize(this, hand, list, work) this%debugOutput = .false. this%Elowbr = 0.0d0 - this%numPar = 0 this%Sitemp = 0.0d0 end subroutine @@ -68,7 +66,7 @@ subroutine FreeGasDopplerBroadening_addSelfData(this, copyData, ipos) ! Note this is after the switch, ergo operate on old data DO Iso=1,this%dataSelf%getUsedIsotopes() do jdat = 1, this%getNumEnergyUnbroadened() - DO Ii=0,this%numPar + DO Ii=0,this%getNumParams() val = data%getDataNsOld(Jdat, ipos, Ii, Iso) if (val.ne.0.0d0) then call this%dataSelf%addDataNsOld(Jdat, 1, Ii, Iso, val) @@ -91,7 +89,7 @@ subroutine FreeGasDopplerBroadening_transferUnbroadened(this, data, ipos, iso, i real(kind=8)::val inew = this%getCurrentPos() - do ipar = 0, this%numPar + do ipar = 0, this%getNumParams() if (ipar.gt.0.and.iflag.eq.ipar) cycle do n = 1, data%getNnnsig() val = data%getDataNsOld(ipos, N, ipar, iso) @@ -107,9 +105,9 @@ subroutine FreeGasDopplerBroadening_transferUnbroadenedAll(this, ipos, iso, ifla type(DerivativeHandler)::data call this%getData(data) - call this%transferUnbroadened(data, ipos, iso, iflag) + call FreeGasDopplerBroadening_transferUnbroadened(this, data, ipos, iso, iflag) if (this%hasSelf) then - call this%transferUnbroadened(this%dataSelf, ipos, iso, iflagSelf) + call FreeGasDopplerBroadening_transferUnbroadened(this, this%dataSelf, ipos, iso, iflagSelf) end if end subroutine @@ -121,6 +119,9 @@ subroutine FreeGasDopplerBroadening_broaden(this) real(kind=8)::ener type(DerivativeHandler)::data + call DopplerBroadening_broaden(this) + + ndatb = this%getNumEnergyUnbroadened() call allocate_real_data(this%velocity, 2*ndatb) @@ -137,26 +138,26 @@ subroutine FreeGasDopplerBroadening_broaden(this) end if end do - ! reserve the data - ndatb = this%getNumEnergyBroadened() - call this%getData(data) - call data%nullify() - call data%reserve(ndatb*data%getNnnsig(), this%numPar+1) + ! reserve the data for self indication experiments + ndatb = this%getNumEnergyBroadened() if( this%hasSelf) then call this%dataSelf%nullify() - call this%dataSelf%reserve(ndatb*this%dataSelf%getNnnsig(), this%numPar+1) + call this%dataSelf%reserve(ndatb*this%dataSelf%getNnnsig(), this%getNumParams()+1) end if + call this%getData(data) + + if (allocated(this%rowData)) then current1 = size(this%rowData,dim=1) current2 = size(this%rowData,dim=2) if (current1.lt.data%getNnnsig().or. & - current2.lt.this%numPar+ 1) then + current2.lt.this%getNumParams()+ 1) then deallocate(this%rowData) end if end if - if( .not.allocated(this%rowData)) then - allocate(this%rowData(data%getNnnsig(), 0:this%numPar)) + if( .not.allocated(this%rowData)) then + allocate(this%rowData(data%getNnnsig(), 0:this%getNumParams())) end if end subroutine @@ -169,7 +170,7 @@ subroutine FreeGasDopplerBroadening_copyRowData(this, data, iso) real(kind=8)::val inew = this%getCurrentPos() - do ipar = 0, this%numPar + do ipar = 0, this%getNumParams() do n = 1, data%getNnnsig() val = this%rowData(N, ipar) if (val.eq.0.0d0) cycle diff --git a/sammy/src/fgm/mfgm1.f90 b/sammy/src/fgm/mfgm1.f90 index b9d18037cf8815f07b1d74e3e140628e65d206f1..8b56b51ba88bccb828c47caea3bd64bd91810e5d 100644 --- a/sammy/src/fgm/mfgm1.f90 +++ b/sammy/src/fgm/mfgm1.f90 @@ -111,7 +111,6 @@ contains 10001 FORMAT (' *** on data point number', I10) ! Em = broadener%getEnergyBroadened(Jdat) ! desired energy - iposVel = broadener%getEmInUnbroadened(Em, iposVel) ! find position (iposVel) in un-broadened grid and get the velocity ! convert Em to velocity @@ -126,6 +125,7 @@ contains IF (Em.LT.Emins) THEN ! These points are the very low-energy limit, ! of very little interest, ergo copy as is + iposVel = broadener%getEmInUnbroadened(Em, iposVel) ! find position (iposVel) in un-broadened grid and get the velocity IF (broadener%getEnergyUnbroadened(iposVel+1).GE.Emin) THEN Now = Now + 1 call broadener%transferUnbroadenedAll(iposVel, iiso, Kvtemp, IflmscKsitmp) @@ -139,6 +139,7 @@ contains ! These points are the very high-energy limit, ! of very little interest, ergo copy as is ee = 0.0 + iposVel = broadener%getEmInUnbroadened(Em, iposVel) ! find position (iposVel) in un-broadened grid and get the velocity if (iposVel.gt.1) ee = broadener%getEnergyUnbroadened(iposVel-1) IF (ee.LE.Emax) THEN Now = Now + 1 @@ -179,7 +180,8 @@ contains ELSE ! *** IF too few points, do not broaden Now = Now + 1 - call broadener%transferUnbroadened(calcData, iposVel, iiso, Kvtemp) + iposVel = broadener%getEmInUnbroadened(Em, iposVel) ! find position (iposVel) in un-broadened grid and get the velocity + call broadener%transferUnbroadenedBroad(calcData, iposVel, iiso, Kvtemp) END IF ! Ddox = Ddo @@ -209,8 +211,9 @@ contains Sitemp, Iffy, Iflmsc(Ksitmp), iiso, Ngtvx, & Kkkkkk+1) call broadener%copyRowData(broadener%dataSelf, iso) - ELSE - call broadener%transferUnbroadened(broadener%dataSelf, iposVel, iiso, IflmscKsitmp) + ELSE + iposVel = broadener%getEmInUnbroadened(Em, iposVel) ! find position (iposVel) in un-broadened grid and get the velocity + call broadener%transferUnbroadenedBroad(broadener%dataSelf, iposVel, iiso, IflmscKsitmp) END IF END IF diff --git a/sammy/src/fgm/mfgm4.f90 b/sammy/src/fgm/mfgm4.f90 index c1a3f3ff89c11c3348ddd7269b111f1ce62b02e7..dcc552064f1e24be61b0dea5151aec627dea0af8 100644 --- a/sammy/src/fgm/mfgm4.f90 +++ b/sammy/src/fgm/mfgm4.f90 @@ -39,7 +39,7 @@ module mfgm4_m Iso = Isox ! Del = 0.02D0 - IF (calc%numPar.gt.0.AND. Ktempx.GT.0 .AND. Em.NE.Zero) THEN + IF (calc%getNumParams().gt.0.AND. Ktempx.GT.0 .AND. Em.NE.Zero) THEN W = Ddo*(One+Del) CALL Funfgm (calc, W, Vv, Velcty, Wts, Sigpls, Isox, derivs) W = Ddo*(One-Del) @@ -64,7 +64,7 @@ module mfgm4_m ! - DO Ipar=0,calc%numPar + DO Ipar=0,calc%getNumParams() DO N=1,derivs%getNnnsig() val = 0.0d0 DO I=1,calc%Ipnts @@ -121,7 +121,7 @@ module mfgm4_m END IF ! Do N=1, derivs%getNnnsig() - do Ipar = 0, calc%numPar + do Ipar = 0, calc%getNumParams() val = calc%rowData(N, Ipar) if(val.eq.0.0d0) cycle if (EM.LT.ZERO) then @@ -137,7 +137,7 @@ module mfgm4_m ! ! ! - IF (Ktempx.LE.0 .OR. calc%numPar.le.0) THEN + IF (Ktempx.LE.0 .OR. calc%getNumParams().le.0) THEN GO TO 200 ELSE K = Ktempx diff --git a/sammy/src/orr/morr0.f90 b/sammy/src/orr/morr0.f90 index bdd2b742cd4d2ba1b07c767216f91d8a6bd94650..cc7fe6fc3f7fa03fa04a3c37d64c2683768573d1 100644 --- a/sammy/src/orr/morr0.f90 +++ b/sammy/src/orr/morr0.f90 @@ -7,7 +7,7 @@ module orr_m ! ! *** Purpose -- ORR resolution function calculation ! - use fixedi_m, only : Numorr + use fixedi_m, only : Numorr, numUsedPar use fixedr_m, only : Dist use EndfData_common_m, only : expData use DopplerAndResolutionBroadener_M @@ -42,7 +42,7 @@ module orr_m call work%initialize() call broadener%initialize(calcData, expData, work) moreBroadening = .false. - call broadener%setupBroadnener(moreBroadening) ! always finish on experinental grid + call broadener%setupBroadnener(moreBroadening, numUsedPar) ! always finish on experinental grid ! CALL Initix nauxMax = getNumAuxGridPoints() diff --git a/sammy/src/orr/morr1.f90 b/sammy/src/orr/morr1.f90 index 1f03aa6102690df15b9109198eba7fca141953d3..516a3680b86383e82428c176126cddb4134530b0 100644 --- a/sammy/src/orr/morr1.f90 +++ b/sammy/src/orr/morr1.f90 @@ -43,8 +43,6 @@ module orr1_m call allocate_real_data(Sigmns, Numorr) call allocate_real_data(Sigpls, Numorr) ! - call derivs%nullify() - call derivs%reserve(nexp*derivs%getNnnsig(), numUsedPar+1) ! ! *** initialize limits Kc = 2 diff --git a/sammy/src/ort/mort.f b/sammy/src/ort/mort.f index 0013745f561aadabac8add53397b8ef2c5763231..ae1f9b4cc25bb6d1b648e9242faaa9dad643799e 100644 --- a/sammy/src/ort/mort.f +++ b/sammy/src/ort/mort.f @@ -35,7 +35,7 @@ C C use over_common_m, only : Kount, Nsize use oops_common_m, only : Jmsize, Kmsize, Kount_Initial, Msize - use fixedi_m, only : Iu32, Kwatta, Nmdets, Numorr + use fixedi_m, only : Iu32, Kwatta, Nmdets, Numorr, numUsedPar use fixedr_m, only : Dist use oopsch_common_m, only : Segmen use namfil_common_m, only : Dblank, Dignor, Dignor, Fblank, @@ -142,7 +142,7 @@ C call work%initialize() call broadener%initialize(calcData, expData, work) moreBroadening = .false. - call broadener%setupBroadnener(moreBroadening) + call broadener%setupBroadnener(moreBroadening, numUsedPar) CALL Orresb (broadener, A_Iweigh, A_Iwts, Dist) CALL Showwe (A_It , A_Iwts, Dt, Ipnts)