一种mo文件的查找和处理方法与流程

文档序号:36779863发布日期:2024-01-23 11:51阅读:19来源:国知局
一种mo文件的查找和处理方法与流程

本发明涉及计算机仿真领域,尤其涉及一种mo文件的查找和处理方法。


背景技术:

1、modelica是一种用于建模和仿真复杂系统的开放标准建模语言。它提供了一种描述物理系统的方式,包括机械、电气、热力、控制和其他领域的系统。modelica还是一种基于对象的语言,允许用户描述系统的物理结构、组件之间的连接和它们之间的行为。

2、modelica模型描述的是系统的物理行为,而不仅仅是数学方程。这使得modelica成为一种强大的工具,可以用于建模和仿真各种复杂系统,从汽车和飞机到能源系统和工业过程。

3、使用modelica语言,可以创建模型,这些模型由各种组件(如电机、传感器、阀门等)组成,这些组件相互交互以描述系统的行为。modelica提供了丰富的内置库,涵盖了各种领域的建模需求,例如电气、机械、控制等。

4、运行modelica模型需要加载多种模块或组件,模块或组件存储于mo文件中,如用户创建的modelica内置库中的各种组件对应的mo文件,对于mo文件的查找及加载是一项非常复杂且耗时的工作,影响程序的编译、运行效率。

5、因此,针对modelica语言模型亟需一种能够快速查找、准确加载mo文件的方法。


技术实现思路

1、为了解决上述技术问题,本发明提供了一种基于modelica语言模型的mo文件的查找和处理方法,实现了快速编译modelica语言生成可执行求解器的目的,提高了编译modelica语言模型的正确性及编译速度。

2、本发明提供的一种mo文件的查找方法,具体包括如下步骤:

3、步骤s1:根据mo文件的编译请求,确定查找对象,将所述查找对象输入类加载器中进行查找;

4、所述类加载器包括多个模型库类加载器,所述多个模型库类加载器具有不同层级,每个所述模型库类加载器中包含多级缓存;

5、步骤s2:基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在所述模型库类加载器中进行查找;

6、步骤s3:判断查找结果:

7、若查找到所述mo文件,则结束查找;

8、若未查找到所述mo文件,返回未查找到的异常信息。

9、具体地,所述模型库类加载器包括基础类型加载器、标准库类型加载器、商业库类型加载器、用户库类型加载器;

10、所述模型库类加载器的层级高低关系,按照从高到低的顺序为:用户库类型加载器>商业库类型加载器>标准库类型加载器>基础类型加载器。

11、进一步地,所述缓存包括内存缓存、固态缓存和硬盘存储,所述内存缓存、固态缓存和硬盘存储缓存级别从高到低的顺序为:内存缓存>固态缓存>硬盘存储。

12、进一步地,步骤s2中,基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在所述模型库类加载器中进行查找,具体包括:

13、步骤s21:按照所述模型库类加载器层级从高到低的顺序,在各模型库类加载器内存缓存中查找;

14、若在所述模型库类加载器的内存缓存中查找到所述mo文件,执行步骤s3;

15、若在所述模型库类加载器的内存缓存中未查找到所述mo文件,执行步骤s22;

16、步骤s22:从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级高低关系从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存,进行查找;

17、若在所述模型库类加载器的固态缓存中查找到所述mo文件,则将所述mo文件进行处理,将处理后的mo文件存至当前模型库类加载器的内存缓存;

18、若在所述模型库类加载器的硬盘存储中查找到所述mo文件,则将所述mo文件进行处理,将处理后的mo文件存至当前模型库类加载器的固态缓存和内存缓存。

19、具体地,所述内存缓存中存储所述mo文件的数据结构对象格式,所述固态缓存中存储所述mo文件的数据结构对象序列化后的二进制流文件格式,所述硬盘存储中存储所述mo文件的原始格式。

20、本发明还提供一种mo文件的处理方法,由上述任一项所述的一种mo文件的查找方法得到mo文件,或者根据mo文件的编译请求给定mo文件,针对所述mo文件进行处理,具体如下:

21、判断所述mo文件的格式;

22、若所述mo文件为所述数据结构对象格式,则不进行处理;

23、若所述mo文件为所述二进制流文件格式,则进行反序列化处理,得到数据结构对象格式的mo文件;

24、若所述mo文件为所述原始格式,处理步骤包括:

25、校验原始格式mo文件的合法性,取得合法mo文件;

26、将所述合法mo文件传入语法解析工具,对所述合法mo文件进行语法和词法分析,生成由所述合法mo文件的内容信息组成的语法树;

27、转换所述语法树,获得数据结构对象格式的mo文件。

28、具体地,所述校验所述mo文件合法性,具体包括:

29、文件是否存在且文件的后缀是否为.mo;

30、若文件存在且后缀为.mo,则确定所述mo文件合法,得到所述合法mo文件;

31、若所述mo文件不存在或所述mo文件的后缀不为.mo,则确定所述mo文件为非法文件,直接跳出不再执行后续步骤。

32、进一步地,对所述合法mo文件进行语法和词法分析,具体包括:根据modelica语法的g4文件中描述的语法规则,对所述合法mo文件的内容进行词法分析及语法解析:

33、如果所述合法mo文件的内容不符合所述g4文件中描述的语法规则,则返回错误信息;

34、如果所述合法mo文件的内容符合所述g4文件中描述的语法规则,则生成所述语法树。

35、进一步地,所述数据结构对象为src数据结构对象。

36、进一步地,所述语法解析工具为antlr。

37、本发明实施例具有以下技术效果:

38、1.本发明中进行mo文件查找时,基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在模型库类加载器中进行查找。当在模型库类加载器的内存缓存中进行查找,按照模型库类加载器层级高低关系从高到低的顺序,在各模型库类加载器内存缓存中查找,如果内存缓存中没有查找,则从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级高低关系从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存,进行查找,查找到后直接返回结果。这种基于模型库类加载器层级高低关系和缓存级别关系的查找方式,查找速度快,不会出现查找到多个的问题,提高软件的编译速度。

39、2.在查找mo文件过程中,若mo文件在模型库类加载器的内存缓存中查找到,则结束查找操作;若mo文件在模型库类加载器的固态缓存中查找到,则将查找到的mo文件进行数据格式处理,存至当前模型库类加载器的内存缓存中;若mo文件在模型库类加载器的硬盘存储中查找到,则将查找到的mo文件进行数据格式处理,存至当前模型库类加载器的内存缓存和固态缓存中。基于上述查找方法和存储方法,下次查找mo文件时,能够快速在模型库类加载器的内存缓存中完成查找,有力提升查找速度。

40、3.本发明中,若查找到的mo文件为src数据结构对象格式,则不进行处理;若查找到的mo文件为二进制流文件格式,则进行反序列化处理,得到src数据结构对象格式的mo文件;若查找到的mo文件为原始格式,则进行合法性校验、语法解析、转化等处理,最终获得src数据结构对象格式的mo文件。上述的src数据结构对象为软件所需的数据结构对象,使用该结构能够快速、准确完成mo文件的加载,用于后续的编译仿真工作,加快了整体编译速度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1