首页/文章/ 详情

开源协议全解析:从GPL到Apache,了解你的选择

21天前浏览912

本文摘要:(由ai生成)
本文介绍了开源协议在软件开发中的重要性,列举了几种常用的开源协议如MIT、Apache、BSD、MPL、LGPL和EPL,并重点阐述了GPL协议的特点、历史、目的、核心原则、传染性、版本、遵守要求以及局限性与商业应用。GPL作为自由软件运动的基石,确保了软件的四大自由,并在保护软件自由和促进开源社区发展方面发挥了重要作用。选择合适的开源协议对于开发者和企业来说至关重要,它们确保了软件自由和创新的平衡。

 现在二次开发拓展越来越广。开发不再仅仅从软件的API开发,而是越来越多地依赖于现有的软件模块来加速开发进程。这些模块使得开发工作更加高效和系统化。

然而,在利用这些模块进行开发时,不可避免地会遇到开源协议的问题。开源协议是一套规定,它们定义了如何使用、修改和分发开源软件。     
在软件开发的世界里,开源协议扮演着至关重要的角色。那么,什么是开源协议呢?
开源协议是一种授权条款,用于规范软件的使用、复 制、修改和分发等行为。它为开发者提供了一种合法的方式来共享他们的代码,同时也保护了他们的权益。

常用的开源协议有多种,其中一些较为知名的包括:GPL(GNU General Public License,GNU 通用公共许可证)、Apache License、MIT License 、BSD Licenses等。这些协议在适用范围、限制条件和授权方式等方面各有不同。

1. MIT License:这是最宽松的开源协议之一,它允许用户几乎无限制地使用、复 制、修改和分发软件,无论是个人还是商业用途。

2. Apache License 2.0:提供了强大的专利保护,适用于商业和非商业项目。要求在分发的软件中保留版权和免责声明。

3. BSD Licenses:包括BSD 2-Clause和BSD 3-Clause两种形式,都非常宽松,允许商业使用和修改,但要求保留版权声明。

4. Mozilla Public License 2.0 (MPL 2.0):要求任何分发的源代码必须以相同许可证发布,同时提供了专利保护。

5. GNU Lesser General Public License (LGPL):适用于库文件,允许商业软件通过链接库的方式使用LGPL代码而不必开源。

6. Eclipse Public License (EPL):适用于Eclipse项目,允许商业和非商业使用,要求分发时提供源代码。


GPL:

GPL是自由软件运动的基石,GPL 是一种具有强烈 copyleft(著作权)性质的开源协议。其主要特点之一是传染性。所谓传染性,是指如果一个软件使用了受 GPL 协议保护的代码,那么这个软件也必须以 GPL 协议开源。这确保了软件的自由传播和不断发展。它的核心目标是确保软件的自由使用、学习和修改,以及保障这些自由在软件的传播中得以延续。

  1. 历史和目的:由自由软件基金会(FSF)发布,旨在保护软件用户的四大自由,GPL 所强调的 “四大自由” 分别是:使用自由、学习自由、修改自由和分发自由。

  • 使用自由意味着任何人都可以使用该软件,无论出于何种目的。

  • 学习自由允许用户查看和理解软件的源代码,从而更好地学习和掌握编程技术。

  • 修改自由使得用户可以根据自己的需求对软件进行修改和定制。

  • 分发自由则确保用户可以将修改后的软件再次分发出去,与他人共享。

2. 核心原则:GPL赋予用户自由运行、学习、分享和改进软件的权利。

3. “传染性”:GPL要求任何包含或基于GPL代码的作品也必须以GPL许可证发布。

4. 版本:GPL有三个主要版本,每个版本都反映了自由软件运动的发展和对现代软件实践的适应。

5. 遵守GPL:开发者必须提供源代码,保留版权和免责声明,并包含GPL许可证副本。

6. 局限性与商业应用:GPL不排斥商业使用,许多公司通过提供技术支持和增值服务实现商业化。

GPL 协议在保护软件自由和促进开源社区发展方面发挥了重要作用。然而,对于一些商业开发者来说,GPL 的传染性可能会带来一些挑战。在选择开源协议时,开发者需要根据自己的项目需求和目标来权衡各种因素。

开源协议是开源生态系统的法律基础,它们确保了软件自由和创新的平衡。GPL作为其中最具标志性的许可证之一,不仅保障了软件的自由,也为商业创新提供了可能。了解并正确应用这些协议,对于开发者和企业来说至关重要。在后续的文章中,我们将继续探索其他开源协议。


来源:TodayCAEer
二次开发通用
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-11-01
最近编辑:21天前
TodayCAEer
本科 签名征集中
获赞 18粉丝 28文章 249课程 0
点赞
收藏
作者推荐

快速学会一项分析-随动载荷-非线性自适应准则和非线性中间结果输出-OS-T:1510

1. Follower Loads: 在OptiStruct中,Follower Loads指的是那些随着结构变形而变化的载荷。这些载荷可以是集中力或者是作用在元素面上的压力。对于集中力,Follower Loads不依赖于元素面的面积;因此,无论选择哪种激活选项,结果都将保持不变。而对于压力载荷,则可能依赖于元素面的面积,并且可能需要考虑载荷方向的更新 。在非线性分析中,如果将应用的载荷视为跟随载荷,那么载荷的方向和/或综合大小将在整个分析过程中随着几何形状的变化而更新 。2. 非线性自适应准则(NLADAPT):NLADAPT用于控制非线性分析中的增量步长。它可以设置最大和最小增量步、是否使用固定增量步以及控制不收敛后减小增量步的次数 。在非线性分析中,OptiStruct采取的策略是施加增量载荷,迭代求解直至残差小至给定范围内,更新方程然后施加下一个增量载荷。NLADAPT卡片用于设置最大和最小增量步长,以及在给定迭代次数内不收敛后以减小增量步的次数 。3. 输出非线性运行的中间结果:在非线性分析中,用户可能需要在分析过程中获取中间结果。这可以通过NLOUT卡片来控制,其中可以设置中间结果输出次数和最终结果输出 。OptiStruct提供了在非线性分析中输出中间结果的能力,这对于跟踪分析过程和理解结构响应非常有用。用户可以通过设置NLOUT卡片来控制增量输出,包括在小位移非线性和大位移非线性分析中的输出 。本教程演示了如何设置Follower Loads、非线性自适应准则(NLADAPT) 和以及如何为非线性分析输出中间结果。在开始之前,请将本教程中使用的文件复 制到您的工作目录。http://majorv.help.altair.com/minorv/simulation/tutorials/hwsolvers/optistruct/OS-T-1510/beam_fllwer.zip http://majorv.help.altair.com/minorv/simulation/tutorials/hwsolvers/optistruct/OS-T-1510/disk_fllwer.zip 您将看到Follower Loads的激活如何导致模型行为和结果的显著差异,以及如果不考虑Follower load机制,可能会输出多么不准确的结果。您将看到集中力(梁模型)和压力(橡胶盘模型)的Follower Loads的激活。图1.模型图示:Follower Loads。集中力- 梁(左),压力- 橡胶盘模型(右)一、启动HyperMesh并设置OptiStruct用户配置文件 1.启动HyperMesh。此时将打开User Profile对话框。 2.选择OptiStruct,然后单击OK。这将加载用户配置文件。它包括相应的模板、宏菜单和导入阅读器,将HyperMesh的功能缩减为与生成OptiStruct模型相关的功能。二、设置梁模型 梁模型是由CHEXA单元构成的弯曲钢梁。对梁的顶部横截面施加100 N的力。梁的底部受单点约束(SPC) 的约束。 2.1导入模型 1.点击File>Import>Solver Deck。导入选项卡将添加到您的选项卡菜单中。2.对于File type ,选择OptiStruct。3.选择文件图标。此时将打开Select OptiStruct文件Browser。4.选择保存到工作目录的beam_fllwer.fem文件。5.单击Open。6.单击Import,然后单击Close以关闭Import选项卡。2.2提交作业而不激活Follower Loads 导入的模型已经包含材料、属性、边界条件、大位移的激活和Load Step。在此 Step中,您将直接运行模型以生成结果。 1.在Analysis页面中,输入OptiStruct面板。图2.访问OptiStruct面板 2.单击input file字段后面的save as。 此时将打开Save As对话框。 3.选择要写入OptiStruct模型文件的目录,然后在File name字段中输入模型名称beam_fllwer.fem。 对于OptiStruct求解器模型,建议使用.fem扩展名。 4.单击Save。 beam_fllwer.fem文件的名称和位置将显示在输入文件字段中。 5.将导出选项切换设置为all。 6.将run options切换设置为analysis。 7.将内存选项切换设置为memory default。 8.单击OptiStruct。这将启动OptiStruct作业。 如果作业成功,则新结果文件应位于从beam_fllwer.fem中选择的目录中。beam_fllwer.out文件是查找错误消息的好地方,如果存在任何错误,这些错误消息可以帮助调试输入模型。 2.3设置模型 2.3.1.激活Follower Loads 集中力的Follower Loads不取决于它们所应用网格的单元面的面积。因此,对于在FLLWER Bulk Data Entry或PARAM,FLLWER条目上选择的任何激活选项,结果将保持不变。由于您只有一个SUBCASE,因此选择参数PARAM,FLLWER来激活该模型的Follower Loads。 1.在Model Browser的Cards文件夹中,单击PARAM。 PARAM条目将显示在Entity Editor中。 2.激活Follower Loads。 a.选中FLLWER旁边的框。 b.将VALUE设置为1。 选项1、2和3对集中载荷具有相同的效果,因为不涉及单元面区域。使用该参数而不是Bulk Entry可激活模型中所有SUBCASE的Follower加载。如果您只想为特定SUBCASE激活Follower Loads,则可以使用FLLWER Bulk Data和SUBCASE条目。图3.2.3.2.激活非线性自适应条件 允许您定义非线性自适应准则的参数可通过NLADAPT批量数据和SUBCASE条目获得。如果遇到收敛问题,通常可以为非线性分析指定时间步长和收敛标准。请参阅本练习中的NCUTS参数。同样,您可以定义DTMIN和DTMAX参数,其他一些参数(如NOPCL和NSTSL)适用于带接触的模型。 1.创建load step input。 a.在Model Browser中,右键单击并选择Create>Load Step Inputs。 b.对于Name ,输入NLADAPT。 c.对于Config type ,选择Time step Parameters。 默认类型为NLADAPT d.选中NCUTS旁边的框,然后在VALUE字段中输入5(默认)。 这向OptiStruct表明,允许减少时间增量的最大缩减次数为5。如果迭代收敛的特定时间增量需要更多的削减,则OptiStruct将出错。图4.2.编辑Nonlinear Static load Step。 a.单击Nonlinear Static Load Step以在Entity Editor中打开。 b.单击NLADAPT旁边的字段,然后单击Load step Inputs。 图5. c.在Select Load step Inputs对话框中,选择NLADAPT,然后单击OK。 图6.2.3.3.激活非线性中间结果 允许您激活Nonlinear Intermediate Results的参数可通过NLOUT Bulk Data和Subcase条目获得。输出中间结果的间隔数由NINT参数控制。SVNONCNV参数可用于激活/停用非收敛解的结果输出。目前默认开启(设置为YES)。1.创建load step input。 a.在Model Browser中,右键单击并选择Create>Load Step Inputs。 b.对于Name ,输入NLOUT。 c.对于Config type ,选择Output parameters。 默认类型为NLOUT。 d.选中NINT旁边的框,然后在VALUE字段中输入10(默认值)。 这向OptiStruct指示请求中间结果的最大间隔数为10。如果从任何 Loadsn到 Loadsn+1 的 Loads增量大于1/NINT(在这种情况下,1/10 为0.1),则与 Loads级别n+1 对应的结果将被保存以供输出;否则,不会保存结果。 Note:这个参数在增量迭代求解过程中无法控制自适应 Loads大小的选择。它仅指定在求解过程中保存结果以供输出的间隔数。 2.编辑Nonlinear Static load Step。 a.单击Nonlinear Static load Step以在Entity Editor中打开。 b.单击NLOUT旁边的字段,然后单击Load step Inputs。图7. c.在Select Load step Inputs对话框中,选择NLOUT,然后单击OK。 图8.2.4使用Follower Loads激活提交作业 该模型现在由已被标识为Follower Loads的 Loads组成。此外,您还学习了如何激活非线性分析的自适应标准,以及如何以中间增量请求结果。 1.在Analysis页面中,输入OptiStruct面板。图9.访问OptiStruct面板 2.单击input file字段后面的save as。此时将打开Save As对话框。 3.选择要写入OptiStruct模型文件的目录,然后在File name字段中输入模型名称beam_fllwer_ON.fem。 对于OptiStruct求解器模型,建议使用.fem扩展名。 4.单击Save。beam_fllwer_ON.fem文件的名称和位置将显示在输入文件字段中。 5.将导出选项切换设置为all。 6.将run options切换设置为analysis。 7.将内存选项切换设置为memory default。 8.单击OptiStruct。这将启动OptiStruct作业。 如果作业成功,则新结果文件应位于从中选择beam_fllwer_ON.fem的目录中。beam_fllwer_ON.out文件是查找错误消息的好地方,如果存在任何错误,这些错误消息可以帮助调试输入模型。2.5查看结果 位移和单元应力是默认计算的,可以使用HyperView中的云图面板进行绘制。 比较未激活Follower Load的模型之间的位移结果。 1.启动HyperView。 2.单击 此按钮可将页面拆分为两个窗口。 3.通过单击并导航到您的工作目录来加载结果文件。 a.在第一个窗口中,加载beam_fllwer.h3d文件。 b.在第二个窗口中,加载beam_fllwer_ON.h3d文件。 4.为每个窗口设置云图。 a.单击窗口以将其激活,然后单击 工具栏上的。 b.将Result type设置为Displacement (v)。 c.单击Apply。Note:既然你已经通过NLOUT请求了中间迭代的结果,你会看到所有中间迭代的结果。 5.在Results Browser中,点击Load Factor,然后选择最终增量Load Factor = 1.000000E+00。图10. 此时将显示Displacement contour结果。您可以看到,从动力的激活显著改变了位移分布。 图11.三、设置橡胶盘模型 橡胶盘对由MATHE单元构成的橡胶盘进行建模。对橡胶盘施加1 N/mm2 的压力 Loads。磁盘的圆周通过单点约束(SPC) 进行约束。 3.1导入模型 1.点击File>Import>Solver Deck。导入选项卡将添加到您的选项卡菜单中。 2.对于File type ,选择OptiStruct。 3.选择文件图标。 此时将打开Select OptiStruct文件Browser。 4.选择保存到工作目录的disk_fllwer.fem文件。 5.单击Open。 6.单击Import,然后单击Close以关闭Import选项卡。 3.2设置模型 3.2.1.创建Follower Load Bulk Data条目 在梁模型中,集中力的Follower Loads不取决于它们所应用网格的单元面的面积。因此,对于在FLLWER Bulk Data Entry或PARAM,FLLWER条目上选择的任何激活选项,结果将保持不变。此外,由于您只有一个SUBCASE,因此选择参数PARAM,FLLWER来激活该模型的Follower Loads。 在此圆盘模型中, Loads是压力 Loads,这可能取决于它们所施加的单元面的面积。此外,您还有多个SUBCASE来展示不同FLLWER选项的效果。在OptiStruct帮助的FLLWER批量数据输入中,您将看到OPT参数,其中包含以下用于计算Follower Loads的选项: = -1, 0 根据推杆力计算未激活。 = 1 (默认) Follower效果已激活。对于压力 Loads,在求解过程中,单元表面积和 Loads方向都会更新。对于集中力,仅更新力方向。 = 2 Follower效果已激活。对于压力 Loads,在求解过程中仅更新单元表面积(不更新 Loads方向)。对于集中力,只涉及力方向,这与OPT = 1 相同。 = 3 Follower效果已激活。对于压力 Loads,仅更新 Loads方向(不更新单元表面积)。对于集中力,仅更新力方向,这与OPT = 1 相同。 在Model Browser中,右键单击并选择Create>Load Collector。 默认的load collector Template将显示在Entity Editor中。 1.对于Name ,输入FLLWER_1。 2.将Card Image设置为FLLWER。 3.将OPT设置为1。图12. 4.再创建两个名为FLLWER_2 和FLLWER_3 的Load Collector 。 a.将Card Image设置为FLLWER。 b.将OPT设置为2表示FLLWER_2,将OPT设置为3表示FLLWER_3。 3.2.2.引用FLLWER Bulk条目 现在应在Subcase部分中选择创建的FLLWER批量数据条目。 1.编辑fllwer_1 Load Step。 a.在Model Browser的Load Steps文件夹中,点击fllwer_1。Load Step将显示在Entity Editor中。 b.选中FLLWER旁边的框。 c.对于ID,单击Unspecified>Loadcol。在Select Loadcol对话框中,选择FLLWER_1,然后单击OK。图13.2.编辑fllwer_2 Load Step。 a.在Model Browser的Load Steps文件夹中,点击fllwer_2。Load Step将显示在Entity Editor中。 b.选中FLLWER旁边的框。 c.对于ID,单击Unspecified>Loadcol。在Select Loadcol对话框中,选择FLLWER_2,然后单击OK。3.编辑fllwer_3 Load Step。 a.在Model Browser的Load Steps文件夹中,点击fllwer_3。Load Step将显示在Entity Editor中。 b.选中FLLWER旁边的框。 c.对于ID,单击Unspecified>Loadcol。在Select Loadcol对话框中,选择FLLWER_3,然后单击OK。3.2.3.激活非线性中间结果 允许您激活Nonlinear Intermediate Results的参数可通过NLOUT Bulk Data和Subcase Entries获得。 输出中间结果的间隔数由NINT参数控制。SVNONCNV参数可用于激活/停用非收敛解的结果输出。目前默认开启(设置为YES)。1.创建load step input。 a.在Model Browser中,右键单击并选择Create>Load Step Inputs。 b.对于Name,输入NLOUT。 c.对于Config type,选择Output Parameters。 默认类型为NLOUT。 d.选中NINT旁边的框,在VALUE字段中输入10 (Default)。 这向OptiStruct指示请求中间结果的最大间隔数为10。如果从任何 Loadsn到 Loadsn+1 的 Loads增量大于1/NINT(在这种情况下,1/10 为0.1),则与 Loads级别n+1 对应的结果将被保存以供输出;否则,不会保存结果。Note:这个参数在增量迭代求解过程中无法控制自适应 Loads大小的选择。它仅指定在求解过程中保存结果以供输出的间隔数。图14.2.编辑fllwer_1 Load Step。 a.在Model Browser的Load Steps文件夹中,点击fllwer_1。 b.对于NLOUT,单击Unspecified>Load step inputs。 c.在Select Load step Inputs对话框中,选择NLOUT,然后单击OK。 图15.3.编辑fllwer_2、fllwer_3 和NO_fllwer Load Step。 a.在Model Browser的Load Steps文件夹中,点击要编辑的Load Step。 Load Step将显示在Entity Editor中。 b.对于NLOUT,单击Unspecified>Load step inputs。 c.在Select Load step Inputs对话框中,选择NLOUT,然后单击OK。3.3提交Disk Model的Job该模型现在由已被标识为Follower Loads的 Loads组成。此外,您还学习了如何以中间增量请求结果。1.在Analysis页面中,输入OptiStruct面板。图16.访问OptiStruct面板2.单击input file字段后面的save as。此时将打开Save As对话框。 3.选择要写入OptiStruct模型文件的目录,然后在File name字段中输入模型名称disk_fllwer.fem。对于OptiStruct求解器模型,建议使用.fem扩展名。4.单击Save。disk_fllwer.fem文件的名称和位置将显示在输入文件字段中。5.将导出选项切换设置为all。6.将run options切换设置为analysis。7.将内存选项切换设置为memory default。8.单击OptiStruct。这将启动OptiStruct作业。如果作业成功,则新结果文件应位于从disk_fllwer.fem中选择的目录中。disk_fllwer_ON.out文件是查找错误消息的好地方,如果存在任何错误,这些错误消息可以帮助调试求解器模型。3.4查看结果位移和单元应力是默认计算的,可以使用HyperView中的云图面板进行绘制。比较激活和未激活Follower Load的模型之间的位移结果。 1.启动HyperView。 2.单击 此按钮可将页面拆分为两个窗口。 3.将结果从Subcase 1 加载到第一个窗口。 a.单击第一个窗口将其激活。 b.通过单击加载结果文件。在面板区域中,加载disk_fllwer_ON.h3d结果文件,然后单击Apply。 c.在Results Browser中,选择Subcase 1 (fllwer_1)和Load Factor= 1.000000E+00。图17. 4.加载来自其余SUBCASE的结果。 a.激活第二个窗口并加载disk_fllwer_ON.h3d结果文件。在Results Browser中,选择Subcase 2 (fllwer_2)。 b.激活第三个窗口并加载disk_fllwer_ON.h3d结果文件。在Results Browser中,选择Subcase 2 (fllwer_3)。 c.激活第四个窗口并加载disk_fllwer_ON.h3d结果文件。在Results Browser中,选择Subcase 2 (NO_fllwer)。 5.为每个窗口设置云图。 a.单击窗口以将其激活,然后单击 工具栏上的。 b.将Result type设置为Displacement (v)。 c.单击Apply。Note:既然你已经通过NLOUT请求了中间迭代的结果,你会看到所有中间迭代的结果。此时将显示Displacement contour结果。您可以看到,从动力的激活显著改变了位移分布。此外,我们还可以看到,由于SUBCASE3 (OPT=3) 更新了 Loads方向,但更新了面积,因此SUBCASE3 在网格点处的力(Pressure*Area) 分布很低,与OPT=1 和2 相比,位移结果反映了这一点。图18. 来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈