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 thread
int parameterSubValueIndex (const char *i_name) const override
 return index of parameter sub-value in the storage array for current modeling thread
const RunOptionsrunOptions (void) const override
 return model run options
int tableIdByName (const char *i_name) const override
 return id of output table by name
bool isSuppressed (const char *i_name) const override
 check by name if output table suppressed.
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
virtual void writeOutputTable (const char *i_name, size_t i_size, std::forward_list< std::unique_ptr< double[]> > &io_accValues)=0
 write output result table: sub values

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 

model factory: create new model sub-value run.

create new model sub-value run

◆ writeOutputTable()

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

write result into output table and release accumulators memory.

[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

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