Skip to content

Commit

Permalink
fix more compiler warnings and add initializer to structs
Browse files Browse the repository at this point in the history
  • Loading branch information
Arthur Glowacki committed Nov 30, 2023
1 parent 78fc406 commit ec28689
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 19 deletions.
8 changes: 4 additions & 4 deletions src/fitting/optimizers/lmfit_optimizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ void residuals_lmfit( const T_real *par, int m_dat, const void *data, T_real *fv
{
(*ud->status_callback)(ud->cur_itr, ud->total_itr);
}
catch (int e)
catch (...)
{
logI << "Cancel fitting" << std::endl;
*userbreak = 1;
Expand Down Expand Up @@ -331,7 +331,7 @@ OPTIMIZER_OUTCOME LMFit_Optimizer<T_real>::minimize(Fit_Parameters<T_real> *fit_
//control.verbosity = 3;

/* perform the fit */
lmmin( fitp_arr.size(), &fitp_arr[0], energy_range.count(), (const void*) &ud, residuals_lmfit, &_options, &status );
lmmin( (int)fitp_arr.size(), &fitp_arr[0], (int)energy_range.count(), (const void*) &ud, residuals_lmfit, &_options, &status );
logI<< "Outcome: "<<lm_infmsg[status.outcome]<<"\nNum iter: "<<status.nfev<<"\n Norm of the residue vector: "<<status.fnorm<<"\n";
this->_last_outcome = status.outcome;
fit_params->from_array(fitp_arr);
Expand Down Expand Up @@ -391,7 +391,7 @@ OPTIMIZER_OUTCOME LMFit_Optimizer<T_real>::minimize_func(Fit_Parameters<T_real>*

lm_status_struct<T_real> status;

lmmin( fitp_arr.size(), &fitp_arr[0], energy_range.count(), (const void*) &ud, general_residuals_lmfit, &_options, &status );
lmmin((int)fitp_arr.size(), &fitp_arr[0], (int)energy_range.count(), (const void*) &ud, general_residuals_lmfit, &_options, &status );
this->_last_outcome = status.outcome;
fit_params->from_array(fitp_arr);

Expand Down Expand Up @@ -441,7 +441,7 @@ OPTIMIZER_OUTCOME LMFit_Optimizer<T_real>::minimize_quantification(Fit_Parameter
std::vector<T_real> perror(fitp_arr.size());

lm_status_struct<T_real> status;
lmmin( fitp_arr.size(), &fitp_arr[0], ud.quant_map.size(), (const void*) &ud, quantification_residuals_lmfit, &_options, &status );
lmmin((int)fitp_arr.size(), &fitp_arr[0], (int)ud.quant_map.size(), (const void*) &ud, quantification_residuals_lmfit, &_options, &status );
logI << "\nOutcome: " << lm_infmsg[status.outcome] << "\nNum iter: " << status.nfev << "\nNorm of the residue vector: " << status.fnorm << "\n";
this->_last_outcome = status.outcome;
fit_params->from_array(fitp_arr);
Expand Down
2 changes: 1 addition & 1 deletion src/fitting/optimizers/lmfit_optimizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class DLL_EXPORT LMFit_Optimizer: public Optimizer<T_real>
public:
LMFit_Optimizer();

~LMFit_Optimizer() {}
virtual ~LMFit_Optimizer() {}

virtual OPTIMIZER_OUTCOME minimize(Fit_Parameters<T_real>*fit_params,
const Spectra<T_real>* const spectra,
Expand Down
14 changes: 7 additions & 7 deletions src/fitting/optimizers/mpfit_optimizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ OPTIMIZER_OUTCOME MPFit_Optimizer<T_real>::minimize(Fit_Parameters<T_real>*fit_p
std::vector<struct mp_par<T_real> > par;
par.resize(fitp_arr.size());

_options.maxfev = _options.maxiter * (fitp_arr.size() + 1);
_options.maxfev = _options.maxiter * ((int)fitp_arr.size() + 1);

_fill_limits(fit_params, par);

Expand All @@ -479,14 +479,14 @@ OPTIMIZER_OUTCOME MPFit_Optimizer<T_real>::minimize(Fit_Parameters<T_real>*fit_p
result.resid = &resid[0];
result.covar = &covar[0];

this->_last_outcome = mpfit(residuals_mpfit<T_real>, energy_range.count(), fitp_arr.size(), &fitp_arr[0], &par[0], &_options, (void *) &ud, &result);
this->_last_outcome = mpfit(residuals_mpfit<T_real>, (int)energy_range.count(), (int)fitp_arr.size(), &fitp_arr[0], &par[0], &_options, (void *) &ud, &result);

logI<< detailed_outcome(this->_last_outcome);

fit_params->from_array(fitp_arr);

T_real sum_resid = 0.0;
for (int i = 0; i < energy_range.count(); i++)
for (size_t i = 0; i < energy_range.count(); i++)
{
sum_resid += resid[i];
}
Expand Down Expand Up @@ -622,14 +622,14 @@ OPTIMIZER_OUTCOME MPFit_Optimizer<T_real>::minimize_func(Fit_Parameters<T_real>
result.xerror = &perror[0];
result.resid = &resid[0];

info = mpfit(gen_residuals_mpfit<T_real>, energy_range.count(), fitp_arr.size(), &fitp_arr[0], &par[0], &_options, (void*)&ud, &result);
info = mpfit(gen_residuals_mpfit<T_real>, (int)energy_range.count(), (int)fitp_arr.size(), &fitp_arr[0], &par[0], &_options, (void*)&ud, &result);

this->_last_outcome = info;

fit_params->from_array(fitp_arr);

T_real sum_resid = 0.0;
for (int i = 0; i < energy_range.count(); i++)
for (size_t i = 0; i < energy_range.count(); i++)
{
sum_resid += resid[i];
}
Expand Down Expand Up @@ -766,15 +766,15 @@ OPTIMIZER_OUTCOME MPFit_Optimizer<T_real>::minimize_quantification(Fit_Parameter
par.resize(fitp_arr.size());
_fill_limits(fit_params, par);

this->_last_outcome = mpfit(quantification_residuals_mpfit<T_real>, ud.quant_map.size(), fitp_arr.size(), &fitp_arr[0], &par[0], &_options, (void *) &ud, &result);
this->_last_outcome = mpfit(quantification_residuals_mpfit<T_real>, (int)ud.quant_map.size(), (int)fitp_arr.size(), &fitp_arr[0], &par[0], &_options, (void *) &ud, &result);
logI << "\nOutcome: " << optimizer_outcome_to_str(this->_outcome_map[this->_last_outcome]) << "\nNum iter: " << result.niter << "\n Norm of the residue vector: " << *result.resid << "\n";

logI << detailed_outcome(this->_last_outcome);

fit_params->from_array(fitp_arr);

T_real sum_resid = 0.0;
for (int i = 0; i < quant_map->size(); i++)
for (size_t i = 0; i < quant_map->size(); i++)
{
sum_resid += resid[i];
}
Expand Down
2 changes: 1 addition & 1 deletion src/fitting/optimizers/mpfit_optimizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class DLL_EXPORT MPFit_Optimizer: public Optimizer<T_real>
public:
MPFit_Optimizer();

~MPFit_Optimizer() {}
virtual ~MPFit_Optimizer() {}

virtual OPTIMIZER_OUTCOME minimize(Fit_Parameters<T_real>*fit_params,
const Spectra<T_real>* const spectra,
Expand Down
29 changes: 27 additions & 2 deletions src/fitting/optimizers/optimizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,17 @@ DLL_EXPORT std::string optimizer_outcome_to_str(OPTIMIZER_OUTCOME outcome);
template<typename T_real>
struct User_Data
{
User_Data()
{
fit_model = nullptr;
fit_parameters = nullptr;
elements = nullptr;
orig_spectra = nullptr;
status_callback = nullptr;
cur_itr = 0;
total_itr = 0;
}

Base_Model<T_real>* fit_model;
Spectra<T_real> spectra;
ArrayTr<T_real> weights;
Expand All @@ -110,6 +121,11 @@ struct User_Data
template<typename T_real>
struct Gen_User_Data
{
Gen_User_Data()
{
fit_parameters = nullptr;
}

Spectra<T_real> spectra;
ArrayTr<T_real> weights;
Fit_Parameters<T_real>*fit_parameters;
Expand All @@ -122,6 +138,12 @@ struct Gen_User_Data
template<typename T_real>
struct Quant_User_Data
{
Quant_User_Data()
{
quantification_model = nullptr;
fit_parameters = nullptr;
}

quantification::models::Quantification_Model<T_real>* quantification_model;
Fit_Parameters<T_real>* fit_parameters;
std::unordered_map<std::string, Element_Quant<T_real>> quant_map;
Expand Down Expand Up @@ -274,9 +296,12 @@ template<typename T_real>
class DLL_EXPORT Optimizer
{
public:
Optimizer(){}
Optimizer()
{
_last_outcome = -1;
}

~Optimizer(){}
virtual ~Optimizer(){}

virtual OPTIMIZER_OUTCOME minimize(Fit_Parameters<T_real> *fit_params,
const Spectra<T_real>* const spectra,
Expand Down
4 changes: 2 additions & 2 deletions src/io/file/hl_file_io.h
Original file line number Diff line number Diff line change
Expand Up @@ -359,8 +359,8 @@ DLL_EXPORT bool load_and_integrate_spectra_volume(std::string dataset_directory,
std::string tmp_dataset_file = dataset_file;
bool ret_val = true;
std::vector<size_t> detector_num_arr{ detector_num };
size_t out_rows;
size_t out_cols;
size_t out_rows = 0;
size_t out_cols = 0;
data_struct::IO_Callback_Func_Def<T_real> cb_function = std::bind(&cb_load_spectra_data_helper<T_real>, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6, std::placeholders::_7);

if (dataset_directory.back() != DIR_END_CHAR)
Expand Down
4 changes: 2 additions & 2 deletions src/support/lmfit_6.1/lmmin.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -400,11 +400,11 @@ void lm_lmpar(const int n, _T* r, const int ldr, const int* Pivot,
_T LM_DWARF;
if (std::is_same<_T, float>::value)
{
LM_DWARF = FP_LM_DWARF;
LM_DWARF = (_T)FP_LM_DWARF;
}
else if (std::is_same<_T, double>::value)
{
LM_DWARF = DP_LM_DWARF;
LM_DWARF = (_T)DP_LM_DWARF;
}

/*** Compute and store in x the Gauss-Newton direction. If the Jacobian
Expand Down

0 comments on commit ec28689

Please sign in to comment.