OpenM++ runtime library (libopenm)
openm::ModelBase Class Reference

model sub-value run base class More...

Inheritance diagram for openm::ModelBase:
Collaboration diagram for openm::ModelBase:

Public Member Functions

int subValueCount (void) const noexcept override
 number of sub-values
 
int subValueId (void) const noexcept override
 sub-value index of current modeling process
 
int parameterSubValueIndex (const char *i_name) const override
 return index of parameter sub-value in the array of sub-values, used to find thread local parameter values More...
 
const RunOptionsrunOptions (void) const override
 return model run options
 
void writeOutputTable (const char *i_name, size_t i_size, forward_list< unique_ptr< double > > &io_accValues) override
 write result into output table and release accumulators memory. More...
 
void updateProgress (int i_count, double i_value=0.0) override
 set modeling progress count and value
 
- Public Member Functions inherited from openm::IModel
virtual ~IModel (void) noexcept=0
 model sub-value run public interface
 

Static Public Member Functions

static ModelBasecreate (int i_runId, int i_subCount, int i_subId, RunController *i_runCtrl, const MetaHolder *i_metaStore)
 model factory: create new model sub-value run. More...
 

Detailed Description

model sub-value run base class

Member Function Documentation

◆ create()

ModelBase * ModelBase::create ( int  i_runId,
int  i_subCount,
int  i_subId,
RunController i_runCtrl,
const MetaHolder i_metaStore 
)
static

model factory: create new model sub-value run.

create new model sub-value run

◆ parameterSubValueIndex()

int ModelBase::parameterSubValueIndex ( const char *  i_name) const
overridevirtual

return index of parameter sub-value in the array of sub-values, used to find thread local parameter values

return index of parameter sub-value in the storage array, used to find thread local parameter values

Implements openm::IModel.

◆ writeOutputTable()

void ModelBase::writeOutputTable ( const char *  i_name,
size_t  i_size,
forward_list< unique_ptr< double > > &  io_accValues 
)
overridevirtual

write result into output table and release accumulators memory.

Parameters
[in]i_nameoutput table name
[in]i_sizenumber of cells for each accumulator
[in,out]io_accValuesaccumulator values

usage example:

// allocate model output table accumulators: [N_accumulators][N_cells]
double * acc[N_accumulators];
forward_list<unique_ptr<double> > acc_storage;
auto it = acc_storage.before_begin();
for (int k = 0; k < N_accumulators; ++k) {
it = acc_storage.insert_after(it, unique_ptr<double>(new double[N_cells]));
acc[k] = it->get();
}
...
// run the model and calculate accumulator values
for (int k = 0; k < N_accumulators; ++k) {
std::fill(acc[k], &acc[k][N_cells], 0.0);
}
...
// write output table "salaryBySex" into database
i_model->writeOutputTable("salaryBySex", N_cells, acc_storage);
// at this point any kind of table->acc[k][j] will cause memory access violation

Implements openm::IModel.


The documentation for this class was generated from the following files: