本文整理匯總了C++中Box2D::to_plbArray方法的典型用法代碼示例。如果您正苦於以下問題:C++ Box2D::to_plbArray方法的具體用法?C++ Box2D::to_plbArray怎麽用?C++ Box2D::to_plbArray使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Box2D
的用法示例。
在下文中一共展示了Box2D::to_plbArray方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: writeXmlSpec
void writeXmlSpec( MultiBlock2D& multiBlock, FileName fName,
std::vector<plint> const& offset, bool dynamicContent )
{
fName.defaultExt("plb");
MultiBlockManagement2D const& management = multiBlock.getMultiBlockManagement();
std::map<plint,Box2D> const& bulks = management.getSparseBlockStructure().getBulks();
PLB_ASSERT( offset.empty() || bulks.size()==offset.size() );
std::vector<std::string> typeInfo = multiBlock.getTypeInfo();
std::string blockName = multiBlock.getBlockName();
PLB_ASSERT( !typeInfo.empty() );
XMLwriter xml;
XMLwriter& xmlMultiBlock = xml["Block2D"];
xmlMultiBlock["General"]["Family"].setString(blockName);
xmlMultiBlock["General"]["Datatype"].setString(typeInfo[0]);
if (typeInfo.size()>1) {
xmlMultiBlock["General"]["Descriptor"].setString(typeInfo[1]);
}
xmlMultiBlock["General"]["cellDim"].set(multiBlock.getCellDim());
xmlMultiBlock["General"]["dynamicContent"].set(dynamicContent);
xmlMultiBlock["General"]["globalId"].set(multiBlock.getId());
Array<plint,4> boundingBox = multiBlock.getBoundingBox().to_plbArray();
xmlMultiBlock["Structure"]["BoundingBox"].set<plint,4>(boundingBox);
xmlMultiBlock["Structure"]["EnvelopeWidth"].set(management.getEnvelopeWidth());
xmlMultiBlock["Structure"]["GridLevel"].set(management.getRefinementLevel());
xmlMultiBlock["Structure"]["NumComponents"].set(bulks.size());
xmlMultiBlock["Data"]["File"].setString(FileName(fName).setExt("dat"));
XMLwriter& xmlBulks = xmlMultiBlock["Data"]["Component"];
std::map<plint,Box2D>::const_iterator it = bulks.begin();
plint iComp=0;
for(; it != bulks.end(); ++it) {
Box2D bulk = it->second;
xmlBulks[iComp].set<plint,4>(bulk.to_plbArray());
++iComp;
}
if (!offset.empty()) {
xmlMultiBlock["Data"]["Offsets"].set(offset);
}
// The following prints a unique list of dynamics-id pairs for all dynamics
// classes used in the multi-block. This is necessary, because dynamics
// classes may be ordered differently from one compilation to the other,
// or from one compiler to the other.
//
// Given that the dynamics classes are unique, they can be indexed by their
// name (which is not the case of the data processors below).
std::map<std::string,int> dynamicsDict;
multiBlock.getDynamicsDict(multiBlock.getBoundingBox(), dynamicsDict);
if (!dynamicsDict.empty()) {
XMLwriter& xmlDynamicsDict = xmlMultiBlock["Data"]["DynamicsDict"];
for( std::map<std::string,int>::const_iterator it = dynamicsDict.begin();
it != dynamicsDict.end(); ++it )
{
xmlDynamicsDict[it->first].set(it->second);
}
}
// This is the only section in which actual content is stored outside the
// binary blob: the serialization of the data processors. This
// serialization was chosen to be in ASCII, because it takes little space
// and can be somewhat complicated.
//
// It is important that the processors are indexed by a continuous index
// "iProcessor". They cannot be indexed by the class name ("Name") or static
// id ("id") because several instances of the same class may occur.
XMLwriter& xmlProcessors = xmlMultiBlock["Data"]["Processor"];
std::vector<MultiBlock2D::ProcessorStorage2D> const& processors = multiBlock.getStoredProcessors();
for (plint iProcessor=0; iProcessor<(plint)processors.size(); ++iProcessor) {
int id = processors[iProcessor].getGenerator().getStaticId();
if (id>=0) {
Box2D domain;
std::string data;
processors[iProcessor].getGenerator().serialize(domain, data);
xmlProcessors[iProcessor]["Name"].set(meta::processorRegistration2D().getName(id));
xmlProcessors[iProcessor]["Domain"].set<plint,4>(domain.to_plbArray());
xmlProcessors[iProcessor]["Data"].setString(data);
xmlProcessors[iProcessor]["Level"].set(processors[iProcessor].getLevel());
xmlProcessors[iProcessor]["Blocks"].set(processors[iProcessor].getMultiBlockIds());
}
}
xml.print(FileName(fName).defaultPath(global::directories().getOutputDir()));
}