《MWORKS开发平台架构及二次开发》全套教学课件_第1页
《MWORKS开发平台架构及二次开发》全套教学课件_第2页
《MWORKS开发平台架构及二次开发》全套教学课件_第3页
《MWORKS开发平台架构及二次开发》全套教学课件_第4页
《MWORKS开发平台架构及二次开发》全套教学课件_第5页
已阅读5页,还剩373页未读 继续免费阅读

下载本文档

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

文档简介

MWORKS开发平台架构与二次开发第1章

科学计算与系统建模仿真平台MWORKS简介第2章MWORKS平台开放架构与二次开发简介第3章

面向科学计算的二次开发第4章

面向系统建模的二次开发第5章

带用户界面的应用开发第6章

综合应用二次开发实践全套可编辑PPT课件

第一章科学计算与系统建模仿真平台MWORKS简介科学计算发展概述系统建模发展概述信息物理系统概述及其建模需求采用MWORKS构建信息物理系统的优势MWORKS平台架构及二次开发的必要性第1章科学计算与系统建模仿真平台MWORKS简介01科学计算发展概述科学计算的定义利用计算机再现、预测和发现客观世界运动规律和演化特征的全过程自然科学规律通常可以用各类数学方程式表达,而科学计算的目的则是寻找这些方程式的数值解科学计算发展计算机出现之前:科学研究和工程设计主要依靠实验或试验提供数据,计算仅作为辅助上个世纪90年代:计算机飞速发展,计算数学、应用数学、计算机科学以及应用领域结合在一起产生了科学计算这一新的交叉学科,这使得越来越多的复杂计算成为了可能进入21世纪以来:高性能计算机迅速发展,高性能和大规模的科学计算成为了科学计算领域的重要研究主题科学计算概述建立数学模型依据有关学科理论对所研究的对象确立一系列数量关系,即一套数学公式或方程式建立求解的计算方法把问题离散化,即把问题化为包含有限个未知数的离散形式(如有限代数方程组),然后寻找求解方法计算机实现编制程序、调试、运算和分析结果等一系列步骤科学计算的计算过程软件技术的发展为科学计算提供了合适的程序语言和其他软件工具,将复杂的模型进行合理的简化,使工作效率和可靠性大为提高三大数学软件(商用)MATLAB🇺🇸Mathematica🇺🇸Maple🇨🇦开源数学软件Maxima🇫🇷SCILABMIT国产科学计算与建模仿真平台MWORKS.Syslab科学计算常用软件产品MWORKS平台科学计算常用软件产品国际先进、完全自主MWORKS航天应用MWORKS航空应用科学计算常用软件产品MWORKS能源动力应用MWORKS汽车应用科学计算常用软件产品追求卓越、勤于钻研、勇于担当!MATLABMatrixLaboratory:“矩阵实验室”MATLAB语言是由美国的CleverMoler博士于1980年开发的,设计者初衷是为解决“线性代数”课程的矩阵运算问题1984年CleverMoler博士等人创立MathWorks公司,并推出第一个MATLAB商业版MATLAB语言是科技界应用最广泛的计算机语言之一现已不仅是一个“矩阵实验室”了,而是国际上广泛使用的集数学运算、符号运算、数据可视化、GUI设计、程序设计、仿真等诸多功能于一身的科学与工程计算软件已成为线性代数、数值分析、数学建模、信号与系统分析、自动控制、数字信号处理、通信系统仿真等一大批课程的教学和科研工具科学计算常用软件产品MATLAB广泛应用与诸多领域科学计算常用软件产品生物医学工程通信系统的设计与仿真控制系统的设计与仿真财务金融分析语音处理图形用户界面设计新算法研究开发数值分析数值和符号计算工程与科学绘图航空航天工业汽车工业数字图像处理数字信号处理MWORKS.syslab科学计算常用软件产品https://www.tongyuan.cc/product/MWorksSyslab

MWORKS.syslab的功能科学计算常用软件产品MWORKS与MATLAB对比科学计算常用软件产品163软件名称应用场景优点缺点MATLAB数据分析、信号处理、工程建模、控制系统设计等强大的数值计算能力;丰富的函数库和工具箱;独特的MATLAB语言和交互式开发环境商业软件,价格较高;在复杂的符号计算和精确数值计算方面,可能稍逊一筹Mathematica符号计算、数值计算、微积分、代数、物理学等强大的符号计算能力;广泛的数学和物理计算函数;图形绘制和可视化能力强大商业软件,价格较高;对于一些特定的领域和应用,可能需要一定的学习和适应时间Maple符号计算、数值计算、微积分、代数、方程求解等强大的符号计算能力;广泛的数学计算功能;图形绘制和可视化能力强大商业软件,价格较高;学习和适应时间可能较长;在某些特定的领域和应用方面,可能相对其他软件有一些限制MWORKS.Syslab数值运算、符号计算、信号处理、通信和绘图等国际先进、完全自主;可全面支持信息物理融合系统设计、仿真、验证及运维,为各行业提供装备数字化工程支撑还在不断开发与更新中,部分功能目前不支持;商业授权需要额外费用Maxima符号计算、数值计算、代数运算、微积分等开源软件,免费使用;提供广泛的数学计算功能;命令行界面和图形用户界面可选图形界面相对其他软件可能较简单;对于一些高级的数学计算和应用,可能需要其他包和扩展SCILAB数值计算、数据分析、控制系统设计等开源软件,免费使用;提供丰富的数学计算和数据分析功能;具有强大的控制系统设计能力图形界面相对其他软件可能较简单;在某些特定的领域和应用方面,相对其他软件科学计算常用软件产品天气预报:使用数值计算方法研究气象过程经济学:优化问题的求解工程领域:有限元方法自然科学:利用数值计算国防:计算及仿真航空航天工业:计算机仿真…科学计算的经典应用02系统建模发展概述物理模型按照一定规则对系统进行简化、或者采用一定比例尺寸按照真实系统的模样所制作的仿制品,看起来与实物基本相似抽象模型用符号、图表等形式来描述系统实物所建立起来的模型模型物理模型模型沙盘模型DNA分子双螺旋结构模型抽象模型数学模型描述系统中各要素特征和内在联系的抽象表示形式,通过使用数字、字母、符号等来建立公式、图像、框架图等微分方程模型、回归分析模型、动态规划模型仿真模型用便于控制的一组条件代表真实事物的特征,通过模仿性试验了解系统中各元素的规律概念模型基于经验、知识背景和思维直觉形成的对现实世界及其活动进行概念抽象与描述的结果通常用语言、符号、框图等形式表达模型年代发展特点1600-1940年在物理科学的基础上建模20世纪40年代电子计算机的出现20世纪50年代中期仿真被应用于航空领域20世纪60年代仿真被应用于工业控制过程20世纪70年代经济、社会和环境因素的大系统仿真20世纪70年代中期系统与仿真的结合,如支持随机网络建模的SLAM仿真系统20世纪70年代中期系统仿真与更高级决策结合,如决策支持系统DSS20世纪80年代中期集成化建模与仿真环境,如TESS仿真建模系统20世纪90年代可视化建模与仿真,虚拟现实仿真,分布式交互仿真21世纪多尺度和多模态建模,高性能计算,可视化和交互性系统建模与仿真历史发展MATLAB/Simulink(MathWorks)LabVIEW(NationalInstruments)Modelica(ModelicaAssociation)Dymola(DassaultSystèmes)OpenModelica(OpenSourceModelicaConsortium)Scilab(INRIA、ENPC、ScilabEnterprises)MWORKS.Sysplorer(中国苏州同元)系统建模与仿真常用软件03信息物理系统概述及其建模需求信息物理系统(CPS,Cyber-PhysicalSystems)集成泛在感知、可靠通信、嵌入式计算和智能化控制于一体的新一代智能系统,是物理实体与信息空间的融合统一体。信息物理系统的定义CPS通过计算、通信与控制技术的有机与深度结合,实现了计算资源与物理资源的紧密结合与深入协作。CPS的基本组成包括传感器、控制执行单元和计算处理单元。传感器用于对物理系统信号进行采集计算处理单元对采集到的数据进行计算分析控制执行单元根据计算结果对物理系统进行控制通信网络负责数据传输CPS体系结构与独立的物理系统或者信息系统相比,CPS具有以下技术特征:异构集成:由信息系统和物理系统异构集成而产生,每个子系统包含多种结构和功能各异的单元模块或设备装置深度融合:以信息子系统与物理子系统相互嵌套、深度融合形态存在数据驱动:跨设备、跨区域、跨系统的互联互通使得CPS系统表现出基于数据的泛在强交互特性系统自治:多模块、多单元异构集成的CPS系统必然需要有效的分层、分区自感知和自主调控,而系统自治能够使得CPS自配置形成不同层级的知识库、模型库和资源库,使其能够不断自我优化和演进提升CPS技术特征行为理解与分析信息物理系统需要建模以理解和分析其复杂的行为规律和内在机制优化设计与决策支持建模可以为信息物理系统的优化设计和决策提供支持故障检测与故障诊断建模可以实现对信息物理系统的故障检测和故障诊断控制与调节建模是信息物理系统控制和调节的重要手段CPS建模需求工业制造能源电力智能交通医疗健康CPS应用04采用MWORKS构建信息物理系统的优势MWORKS是各行业装备数字化工程支撑平台支持基于模型的全流程模型管理支持数字化交付、全系统仿真验证及全流程模型贯通提供算法、模型、工具箱、APP等规范的扩展开发手段,支持专业工具箱以及行业数字化工程平台的扩展开发MWORKS是开放、标准、先进的计算仿真云平台提供包括科学计算环境、系统建模仿真环境以及工具箱的云原生平台面向教育、工业和开发者提供了开放、标准、先进的在线计算仿真云环境支持构建基于国际开放规范的工业知识模型互联平台及开放社区MWORKS是全面替代MATLAB/Simulink的新一代科学计算与系统建模仿真平台提供科学计算环境Syslab替代MATLAB全面自主开发了系统建模仿真环境Sysplorer替代SimulinkMWORKS产品定位开放标准:采用国际知识模型统一表达规范Modelica、新一代科学计算语言Julia等开放规范或语言,定义新一代科学计算与系统建模仿真平台开放架构与接口规范,构建信息物理系统建模仿真开放平台融合创新:融合国际装备数字化工程发展趋势与中国重大创新工程数字化实践经验,自主计算仿真平台提供多物理融合、信息-物理融合、系统-专业融合、机理-数据融合、物理-数字融合等创新特性数字支撑:通过系列融合创新,MWORKS平台支持系统设计、计算分析、仿真验证、虚拟试验、运行维护及协同研发,全面支持复杂装备的数字化研制、数字化交付及数字孪生应用端云一体:平台基于统一架构和内核同时提供单机版和云化版本,单机版和云化版本可以独立运行或协同运行,实现架构、内核、算法、模型及数据的端云一体化MWORKS平台优势开放生态:基于开放架构与接口规范及开放语言,MWORKS提供算法、模型、工具、应用等多层次扩展开发能力,支持企业、高校、院所等合作伙伴构建自主模型、工具或应用,共建工业软件开放生态。国际先进:依托中国航天、航空、核能、船舶等行业重大工程数字化实践,持续迭代打磨平台,逐步实现对国际同类工业软件的替代与超越,在越来越多的功能和性能指标上超越国际同类产品。自主可控:平台表达采用国际开放规范或语言,建模仿真引擎国际先进、亚洲唯一、完全自主,首次实现了内核引擎欧美出口输出。全面支持国产操作系统、国产数据库及国产硬件环境。MWORKS平台优势MWORKS是一款国际先进、完全自主的新一代信息物理建模仿真平台,作为国产软件,该平台拥有更大的自主权和定制化能力,可全面支持信息物理融合系统设计、仿真、验证及运维,为各行业提供装备数字化工程支撑。05MWORKS平台架构及二次开发的必要性年份发展特点2001技术积累:关注Modelica技术,开展技术预研2004技术突破:突破核心关键技术,启动原型系统开发2006亮相国际:成功开发原型产品,首次亮相国际会议2008公司成立:同元软控公司成立2009产品发布:发布亚洲首款系统建模仿真软件MWORKS.Sysplorer2010工程应用:全面拥抱工程,航空航天应用探索和迭代2013深度服务:立足航空,基于系统工程提供深度服务2016精品打造:确立数字化系统设计与验证定位,打磨系列精品产品2018平台行程:系统设计与仿真验证平台初成,形成系统设计、验证及协同闭环2021走向生态:内核SDK发布,培育属组合工程生态2022平台升级:MWORKS平台全面升级,构建完整CPS建模仿真技术底座MWORKS平台发展历程MWORKS平台体系四大系统级产品MWORKS.Syslab:科学计算环境MWORKS.Sysplorer:面向多领域工业产品的系统建模与仿真验证环境MWORKS.Sysbuilder:基于SysML模型的面向复杂工程系统的系统架构设计环境MWORKS.Syslink:面向云端的系统协同建模与模型数据管理环境工具箱MWORKS.Toolbox函数库MWORKS.Function:提供基础数学和绘图等基础功能函数,内置曲线拟合、符号数学、优化与全局优化等高质优选函数库,支持用户自行扩展模型库MWORKS.Library:涵盖多个重点行业,支持用户自行扩展,基础模型可大幅降低复杂产品模型开发门槛与模型开发人员学习成本应用工具MWORKS.APP:满足多样化的数字化设计、分析、仿真及优化需求MWORKS平台体系满足个性化需求开发者可以根据自身需求对平台进行定制和扩展提高灵活性和可定制性便于适应特定的应用场景和业务需求避免庞大而冗杂的系统自由选择所需的功能,避免系统不必要的复杂性推动开发者社区的发展鼓励开发者之间的知识共享和合作二次开发的必要性科学计算与系统建模仿真开放系统架构在最高抽象级别上划分为三个层次:内核层:提供内核级开发接口:支持底层算法可替换,开发者可设置、替换科学计算与系统建模仿真平台底层数值算法、数学包、仿真求解算法、求解器等。平台层:提供平台级开发接口:支持应用资源可扩展,开发者可基于平台级开放接口,采用多语言高效开发函数库、模型库、APP等应用资源;支持外部系统可集成,第三方系统可以松耦合方式,整体集成科学计算与系统建模仿真平台。应用层:定义资源开发规范:支持函数、模型和APP资源的开发。MWORKS开放架构科学计算和建模仿真软件是工业软件的基础支撑软件随着新一轮科技革命快速发展,装备研制已经从信息化时代步入了数字化与智能化相结合的时代苏州同元软控打造了国际先进、完全自主的新一代信息物理系统建模仿真平台MWORKS,有效地为中国装备行业提质增效和转型升级赋能,也推动了装备数字化的创新探索和实践落地本章小结1.什么是科学计算?计算步骤是什么?2.系统建模的含义是什么?模型有哪几类?3.信息物理系统的基本组成是什么?有哪些技术特征?4.安装MWORKS.Syslab和MWORKS.Sysplorer,并对照用户手册,各自完成一个简单示例。本章习题[1]/item/%E7%A7%91%E5%AD%A6%E8%AE%A1%E7%AE%97/10573887[2]同元软控.开放系统架构规范.[3]/kxcb/jclyzs/201206/W020120629564433644401.pdf[4]/teachers/tanghz/private/homepage/num_meth/SC-A4.pdf[5]罗国勋,罗昕,蒋天颖.系统建模与仿真[J].2011.[6]杨挺,刘亚闯,刘宇哲,等.信息物理系统技术现状分析与趋势综述[J].电子与信息学报,2021,43(12):3393-3406.[7]李洪阳,魏慕恒,黄洁,等.信息物理系统技术综述[J].自动化学报,2019,45(1):37-50.[8]/book/2303/22ty4/index.html[9]/xinwen/2023-02/22/content_5742718.htm[10]同元软控.科学计算与系统建模仿真平台MWORKS-产品册.参考文献2.1MWORKS平台技术架构2.1.1概述2.1.2内核层2.1.3平台层2.1.4应用层2.2MWORKS平台二次开发简介2.2.1内核级二次开发2.2.2应用级二次开发第2章MWORKS平台开放架构与二次开发简介012.1MWORKS平台技术架构平台概述MWORKS平台采用完全开放策略,从底层算法到上层应用均开放提供开放的系统架构,定义了科学计算与系统建模仿真平台架构和接口标准化方案支持开发者基于统一的接口规范开发函数库、模型库和APP实现平台共建,丰富应用生态2.1.1概述2.1.1概述MWORKS平台分层技术架构-总体2.1.1概述MWORKS平台分层技术架构-横向划分内核层平台层应用层2.1.1概述内核层负责算法函数和仿真模型的编译运行。包括基础数学算法库、模型求解算法库和科学计算与系统建模仿真内核。基于开放标准FMI、Netlib和FFTW等接口开发。提供开放、标准的内核级接口,支持底层算法二次开发和替换。可供开发者设置、替换底层算法、数学包、仿真求解算法等。2.1.1概述平台层为函数、模型、应用工具等资源提供全生命周期支持。包括科学计算环境和系统建模仿真环境。提供开发、调试、集成、测试、部署等支持。提供开放、标准的接口,支持应用资源的开发与扩展。支持开发者和外部系统调用,或集成入其他外部系统。2.1.1概述应用层包括科学计算函数库、系统仿真建模模型库和应用工具APPs,用于解决基础共性、行业通用和企业专用问题。应用资源基于平台层提供的开放接口和统一的资源开发规范开发。科学计算函数库提供基础数学、绘图等功能,支持教学科研、数据分析、算法设计和产品设计,可进行二次开发。系统仿真建模模型库包括传动、液压、电机、热流等专业模型,覆盖多个行业,降低模型开发门槛,支持二次开发。应用工具APPs是针对特定问题构建的应用程序,基于MWORKS平台运行,包括多个类别的应用工具,满足数字化设计、分析、仿真和优化需求。2.1.1概述MWORKS平台分层技术架构-纵向划分科学计算部分(MWORKS.Syslab)系统建模部分(MWORKS.Sysplorer)带交互界面的APP2.1.1概述科学计算部分(MWORKS.Syslab)基于Julia语言,支持多范式统一编程,简约与性能兼顾。提供通用编程、科学计算、数据科学、机器学习、信号处理等功能。可使用内置图形进行数据可视化。与工程建模仿真环境MWORKS.Sysplorer双向融合,形成一体化基础平台。2.1.1概述系统建模部分(MWORKS.Sysplorer)提供系统仿真建模、编译分析、仿真求解、后处理功能。支持产品多领域模型开发、虚拟集成、方案仿真验证和优化。为产品数字孪生模型提供关键支撑。2.1.1概述带交互界面的APP提供面向特定场景的专业应用,如控制系统设计与分析。依赖函数库或模型库,具备GUI实现交互入口。需在科学计算和系统仿真平台基础上构建专业计算能力。2.1.2内核层内核层概述MWORKS平台的内核层是最底层,负责科学计算函数和系统建模仿真模型的编译和运行。内核层将输入的Julia代码和Modelica代码编译成可执行程序,然后运行进行仿真计算,输出结果。内核层包括基础数学算法库、模型求解算法库、科学计算与系统建模仿真内核以及内核级开放接口。2.1.2内核层内核层组成与处理流程2.1.2内核层内核层-基础数学算法库基础数学算法库基于通用标准接口规范如BLAS/LAPACK/FFT/SuiteSparse。提供矢量、矩阵乘法、矩阵分解、线性方程组求解、傅里叶变换等核心算法工具。包括常微分方程ODE、微分代数方程DAE和偏微分方程PDE等算法。作为基础数学工具箱内核,支撑整个基础数学算法。2.1.2内核层内核层-模型求解算法库ODE初值问题求解算法线性代数求解算法非线性代数求解算法2.1.2内核层科学计算与系统建模仿真平台内核科学计算内核数学应用层数学层内核算法内核系统建模仿真内核算法层主控层应用层2.1.2内核层科学计算函数库架构2.1.2内核层科学计算与系统建模仿真平台内核的层次架构2.1.2内核层内核级开放接口(API)内核级开放接口是MWORKS平台提供的供开发者和外部系统调用的开放、标准接口,包括底层算法接口和上层内核接口。底层算法接口规约科学计算算法和模型求解算法的接口,符合标准即可接入平台。上层内核级接口提供一组内核原子应用程序接口,支持模型编译、分析、求解、代码生成、结果读写等操作。外部软件可通过调用这些接口集成科学计算和系统仿真内核。内核级API还提供底层算法切换接口规范,允许用户切换基础数学算法库和模型求解算法库。2.1.3平台层平台层概述平台层是MWORKS科学计算与系统建模仿真平台的集成开发环境,支持应用的全生命周期,包括开发、调试、集成、测试、部署。平台层架构包括科学计算环境、系统建模仿真环境和平台级API,用于函数开发、模型开发和APP开发。平台级API提供开放、规范的接口,包括科学计算能力和模型仿真计算能力。提供一套接口支持应用层函数库、模型库和APP的开发。2.1.3平台层平台层框架2.1.3平台层平台层科学计算环境面向科学计算,支持多范式统一编程,提供通用编程、数据科学、机器学习等功能。实现与工程建模仿真环境的双向融合,满足设计、建模、仿真、优化需求。系统建模仿真环境面向多领域产品设计与仿真验证,支持多领域统一建模规范Modelica。提供层次化建模方式,支持基于模型的系统工程应用,为设计知识积累与产品创新提供支持。平台级开放接口(API)提供科学计算接口API和系统建模仿真接口API。科学计算接口包括基础运算、数学方程、图形等API。系统建模仿真接口包括模型操作、参数操作、编译仿真等API,以及图形组件级API。2.1.4应用层应用层概述应用层包括科学计算函数库、系统仿真建模模型库和应用工具APPs,用于解决基础共性、行业通用、企业专用问题。应用资源遵循平台层提供的开放接口和统一的资源开发规范进行开发。应用层定义了开发规范,支持规范方式开发平台资源,提供资源管理接口,支持函数库、模型库和APP的装载、驱动和卸载。2.1.4应用层应用层框架2.1.4应用层科学计算函数库MWORKS函数库提供3338个标准接口函数,涵盖数学、统计、优化、数据科学、深度学习、信号处理、无线通信等领域,用户可基于规范开发自定义函数库并导入平台进行科学计算编程和计算。MWORKS平台科学计算库函数分类统计2.1.4应用层系统建模模型库MWORKS平台的模型库采用Modelica规范构建,包括多领域物理模型组件,用户可基于规范开发自定义模型库,实现可视化系统建模、仿真求解和结果查看。MWORKS平台的模型库2.1.4应用层应用层APPMWORKS平台的应用层APP通过应用级、平台级和内核级API开发,可部署到平台成为其组成部分,提供多类别的应用工具,满足数字化设计、分析、仿真和优化需求。Syslab和Sysplorer内置APP的示例2.1.4应用层应用层开发规范函数库开发规范描述了函数库开发、运行和管理机制。规范使用Julia及外部语言开发函数库的流程。开发的函数库可在平台导入、管理,支持科学计算编程和结果查看。模型库开发规范定义了模型库开发、运行和管理机制。规范使用Modelica及外部语言开发模型库的流程。开发的模型库可在平台导入、管理,支持系统建模、仿真求解和结果查看。APP开发规范包括开发、运行和管理APP的机制描述。内部APP自动遵循规范并内置API接口。外部APP需提供相应API接口以在平台加载、驱动和卸载。022.2MWORKS平台二次开发简介平台二次开发概述MWORKS平台的二次开发包括内核级和应用级两个层次,平台层提供全生命周期支持,不涉及二次开发。平台级API允许外部系统通过调用接口构建新系统和应用,实现界面、业务逻辑、数据等接口调用。MWORKS.SDK是应用开发工具包,包括:程序接口:内核层和平台层的函数和方法集合,包括科学计算和系统建模仿真API。帮助文档:提供接口解释、示例代码和错误解决方法。开发范例:展示如何使用SDK解决问题,从简单到复杂的案例。实用工具:推荐开发工具组合,如Qt5.14.2、MicrosoftVisualStudio2017。2.2平台二次开发概述MWORKS平台二次开发架构2.2平台二次开发概述内核级二次开发面向科学计算的基础数学算法扩展或替换二次开发涉及扩展或替换平台现有的科学计算算法,包括底层的BLAS、LAPACK等基础算法包。同时,也涉及上层的符号计算、曲线拟合等应用层数学包的定制或优化。面向系统建模仿真的模型求解算法扩展或替换在系统建模仿真平台上,系统建模仿真需求逐步趋向多领域系统、大规模系统。针对不同场景,可以定制底层的模型求解算法以满足特定目的。2.2.1内核级二次开发面向科学计算的基础数学算法扩展或替换性能优化:替换底层算法包(如BLAS和LAPACK)可针对特定硬件架构或优化需求进行自定义优化,显著提高科学计算应用的计算速度和效率,尤其对大规模和高性能计算任务至关重要。适应性:替换底层算法允许选择或开发更适合特定问题的算法,提高计算的准确性和可靠性,特别适用于不同科学计算问题的需求多样性。功能扩展:通过替换底层算法,可以添加新的数学功能以满足不断发展的研究需求,推动科学计算工具的创新和不断进步。平台独立性:减少特定底层算法库的依赖性,增加应用程序在不同平台上的可移植性和部署灵活性,有助于提高应用程序的可部署性和适应性。2.2.1内核级二次开发面向系统建模仿真的模型求解算法扩展或替换多领域建模:Modelica广泛应用于描述多领域系统,不同领域可能需要不同的模型求解算法,因此扩展算法以适应多领域系统建模的需求至关重要。大规模系统:大型系统包含数百个方程和变量,需要高度优化的模型求解算法来确保高效仿真。非线性行为:Modelica模型可能涉及非线性行为,扩展非线性问题求解算法有助于处理这些情况,确保准确模拟非线性系统。实时仿真:实时系统建模需要快速和可预测的求解算法,扩展模型求解算法以满足实时系统的要求对于控制系统和嵌入式系统建模至关重要。新型组件和领域:Modelica社区不断发展,引入新型组件和建模领域,扩展模型求解算法可满足新的建模需求和创新,保持与新技术和领域的同步。2.2.1内核级二次开发应用级二次开发概述函数库开发:使用Julia语言在Syslab中开发科学计算函数库。模型库开发:使用Modelica语言在Sysplorer中开发系统仿真模型库。APP开发:使用C++/Qt等语言开发应用层APP,调用平台层API集成科学计算和系统仿真能力。开发流程:应用层开发调用函数库和模型库实现业务需求,实现定制化功能和特定应用场景的需求。2.2.2应用级二次开发应用级二次开发概述2.2.2应用级二次开发科学计算函数库开发填补内置库的空白:扩展函数库可填补Julia内置库未涵盖的数学、统计和计算领域,特别适用于不常见或领域特定的问题。解决行业特定问题:函数库扩展可针对不同行业和领域的科学计算挑战开发定制函数,满足金融、生物医学、工程等行业特定需求。提高计算效率:通过扩展函数库,优化特定领域算法可显著提升计算效率,确保在特定任务中获得更快的计算速度。适应特定需求:定制函数库可满足项目特殊数学工具需求,确保科学计算环境符合特定研究或工程任务的要求。2.2.2应用级二次开发系统建模模型库开发填补内置库的空白:扩展模型库可满足特定行业或复杂系统的需求,填补Modelica内置库未涵盖的领域或模块,特别适用于特定行业建模需求。替换已有的内置库:通过扩展模型库,用户可以替换内置库中无法满足定制化建模需求或性能改进的模块,确保模型满足特定行业或高度定制化的需求。满足特定的需求:定制模型库可为用户提供特定领域或功能的模块,确保系统建模仿真环境适用于各种工程、科学或工业应用,并满足特定需求。开发规范和适用性:MWORKS平台规范了使用Modelica和外部语言开发模型库,支持多语言开发,兼容FMI标准,实现系统建模仿真。2.2.2应用级二次开发APP开发MWORKS平台提供多领域应用工具,但可能无法满足所有需求,用户需开发定制的带用户界面的APP。平台定义了APP的开发规范,包括开发、运行、管理机制,基于平台级API进行开发。APP可基于应用级、平台级和内核级API开发,通过应用层扩展能力部署到平台成为组成部分。开发的APP需遵循平台的接口规范,内置API接口,实现自动加载、驱动和卸载功能。2.2.2应用级二次开发MWORKS平台架构是二次开发的基础,横向和纵向概述了技术架构。内核层、平台层和应用层构成了MWORKS平台的技术架构,每层包括科学计算、系统建模和交互界面的APP。介绍了MWORKS平台的技术架构,为后续章节的二次开发工作奠定基础。本章小结1.请简要说明MWORKS平台的横向和纵向架构层次。2.试简要说明MWORKS平台中内核层的技术架构。3.试简要说明MWORKS平台中平台层的技术架构。4.试简要说明MWORKS平台中应用层的技术架构。5.MWORKS平台在内核级能进行哪些二次开发?6.MWORKS平台在应用级能进行哪些二次开发?本章习题[1] FMI规范[EB/OL][2023-8-16]./docs/3.0/[2] BLAS规范[EB/OL][2023-8-16]./blas.[3] LAPACK规范[EB/OL][2023-8-16]./lapack.[4] FFTW[EB/OL][2023-8-16]./.[5] C99最终版草案N1256,ISO开放标准[EB/OL][2023-8-16]./jtc1/sc22/WG14/www/docs/n1256.pdf.参考文献3.1科学计算语言Julia简介3.1.1Julia语言简介3.1.2Julia语言的优势3.1.3安装与运行Julia2.1.4JuliaREPL的几种模式3.2内核级二次开发3.2.1内核级二次开发原理与步骤3.2.2内核级二次开发案例3.3应用层二次开发3.3.1应用层函数库开发流程3.3.2函数库开发规范3.3.3应用层函数库开发实例第3章面向科学计算的二次开发013.1科学计算语言Julia简介Julia语言概述Julia语言是面向科学计算的高性能动态高级程序设计语言,定位为通用编程语言和高性能计算语言。具有类似其他科学计算语言的语法,在大多数情况下具有与编译型语言相媲美的性能。主要应用领域包括数据科学、科学计算、并行计算、数据可视化、机器学习、UI、网站等。在精准医疗、增强现实、基因组学、风险管理等领域也有应用。Julia生态系统涵盖了无人驾驶汽车、机器人、3D打印等技术应用。3.1概述Julia语言简介Julia编程语言由JeffBezanson、StefanKarpinski、ViralShah和AlanEdelman等人于2009年开始研发,2012年发布第一版,旨在简单快速,结合C的性能和Python的可读性。设计初衷是为科学计算,处理大规模数据和计算,易于创建和操作原型代码。创始人希望Julia具有多种语言特性,如Lisp的宏、Matlab的数学运算符、Python的常规编程、R的统计领域应用等。Julia注重性能,动态类型推导使其计算性能超越其他动态语言,甚至与静态编译语言相媲美。Julia的发展目标是创造一门易用、强大、高效的语言,适用于处理大型数值问题。3.1.1Julia语言简介Julia语言的优势Julia语言设计先进:由动态语言专家设计,语法近似现有语言,结合优势如LISP的语法宏、多重分派等。Julia高性能且具表现力:能轻松优化代码性能,无需“两语言”工作流,兼具建模语言和高性能开发语言特性。Julia适合构建数字物理系统:与系统建模和数字孪生技术融合,提供高级抽象表示功能模型,比商业工具更开放灵活。3.1.2Julia语言的优势3.1.3安装并运行Julia直接安装并运行Julia安装Julia语言运行环境简单,可通过预编译的二进制程序或自定义源码编译方式。从官方中文网站(/downloads/)下载安装包后,按提示安装即可。启动Julia后,在REPL环境中即可与系统进行交互,确认安装成功并开始编写程序。Julia安装成功界面3.1.3安装并运行Julia在MWORKS.Syslab平台运行JuliaMWORKS.Syslab平台中同样提供了Julia语言环境,如下图所示在MWORKS.Syslab环境下运行Julia程序MWORKS.Syslab中下运行Julia程序JuliaJuliaREPL的几种模式Julia模式:在REPL环境中输入Julia表达式,以“julia>”开头,按Enter计算并显示结果,可使用特殊功能如结果绑定到变量、分号抑制结果显示。Package模式:用于管理程序包,通过在Julia模式下输入]进入,可安装、移除、更新程序包,通过Ctrl+C或backspace返回Julia模式。Help模式:输入?在Julia模式下转入,以“help?>”开头,可查询功能使用说明和帮助文本,自动返回Julia模式。Shell模式:输入英文分号(;)在Julia模式下进入,可执行系统命令,不适用于Windows用户执行windowsshell命令。3.1.4JuliaJuliaREPL的几种模式023.2内核级二次开发3.2.1内核级二次开发原理与步骤内核级二次开发原理MWORKS平台内置了多种学科计算算法包,涵盖线性代数、插值、微积分、傅里叶变换等领域。平台支持科学计算算法扩展,提供底层算法和上层应用的替换和扩充功能,通过上层应用调用底层算法实现科学计算功能。底层科学计算数学库架构内核级二次开发原理上层应用包含初等数学、线性代数、插值、微积分、傅里叶变换、稀疏矩阵等板块函数,供用户直接调用使用。底层算法包含BLAS/LAPACK等核心算法工具集,提供矢量、矩阵乘法、矩阵分解、线性方程组求解等基础数学功能。BLAS是基础线性代数程序集,规范发布基础线性代数操作的数值库,被广泛应用于高性能计算领域。目前已有多个BLAS库实现,包括NetlibBLAS、ACML、ATLAS、CUDASDK、GotoBLAS、OpenBLAS、ESSL、IntelMKL、GSL、RenderScriptIntrinsicBLAS等。3.2.1内核级二次开发原理与步骤内核级二次开发原理上层应用包含初等数学、线性代数、插值、微积分、傅里叶变换、稀疏矩阵等板块函数,供用户直接调用使用。底层算法包含BLAS/LAPACK等核心算法工具集,提供矢量、矩阵乘法、矩阵分解、线性方程组求解等基础数学功能。BLAS是基础线性代数程序集,规范发布基础线性代数操作的数值库,被广泛应用于高性能计算领域。目前已有多个BLAS库实现,包括NetlibBLAS、ACML、ATLAS、CUDASDK、GotoBLAS、OpenBLAS、ESSL、IntelMKL、GSL、RenderScriptIntrinsicBLAS等。3.2.1内核级二次开发原理与步骤内核级二次开发原理本部分使用平台提供的BinaryBuilder和libblastrampoline两个工具,以如何替换平台底层算法中BLAS算法库为例,介绍底层计算函数库中底层算法的替换原理和过程。BinaryBuilder是用于构建二进制包的工具库,将C库编译成动态链接库形式,并封装成_JLL文件,提供自适应操作系统的调用动态链接库接口。libblastrampoline是BLAS/LAPACK代理模块,使用PLTtrampolines提供BLAS/LAPACK解复用库,允许用户在运行时动态选择调用的后端BLAS/LAPACK库,通过检查LBT_DEFAULT_LIBS环境变量转发BLAS调用。3.2.1内核级二次开发原理与步骤内核级二次开发原理本部分使用平台提供的BinaryBuilder和libblastrampoline两个工具,以如何替换平台底层算法中BLAS算法库为例,介绍底层计算函数库中底层算法的替换原理和过程。BinaryBuilder是用于构建二进制包的工具库,将C库编译成动态链接库形式,并封装成_JLL文件,提供自适应操作系统的调用动态链接库接口。libblastrampoline是BLAS/LAPACK代理模块,使用PLTtrampolines提供BLAS/LAPACK解复用库,允许用户在运行时动态选择调用的后端BLAS/LAPACK库,通过检查LBT_DEFAULT_LIBS环境变量转发BLAS调用。3.2.1内核级二次开发原理与步骤首先利用BinaryBuilder将符合BLAS标准的BLASTest库编译成BLASTest_jll文件;撰写第三方库BLASTest.jl库并依赖BLASTest_jll库;方法核心:在BLASTest库__init__()函数中,利用BLAS.lbt_forward(libname,clear,verbose)函数,进行转发重定向到BLASTest,如果将clear设置为1,它将在设置新映射之前清除所有以前的映射,而如果将其设置为0,它将仅保留给定libname中不存在的符号;其余接口:lbt_get_config()、lbt_{set,get}_num_threads()用于设置、获取线程等内容;注意事项:所有lbt_*函数都应该被认为是线程不安全的。不要尝试同时在两个不同的线程上加载两个BLAS库。3.2.1内核级二次开发原理与步骤内核级二次开发步骤3.2.1内核级二次开发原理与步骤构建完成后,使用以下流程进行底层BLAS切换复制BLISBLAS.jl文件路径pkgdir;通过usingPkg;Pkg.dev(“pkgdir”)安装库;usingBLISBLAS后利用BLAS.get_config函数进行查看底层库依赖。查看依赖库3.2.1内核级二次开发原理与步骤算法注册/设置接口针对BLAS接口、LAPACK接口和FFTW接口,介绍算法注册/设置接口的流程BLAS接口首先,需要加载指定的BLAS算法库,相关代码如下所示上述代码的功能、参数和返回值说明如下LBT_DLLEXPORTint32_tlbt_forward(constchar*libname,int32_tclear,int32_tverbose,constchar*suffix_hint);

功能加载给定的libname,在导出列表中查找所有已注册的算法库参数[in]libnameBlAS/LAPACK库名[in]clear是否清除所有已有映射,非0为清除,0保留[in]verbose是否打印调试信息,非0打印[in]suffix_hint是否用于搜索第一个后缀库中的BLAS/LAPACK,非NULL返回算法库地址3.2.1内核级二次开发原理与步骤BLAS接口其次,需要设置底层BLAS库中的线程数,相关代码如下所示。上述代码的功能和参数说明如下可以通过如下代码获取底层BLAS库中的线程数上述代码的功能和返回值说明如下LBT_DLLEXPORTvoidlbt_set_num_threads(int32_tnum_threads);功能设置底层BLAS库中的线程数。如果出现多个库被加载,将它们全部设置为相同的值。参数[in]num_threads线程数LBT_DLLEXPORTint32_tlbt_get_num_threads();功能返回底层BLAS库配置的线程数。在这种情况下加载多个库,返回所有返回值的最大值。返回线程数3.2.1内核级二次开发原理与步骤LAPACK接口对于LAPACK接口,首先同样需要加载指定的LAPACK算法库,相关代码如下所示。上述代码的功能、参数和返回值说明如下LBT_DLLEXPORTint32_tlbt_forward(constchar*libname,int32_tclear,int32_tverbose,constchar*suffix_hint);功能加载给定的libname,在导出列表中查找所有已注册的算法库参数[in]libnameLAPACK库名[in]clear是否清除所有已有映射,非0为清除,0保留[in]verbose是否打印调试信息,非0打印[in]suffix_hint是否用于搜索第一个后缀库中的BLAS/LAPACK,非NULL是返回算法库地址3.2.1内核级二次开发原理与步骤FFT接口首先,需要设置FFT底层算法库来源。上述代码的功能和参数说明如下设置完成后可以调用get_provider进行算法库名称查看上述代码的功能和参数说明如下FFTW.set_provider!(provider;export_prefs::Bool=false)FFTW.get_provider()功能用于设置FFT底层算法库来源的外部函数接口。首选项从加载路径上的Project.toml和LocalPreferences.toml文件加载。参数[in]providerString算法库名称[in]export_prefsBoolexport_prefs选项决定是否设置的首选项应存储在LocalPreferences.toml或Project.toml功能获取LocalPreferences.toml或Project.toml中存储的算法库名称参数[out]providerString算法库名称MWORKS.Syslab科学计算平台默认线性代数库底层算法为OpenBLAS@0.3.21,需替换为0.3.13版本以解决矩阵求广义特征值时的符号差异问题。替换步骤包括编译OpenBLAS库和替换BLAS/LAPACK库两步骤,以兼容老版本工程代码。FFTW库替换可查看MWORKS帮助文档。3.2.2内核级二次开发案例内核级二次开发案例概述科学计算算法替换流程下载并安装MSYSMSYS是MinGW提供的一个小型GNU环境,在Windows下运行的Linuxbashshell环境,支持大部分Linux常用命令,类似于Cygwin。MSYS2是独立项目,重写了MSYS,安装简单,使用方便,提供pacman工具进行软件包的安装管理,类似于Ubuntu的apt-get和Centos的yum。下载地址:/distrib/。

3.2.2内核级二次开发案例编译OpenBLAS库下载MSYS运行MSYS2编译OpenBLAS库安装MinGWgcc编译器:64位系统:pacman-Smingw-w64-x86_64-gcc32位系统:pacman-Smingw-w64-i686-gcc安装Fortran编译器(用于编译LAPACK):pacman-Smingw-w64-x86_64-gcc-fortran安装Perl:pacman-S--noconfirmperl安装MSYS2的make:pacman-Smake3.2.2内核级二次开发案例下载OpenBLAS源码MWORKS.Syslab使用64位字长作为默认计算整数字长,要求编译BLAS库为64位字长(ILP64)。选择最新发布的OpenBLAS版本作为替换目标,版本为v0.3.13。详情请见:/xianyi/OpenBLAS/releases/tag/v0.3.13源码下载地址:/xianyi/OpenBLAS/releases/download/v0.3.13/OpenBLAS-0.3.13.zip 3.2.2内核级二次开发案例编译OpenBLAS库源码下载编译OpenBLAS解压下载的OpenBLAS源码,并使用cd命令切换至目标文件夹路径:cdpath_to_OpenBLAS利用以下命令编译OpenBLAS以获取ILP64的BLAS库:makeBINARY=64INTERFACE64=1编译完成后,在当前文件夹下可以找到libopenblas.dll文件。3.2.2内核级二次开发案例编译OpenBLAS库编译成功的dll库替换算法库在MWORKS.Syslab的REPL中使用BLAS.lbt_forward函数进行目标动态链接库替换。输入以下代码进行替换:BLAS.lbt_forward(verbose=true,clear=true)。参数verbose=true表示打印替换信息,clear=true表示清除其他BLAS/LAPACK库。3.2.2内核级二次开发案例替换BLAS/LAPACK库

newblaspath="path_to_newblasdll"BLAS.lbt_forward(newblaspath,clear=true,verbose=true)#=GeneratingforwardstoD:/KML/openblas321/OpenBLAS-0.3.21/libopenblas.dll->Autodetectedsymbolsuffix""->AutodetectedinterfaceILP64(64-bit)->AutodetectedgfortrancallingconventionProcessed4945symbols;forwarded4860symbolswith64-bitinterfaceandmanglingtoasuffixof""4860=#3.2.2内核级二次开发案例查看当前算法库打开MWORKS.Syslab后在REPL中输入如下代码查看当前作用的底层算法库

usingTyMathBLAS.get_config()#=julia>BLAS.get_config()LinearAlgebra.BLAS.LBTConfigLibraries:└[ILP64]libopenblas64_.dll=#3.2.2内核级二次开发案例对比结果下面以一个魔方矩阵特征值和特征向量的计算为例对别替换前后的对比OpenBLAS进行替换前后的结果,如下图所示。可以看出,广义特征向量第三和第四列存在正负性差异。OpenBLAS@0.3.13计算结果OpenBLAS@0.3.21计算结果033.3应用层二次开发3.3应用层二次开发应用层二次开发概述科学计算环境提供数学、图形、图像、符号数学、信号处理、控制系统等多维度内置函数库,允许用户开发新函数并集成到环境中扩展功能。Julia包(函数库)是提供可重用功能的项目,可通过importX或usingX来使用,具有UUID用于标识在依赖项目中。MWORKS平台二次开发基于函数库开发规范,提供资源管理接口支持函数库的开发、装载、驱动和卸载。函数库开发主要采用Julia语言,提供基础和专业函数库,同时支持集成C/C++、Python等外部语言,以及无缝调用Python的MWORKS.Syslab函数库。3.3应用层二次开发应用层二次开发基于Julia语言的函数库开发流程新建函数库组织库的目录结构定义库的外部接口设置库的依赖进行库的单元测试编写库的测例开发库的帮助文档基于Julia调用外部语言开发函数库Julia调用Python函数Julia调用C/C++其它注意事项基于Julia语言的函数库开发流程基于Julia语言的函数库开发流程主要包括新建函数库、定义库的外部接口、设置库的依赖、库的单元测试、编写库的测例、编写库的帮助文档等。新建函数库打开MWORKS.Syslab,将左侧面板切换到【包管理器】,点击开发库面板上的【新建包】按钮,打开新建包的配置界面

3.3.1应用函数库开发流程新建包的配置界面新建函数库新建包配置完成后,点击【确认】按钮,将自动生成并安装包,此时在左侧开发库面板中可以看到新建的“MyExample”包。选中此包并点击右键菜单【在新窗口中打开】,将打开此包的源码文件夹。

3.3.1应用函数库开发流程在新窗口中打开打开MyExample包的源码组织库的目录结构一个标准的包(如Revise),其目录结构如下所示docs:帮助文档文件夹examples:可选,测例文件夹images:可选,资源文件夹src:库源码文件夹test:单元测试文件夹Project.toml:项目文件LICENSE.md:许可证文件README.md:库说明文件…:用户还可以添加其它文件夹

3.3.1应用函数库开发流程(Revise)函数库的目录结构定义库的外部接口导出列表函数、类型、全局变量和常量等,可以通过export添加到模块的导出列表。通常,导出列表位于或靠近模块定义的顶部,以便读者可以轻松找到它们

3.3.1应用函数库开发流程Revise库的导出列表MyExample包的导出列表moduleMyExample

exportgreet

greet()=print("HelloWorld!")

end

#module定义库的外部接口函数定义Julia包中最常用的就是函数,函数定义由两部分组成:一是函数注释,包括函数原型和函数功能说明;二是函数的算法实现

3.3.1应用函数库开发流程Revise库的函数定义3.2.1应用函数库开发流程函数定义为MyExample包添加“domath”和“pythagoras”函数3.2.1应用函数库开发流程函数定义其中,MyExample/src/math.jl中的函数定义如下函数帮助函数帮助分为简要说明和详细手册两种形式。简要说明从函数定义中自动提取。完整帮助手册需要用户手工编写并集成到MWORKS.Syslab帮助手册。查看函数简要说明可通过开发库面板的右键菜单或在REPL中输入“?函数名”来查看。

3.3.1应用函数库开发流程查看函数简要说明设置库的依赖库的项目文件一个库往往需要依赖其它函数库,因此该库的项目文件Project.toml记录了其所有依赖信息

3.3.1应用函数库开发流程依赖库及其版本兼容要求3.3.1应用函数库开发流程project.toml,内容解释如下name:包的名称uuid:包的唯一标识authors:包的作者,格式为“[NAME<EMAIL>,NAME<EMAIL>]”version:包的版本,需符合SemVer语义化版本规则:主版本、新特性、bug修复[deps]:依赖的其他函数库,格式为“name=uuid”[compat]:对依赖库版本兼容要求,参考/v1/compatibility/[extras]:单元测试的依赖库,与[targets]一起使用[targets]:单元测试的依赖库,参考/v1/creating-packages/#Test-specific-dependencies-1设置库的依赖添加库的依赖手工修改项目文件project.tomlMWORKS.Syslab提供了“包管理器”,通过界面操作即可完成库的依赖设置。

3.3.1应用函数库开发流程设置库的依赖选择依赖的包设置库的依赖移除库的依赖手工修改项目文件project.tomlMWORKS.Syslab提供了“包管理器”,通过界面操作即可完成库的依赖设置。

3.3.1应用函数库开发流程查看库的依赖移除依赖3.3.1应用函数库开发流程进行库的单元测试单元测试对于绝大多数代码开发来说,测试是保障代码质量和可靠性的最有力的工具常用测试工具Test:为Julia标准库ReferenceTests:将结果与参考文件绑定做交叉对比测试,常用于图片的测试Suppressor:用于抑制或捕获stdout/stderr的输出结果,经常与Test联合使用Random.seed!:用于重置随机数种子,对于某些不定的情况会有用3.3.1应用函数库开发流程单元测试常用命令Julia的测试代码存放在“<包根目录>/test”文件夹内并通过“pkg>test”调用“test/runtests.jl”文件。该文件可以理解为Julia单元测试的main文件。@test:检查表达式的结果是否为true。如果为true则测试通过。@test的运行结果3.3.1应用函数库开发流程单元测试常用命令@testset:用于将各个测试组织在一起其中,不通过的测试会被标记为"Fail",此时要么是测试代码没写对,要么是对应的功能存在bug@testset的运行结果@testset"math"begin@test1+1==2@test1-1==0@test1/0==1end3.3.1应用函数库开发流程测试工具常用命令@test_throws:用于测试函数的报错行为。如希望测试一个函数按照预期的方式报错,则需要借助其进行,例如可以通过下列代码进行测试@test_throws测试结果3.3.1应用函数库开发流程测试工具常用命令@test_warn:测试warn日志信息。@test_warn可以理解为@test_logs针对warn的特殊版本3.3.1应用函数库开发流程测试工具常用命令@capture_out:用于捕获stdout输出。例如:下面的示例没办法直接用@test进行测试,因为print返回的是nothing此时,可以通过Suppressor来进行IO的捕捉从而达到测试的目的,示例代码如下3.3.1应用函数库开发流程测试工具常用命令@capture_err:用于捕获stderr输出。日志行为属于stderr输出,因此也可以通过Suppressor进行捕获@capture_err捕获stderr输出3.3.1应用函数库开发流程测试工具常用命令@test_broken:标记本应该通过的测试。在测试驱动的开发模式TDD(testdrivendevelopement)下,有一些功能暂时还没开发完成从而导致一些测试无法通过。这与@test最大的差别在于@test_broken不会影响单元测试的最终结果。@test_broken标记的测例在CI/CD中依然会显示为绿色(通过)而非红色(不通过)。类似的还有@test_skip,它会直接跳过执行,但留下一个broken记录。3.3.1应用函数库开发流程测试工具常用命令@inferred:测试类型不稳定。例如,下面这种类型不稳定的代码在Julia下会得到很糟糕的速度为此,我们可以使用@inferred来捕捉这种类型不稳定@inferred测试类型是否稳定3.3.1应用函数库开发流程测试工具常用命令在日常开发过程中,也可以通过@code_warntype来检查类型不稳定,例如下面这样检查类型是否稳定3.3.1应用函数库开发流程测试工具常用命令Random.seed!:固定随机数种子。如果一个函数内部有rand等随机行为,则每次的结果可能会不一样。这时可以选择两种方案测试基本属性(而非具体数值):例如尺寸、值域范围、数值分布等;使用随机数种子进行固定编写库的测例单元测试主要用于自动化回归测试,不适合用户学习、使用和演示。可在包根目录下新增一个examples文件夹,用于存放使用示例,提供可运行体验。例如,TiffImages库采用这种做法,examples文件夹中的示例可供体验。Julia函数库可以不带examples。

3.3.1应用函数库开发流程TiffImages库的示例集开发库的帮助文档Julia社区提供的Documenter.jl功能有限,无法满足工业软件使用需求。推荐使用同元提供的帮助文档开发工具来完成自定义函数库的帮助文档编写与发布。3.3.1应用函数库开发流程MWORKS.Syslab帮助文档效果3.3.1应用函数库开发流程新建帮助文档工程新建工程配置:点击Ribbon工具栏“新建帮助工程”图标,填写中文和英文名称。新建帮助工程3.3.1应用函数库开发流程新建帮助文档工程帮助文档项目点击“浏览”选择项目文件夹“SyslabHelpSourceCode”。选择帮助文档项目文件夹3.3.1应用函数库开发流程新建帮助文档工程文件夹选择完成后,选择“是”使用模板,点击“新建帮助工程”按钮,开始新建。新建完成后,右下角会“新建帮助文档工程成功,生成目录为…”,此时,左侧资源管理器中已经打开新建的工程文件夹新建帮助文档工程成功3.3.1应用函数库开发流程新建帮助文档工程工程目录结构:左侧资源管理器中的CUSTOMPLOT目录内是提供的模板内容。.public:帮助文档资源文件,是存放静态图片、pdf、MP4等等文件的地方。建议资源文件目录结构与md文件目录结构保持一致。帮助文档模板帮助文档资源文件3.3.1应用函数库开发流程新建帮助文档工程.vuepress\config:其中,config文件夹内容如下extensionConfig.js:外部扩展配置文件;keyword.js:搜索栏关键词集合,添加专有名词时,直接在数组中添加配置文件关键词集合3.3.1应用函数库开发流程新建帮助文档工程menuListData.js:菜单大纲配置,根据界面配置自动生成。publicConfig:公共配置,用户可以设置搜索忽略的文件夹和特殊符号的markdown文件的路径。Doc:文档内容,即放置文档md文件的地方。文件夹里的md文件目录层级与帮助文档目录层级对应文档内容对应帮助文档目录3.3.1应用函数库开发流程新建帮助文档工程Example:示例内容,即放置示例md文件的地方文件夹里的md文件目录层级与帮助文档目录层级对应示例内容帮助文档示例3.3.1应用函数库开发流程编辑帮助文档新建的帮助文档包含完整示例,用户可编辑、预览和生成文档。在当前资源管理器打开的文件夹中,选择一个md文件,右键菜单选择“Syslab:预览帮助文档”以打开编辑工具栏。打开已有帮助文档工程可通过MWORKS.Syslab左侧资源管理器打开工程文件夹。3.3.1应用函数库开发流程生成帮助文档MWORKS.Syslab左侧资源管理器打开工程文件夹CustomPlot,点击Ribbon工具栏“生成帮助文档”图标,生成配置页面生成帮助文档配置3.3.1应用函数库开发流程生成帮助文档用户可以对“扩展模块名称”进行修改,“扩展模块名称”与帮助文档左侧边栏中的模块对应。扩展模块名称3.3.1应用函数库开发流程生成帮助文档用户可以选择“文档”、“示例”、“函数”和“视频”中的任意模块进行打包。切换选项3.3.1应用函数库开发流程生成帮助文档“切换选项”与帮助文档的以下模块对应。“切换选项”文档对应3.3.1应用函数库开发流程生成帮助文档用户可以通过“大纲配置”来配置帮助文档的导航栏菜单。大纲配置的层级和链接即对应生成后的帮助文档左侧导航栏层级。大纲配置3.3.1应用函数库开发流程生成帮助文档用户在修改大

温馨提示

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

评论

0/150

提交评论