【发布时间】:2016-09-26 18:59:14
【问题描述】:
我正在使用 c++ API 来访问 *.odb 文件。读取文件没有问题,除非文件比我的 RAM 大。
文档中有两个例程可以从 odb 文件中读取数据(在我的例子中是 fieldOutputs)。
1。批量数据
odb_FieldOutput& disp = lastFrame.fieldOutputs()["U"];
const odb_SequenceFieldBulkData& seqDispBulkData = disp.bulkDataBlocks();
int numDispBlocks = seqDispBulkData.size();
for (int iblock=0; iblock<numDispBlocks; iblock++) {
const odb_FieldBulkData& bulkData = seqDispBulkData[iblock];
int numNodes = bulkData.length();
int numComp = bulkData.width();
float* data = bulkData.data();
int* nodeLabels = bulkData.nodeLabels();
for (int node=0,pos=0; node<numNodes; node++) {
int nodeLabel = nodeLabels[node];
cout << "Node = " << nodeLabel;
cout << " U = ";
for (int comp=0;comp<numComp;comp++) {
cout << data[pos++] << " ";
}
cout << endl;
}
}
2 值
const odb_SequenceFieldValue& displacements = lastFrame.fieldOutputs()["U"].values();
int numValues = displacements.size();
int numComp = 0;
for (int i=0; i<numValues; i++) {
const odb_FieldValue val = displacements[i];
cout << "Node = " << val.nodeLabel();
const float* const U = val.data(numComp);
cout << ", U = ";
for (int comp=0;comp<numComp;comp++)
cout << U[comp] << " ";
}
cout << endl;
}
我想做的是从文件中读取数据并将它们保存到 mat 文件中。
数据的形状:
odb-file 是一个可以表示为树形结构的数据库。
它包含步骤。每个步骤都包含帧,每个帧都包含 fieldOutputs。 这些 fieldOutputs 可以是矩阵或向量。维度取决于节点数和每个 fieldOutput 的参数数。
我的问题:
上述例程之一是否能够连续加载大于 RAM 的文件?如果是,我很乐意得到一些提示。
附加信息:
文档: http://abaqus.software.polimi.it/v6.12/books/ker/default.htm 和 http://xn--90ajn.xn--p1ai:2080/v6.12/pdf_books/SCRIPT_USER.pdf 我正在使用 Abaqus 6.12 和 Visual Studio 2010 编译器。
【问题讨论】: