yade架构分析颗粒密实堆积流固耦合方案_第1页
yade架构分析颗粒密实堆积流固耦合方案_第2页
yade架构分析颗粒密实堆积流固耦合方案_第3页
yade架构分析颗粒密实堆积流固耦合方案_第4页
yade架构分析颗粒密实堆积流固耦合方案_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,YADE架构分析颗粒密实堆积流固耦合方案,sinap ,OpenFOAM plus DEM,1. Yade结构分析 2. 球床堆中的颗粒问题,sinap ,OpenFOAM plus DEM,structs.xml 配置文件,sinap ,OpenFOAM plus DEM,工业级强度架构_struts2,sinap ,OpenFOAM plus DEM,配置文件引出的问题,sinap ,OpenFOAM plus DEM,from yade.utils import * O.bodies.append(utils.sphere(Vector3(0.0,0.0,0.0),1.0)O.engines=ForceResetter(),InsertionSortCollider(Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),InteractionLoop(Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ip2_FrictMat_FrictMat_MindlinPhys(label=ContactModel),Law2_ScGeom_MindlinPhys_Mindlin(),NewtonIntegrator(damping=local_damping,gravity=(0,0,-9.81),O.dt=0.5*utils.PWaveTimeStep()O.run(1000000)用户需求的最自然处理最小范围内最大自由度的实现,openfoam算例结构,sinap ,OpenFOAM plus DEM,0/p,FoamFile version 2.0; format ascii; class volScalarField; object p;dimensions 0 2 -2 0 0 0 0;internalField uniform 0;boundaryField movingWall type zeroGradient; fixedWalls type zeroGradient; ,openfoam的组件定制,定制边界条件,定制离散格式,sinap ,OpenFOAM plus DEM,boundaryField walls type fixedFluxBC; flux uniform 0; Ks_normal uniform 0.238; value uniform 0; .,laplacianSchemes laplacian(K,p) 3D27pointsScheme corrected;.,层次结构,配置取代编码,sinap ,OpenFOAM plus DEM,配置文件的变与不变,功能单元,组件:运行期底层功能单元随需求变化配置的对象,框架:核心逻辑的体现相对固定,分离变化点针对组件的三个问题:放谁去?放到哪儿? 怎么放?,顶层抽象-框架的开始,sinap ,OpenFOAM plus DEM,工作流:对数据模型(X),做操作(Y),处理(Z)其结果Yade:Body (Shape Material State Bound.)Interaction (IGeom IPhys Law)Engine (Collider NewtonIntegrator.)OpenFOAM:GeometricFieldSchemes(div grad .)solvers(PCG PBiCG.),业务型框架:www,顶层X,Y,Z均变化M模型V视图C控制,变化点的粒度-底层组件,sinap ,OpenFOAM plus DEM,配置文件中的组件:相应解构规模下粒度最小不同层次的组件无功能覆盖 角色的被动程度最高 只专注于核心业务逻辑,程序双向结构,纵向:框架,横向:组件,sinap ,OpenFOAM plus DEM,框架层次继承(联系)不同职责的传递链:解析配置文件工作流搭建公共服务规定协议,组件调度接口(功能)某一层次职责的具体实现: 完成单一职责信息注册,通信,框架-组件通信机制,sinap ,OpenFOAM plus DEM,组件整合进入框架:遵循框架协议框架控制组件:加载时控制权的转移java类加载器: ClassLoader隔离运行时和文件系统java反射:运行时类信息的提取在运行时检测对象的类型;动态构造某个类的对象;检测类的属性和方法;任意调用对象的方法;修改构造函数、方法、属性的可见性; .C+库加载函数: dlopen系列C+宏: 最大程度降低代码污染(全功能反射的部分实现),C+加载动态库,sinap ,OpenFOAM plus DEM,class DynLibManager private :std:map handles;bool DynLibManager:load (const string.,YD注册实现机制,sinap ,OpenFOAM plus DEM,#define YADE_PLUGIN(plugins)#define REGISTER_FACTORABLE(name) inline shared_ptr CreateShared#name()return shared_ptr ( new name );inline Factorable* Create#name()return new name;inline void * CreatePureCustom#name()return new name;const bool registered#name _attribute_ (unused) =ClassFactory:instance().registerFactorable( #name ,Create#name ,CreateShared#name ,CreatePureCustom#name);,sinap ,OpenFOAM plus DEM,OF runTimeSelectionTables.H“虚构造函数”的实现(注册到基类):declareRunTimeSelectionTable - macro invoked in Base.HdefineRunTimeSelectionTable - macro invoked in Base.CaddToRunTimeSelectionTable - macro invoked in Derived.CNew - Selector function added to Base. (need implemented)IOobject ( const word & name, const word & instance, const fileName & local, const objectRegistry & registry, readOption r = NO_READ, writeOption w = NO_WRITE, bool registerObject = true),OF注册实现机制,组件管理器,sinap ,OpenFOAM plus DEM,构造权移交:typedef Factorable* ( *CreateFactorableFnPtr )();struct FactorableCreatorsCreateFactorableFnPtr create;.;typedef std:map FactorableCreatorsMap;FactorableCreatorsMap map;DynLibManager dlm;private成员- class ClassFactory : public SingletonOF两种注册地点:向基类注册向公共业务管理器注册macro - declareRunTimeSelectionTable:typedef HashTable argNames#ConstructorTable; class Time : public objectRegistry.,组件管理器,sinap ,OpenFOAM plus DEM,Yade:shared_ptr f = ClassFactory:instance().createShared(“ClassName”);shared_ptr c = dynamic_pointer_cast(f);OF:autoPtr derivedComponent = Base:New(.)const Type c = runTime.lookupObject(const word,组件分派,组件批处理,sinap ,OpenFOAM plus DEM,配置文件级别的分派一一映射准公共服务级别的分派分发器框架级别的分派针对抽象例子:BoundDispatcher分发,A,B,B3,B2,B1,A2,A1,A3,Dispatcher,sinap ,OpenFOAM plus DEM,BoundDispatcher中存储了不同种类的BoundFunctor.InsertionSortCollider(Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()如何让合适的BoundFunctor去处理对应的O.bodiesk ?void InsertionSortCollider:action().boundDispatcher-action();.void BoundDispatcher:action().if(!shape-boundFunctor) shape-boundFunctor=this-getFunctor1D(shape); .shape-boundFunctor-go(shape,b-bound,b-state-se3,b.get();.void Bo1_Sphere_Aabb:go(const shared_ptr& cm, shared_ptr& bv, const Se3r& se3, const Body* b).aabb-min = .aabb-max = .,sinap ,OpenFOAM plus DEM,YD_indexable.hpp#define REGISTER_INDEX_COUNTER(SomeClass)#define REGISTER_CLASS_INDEX(SomeClass,BaseClass) void Indexable:createIndex () Shape Clump Tetra Wall Sphere Facet Box Cylinder ChainedCylinderYD_DynLibDispatcher.hppshared_ptr getFunctor1D(shared_ptrcallBacksindex1index2,YD框架的公共服务职责,sinap ,OpenFOAM plus DEM,2 / 36,YD_Serializable.hppYADE_CLASS_BASE_DOC_ATTRS_DEPREC_INIT_CTOR_PY(thisClass,baseClass,docString,attrDecls,deprec,inits,ctor,extras) 侵入式序列化:#define _REGISTER_BOOST_ATTRIBUTES(baseClass,attrs) friend class boost:serialization:access; private: template void serialize(ArchiveT ,YD_交互式功能实现,sinap ,OpenFOAM plus DEM,boost Python wrapperYD_Serializable.hpp#define_YADE_CLASS_BASE_DOC_ATTRS_DEPREC_PY(thisClass,baseClass,docString,attrs,deprec,extras) /* python class registration */ virtual void pyRegisterClass(python:object _scope) . 宏增加C+和python数据转换的功能,代理透露出留给终端的接口,由BOOST_PYTHON_MODULE(classname)实现.pyBodyIterator pyBodyContainerpyTagspyInteractionIterator pyInteractionContainerpyForceContainerpyMaterialContainerpyOmega,YD_可视化的qt实现,Viewer,sinap ,OpenFOAM plus DEM,QGLViewer pyqt qtclass GLViewer : public QGLViewerQ_OBJECT protected: shared_ptr renderer; virtual void draw();.qt: 信号-槽机制MVC: OpenGLRenderer隔离出来自scence-bodies中的M,controller.ui,FHR,sinap ,OpenFOAM plus DEM,DEM-CFD,Fluent_EDEM,sinap ,OpenFOAM plus DEM,颗粒

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论