void bi::ParticleMCMCNetCDFBuffer::create(const long P, const long T) { int id, i; VarType type; Var* var; Dim* dim; ncFile->add_att(PACKAGE_TARNAME "_schema", "ParticleMCMC"); ncFile->add_att(PACKAGE_TARNAME "_schema_version", 1); ncFile->add_att(PACKAGE_TARNAME "_version", PACKAGE_VERSION); /* dimensions */ nrDim = createDim("nr", T); for (i = 0; i < m.getNumDims(); ++i) { dim = m.getDim(i); nDims.push_back(createDim(dim->getName().c_str(), dim->getSize())); } npDim = createDim("np", P); /* time variable */ tVar = ncFile->add_var("time", netcdf_real, nrDim); BI_ERROR_MSG(tVar != NULL && tVar->is_valid(), "Could not create time variable"); /* other variables */ for (i = 0; i < NUM_VAR_TYPES; ++i) { type = static_cast<VarType>(i); vars[type].resize(m.getNumVars(type), NULL); if (type == D_VAR || type == R_VAR || type == P_VAR) { for (id = 0; id < (int)vars[type].size(); ++id) { var = m.getVar(type, id); if (var->hasOutput()) { if (type == P_VAR) { vars[type][id] = createVar(var, false, true); } else { vars[type][id] = createVar(var, !var->getOutputOnce(), true); } } } } } llVar = ncFile->add_var("loglikelihood", netcdf_real, npDim); BI_ERROR_MSG(llVar != NULL && llVar->is_valid(), "Could not create loglikelihood variable"); lpVar = ncFile->add_var("logprior", netcdf_real, npDim); BI_ERROR_MSG(lpVar != NULL && lpVar->is_valid(), "Could not create logprior variable"); }