Skip to content

Commit

Permalink
- _X_DATA-initialization update
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@10491 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
lochel committed Nov 13, 2011
1 parent be22ddc commit ab1b03b
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 25 deletions.
6 changes: 4 additions & 2 deletions SimulationRuntime/c/math-support/events.c
Expand Up @@ -1081,9 +1081,11 @@ SaveZeroCrossings()
function_onlyZeroCrossings(NULL, gout, &globalData->timeValue);
}

void SaveZeroCrossingsX(_X_DATA *data)
void SaveZeroCrossings_X_(_X_DATA *data)
{
THROW("SaveZeroCrossingsX is not implemented yet!");
/* THROW("SaveZeroCrossingsX is not implemented yet!"); */
INFO("SaveZeroCrossingsX is not implemented yet!");
SaveZeroCrossings();
}

void
Expand Down
2 changes: 1 addition & 1 deletion SimulationRuntime/c/math-support/events.h
Expand Up @@ -98,7 +98,7 @@ extern "C" {
void FindRoot(double*);
int checkForDiscreteChanges(_X_DATA *data);
void SaveZeroCrossings();
void SaveZeroCrossingsX(_X_DATA *data);
void SaveZeroCrossings_X_(_X_DATA *data);
void SaveZeroCrossingsAfterEvent();
void initializeZeroCrossings();
void correctDirectionZeroCrossings();
Expand Down
39 changes: 18 additions & 21 deletions SimulationRuntime/c/math-support/initialization.c
Expand Up @@ -878,9 +878,9 @@ int initialization(const char* pInitMethod, const char* pOptiMethod)
*/
void storeStartValues(_X_DATA *data)
{
long i;
SIMULATION_DATA *sData = (SIMULATION_DATA*)getRingData(data->simulationData, 0);
MODEL_DATA *mData = &(data->modelData);
long i;

for(i=0; i<mData->nVariablesReal; ++i)
sData->realVars[i] = mData->realData[i].attribute.start;
Expand Down Expand Up @@ -913,11 +913,11 @@ void storePreValues(_X_DATA *data)
memcpy(sData->stringVarsPre, sData->stringVars, sizeof(modelica_string)*mData->nVariablesString);
}

/*! \fn int initializeX(_X_DATA *data, int optiMethod)
/*! \fn int initialize_X_(_X_DATA *data, int optiMethod)
*
* author: lochel
*/
int initializeX(_X_DATA *data, int optiMethod)
int initialize_X_(_X_DATA *data, int optiMethod)
{
long nz = 0;
int ind = 0, indAct = 0, indz = 0;
Expand All @@ -928,7 +928,7 @@ int initializeX(_X_DATA *data, int optiMethod)
double *scale = 0;
fortran_integer i = 0;

THROW("needs to be updated");
INFO("initialize_X_() needs to be updated");

for(ind=0, nz=0; ind<globalData->nStates; ind++)
{
Expand Down Expand Up @@ -1015,11 +1015,11 @@ int initializeX(_X_DATA *data, int optiMethod)
return retVal;
}

/*! \fn int old_initializationX(_X_DATA *data, int optiMethod)
/*! \fn int old_initialization_X_(_X_DATA *data, int optiMethod)
*
* author: lochel
*/
int old_initializationX(_X_DATA *data, int optiMethod)
int old_initialization_X_(_X_DATA *data, int optiMethod)
{
int retVal = 0;

Expand Down Expand Up @@ -1077,11 +1077,11 @@ int old_initializationX(_X_DATA *data, int optiMethod)
return retVal;
}

/*! \fn int state_initializationX(_X_DATA *data, int optiMethod)
/*! \fn int state_initialization_X_(_X_DATA *data, int optiMethod)
*
* author: lochel
*/
int state_initializationX(_X_DATA *data, int optiMethod)
int state_initialization_X_(_X_DATA *data, int optiMethod)
{
int retVal = 0;

Expand All @@ -1094,8 +1094,7 @@ int state_initializationX(_X_DATA *data, int optiMethod)
overwriteOldSimulationData(data);

/* Initialize all relations that are ZeroCrossings */
update_DAEsystem();
THROW("update_DAEsystem() needs to be updated");
update_DAEsystem(data);

/* And restore start values and helpvars */
/* restoreHelpVars(); /* ??? */
Expand All @@ -1104,17 +1103,15 @@ int state_initializationX(_X_DATA *data, int optiMethod)
/* start with the real initialization */
globalData->init = 1; /* to evaluate when-equations with initial()-conditions */

retVal = initializeX(data, IOM_NELDER_MEAD_EX);
retVal = initialize_X_(data, IOM_NELDER_MEAD_EX);

storePreValues(data); /* save pre-values */
overwriteOldSimulationData(data); /* if there are non-linear equations */

update_DAEsystem(); /* evaluate discrete variables */
THROW("update_DAEsystem() needs to be updated");
update_DAEsystem(data); /* evaluate discrete variables */

/* valid system for the first time! */

SaveZeroCrossingsX(data);
SaveZeroCrossings_X_(data);
storePreValues(data); /* save pre-values */
overwriteOldSimulationData(data); /* if there are non-linear equations */

Expand All @@ -1124,20 +1121,20 @@ int state_initializationX(_X_DATA *data, int optiMethod)
if(retVal)
{
DEBUG_INFO(LV_INIT, "state_initialization | init. failed! use old initialization method");
return old_initializationX(data, optiMethod);
return old_initialization_X_(data, optiMethod);
}

return retVal;
}

/* done */
/*! \fn int initializationX(_X_DATA *data, const char* pInitMethod, const char* pOptiMethod)
/*! \fn int initialization_X_(_X_DATA *data, const char* pInitMethod, const char* pOptiMethod)
*
* author: lochel
*/
int initializationX(_X_DATA *data, const char* pInitMethod, const char* pOptiMethod)
int initialization_X_(_X_DATA *data, const char* pInitMethod, const char* pOptiMethod)
{
int initMethod = IIM_STATE; /* default method */
int initMethod = IIM_STATE; /* default method */
int optiMethod = IOM_SIMPLEX; /* default method */

/* if there are user-specified options, use them! */
Expand Down Expand Up @@ -1170,12 +1167,12 @@ int initializationX(_X_DATA *data, const char* pInitMethod, const char* pOptiMet
if(initMethod == IIM_OLD)
{
/* the 'old' initialization-method */
return old_initializationX(data, optiMethod);
return old_initialization_X_(data, optiMethod);
}
else if(initMethod == IIM_STATE)
{
/* the 'new' initialization-method */
return state_initializationX(data, optiMethod);
return state_initialization_X_(data, optiMethod);
}

/* unrecognized initialization-method */
Expand Down
2 changes: 1 addition & 1 deletion SimulationRuntime/c/math-support/initialization.h
Expand Up @@ -44,7 +44,7 @@ extern "C"
#endif

int initialization(const char* pInitMethod, const char* pOptiMethod);
int initializationX(_X_DATA *data, const char* pInitMethod, const char* pOptiMethod);
int initialization_X_(_X_DATA *data, const char* pInitMethod, const char* pOptiMethod);

#ifdef __cplusplus
}
Expand Down

0 comments on commit ab1b03b

Please sign in to comment.