Skip to content

Commit

Permalink
fixed assert handling in dyn. optimization, thanks Willi
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@22737 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Vitalij Ruge committed Oct 13, 2014
1 parent 2402f4c commit 8caa260
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
23 changes: 20 additions & 3 deletions SimulationRuntime/c/optimization/DataManagement/MoveData.c
Expand Up @@ -31,6 +31,9 @@
/*! MoveData.c
*/

#include "../../openmodelica.h"
#include "../../openmodelica_types.h"
#include "../../meta/meta_modelica.h"
#include "../OptimizerData.h"
#include "../OptimizerLocalFunction.h"
#include "../../simulation/results/simulation_result.h"
Expand Down Expand Up @@ -572,6 +575,7 @@ void optData2ModelData(OptData *optData, double *vopt, const int index){
DATA * data = optData->data;
const int * indexBC = optData->s.indexABCD + 3;
OptDataDim * dim = &optData->dim;
threadData_t *threadData = data->threadData;

for(l = 0; l < 3; ++l)
realVars[l] = data->localData[l]->realVars;
Expand Down Expand Up @@ -606,14 +610,19 @@ void optData2ModelData(OptData *optData, double *vopt, const int index){
for(; k <nv; ++k){
data->simulationInfo.inputVars[k-nx] = (modelica_real) vopt[shift + k]*vnom[k];
}

/* try */
#if !defined(OMC_EMCC)
MMC_TRY_INTERNAL(simulationJumpBuffer)
#endif
data->callback->input_function(data);
/*data->callback->functionDAE(data);*/
updateDiscreteSystem(data);

if(index){
diffSynColoredOptimizerSystem(optData, optData->J[i][j], i,j,2);
}
#if !defined(OMC_EMCC)
MMC_CATCH_INTERNAL(simulationJumpBuffer)
#endif

}
}
Expand All @@ -634,14 +643,22 @@ void optData2ModelData(OptData *optData, double *vopt, const int index){
for(; k <nv; ++k){
data->simulationInfo.inputVars[k-nx] = (modelica_real) vopt[shift + k]*vnom[k];
}

/* try */
#if !defined(OMC_EMCC)
MMC_TRY_INTERNAL(simulationJumpBuffer)
#endif
data->callback->input_function(data);
/*data->callback->functionDAE(data);*/
updateDiscreteSystem(data);

if(index){
diffSynColoredOptimizerSystem(optData, optData->J[i][j], i,j, (j+1 == np)? 3 : 2);
}
#if !defined(OMC_EMCC)
MMC_CATCH_INTERNAL(simulationJumpBuffer)
#endif


}

/*terminal constraint(s)*/
Expand Down
1 change: 1 addition & 0 deletions SimulationRuntime/c/util/omc_error.c
Expand Up @@ -389,6 +389,7 @@ static inline jmp_buf* getBestJumpBuffer(threadData_t *threadData)
case ERROR_SIMULATION:
case ERROR_NONLINEARSOLVER:
case ERROR_INTEGRATOR:
case ERROR_OPTIMIZE:
#ifndef OMC_EMCC
return threadData->simulationJumpBuffer;
#endif
Expand Down

0 comments on commit 8caa260

Please sign in to comment.