做翻译 网站吗,高端企业网站开发,sem优化软件选哪家,源码论坛网站需要多大的空间这是协作翻译的第四章#xff0c;翻译完感觉挺有意思的#xff0c;分享给大家一起看看。4.更新OpenFOAM版本4.1 版本管理OpenFOAM以两种不同的方式分发。一种方式是使用Git仓库下载的仓库版本。仓库版本的版本号由附加的x标记#xff0c;例如 OpenFOAM2.1.x。该版本会经常更… 这是协作翻译的第四章翻译完感觉挺有意思的分享给大家一起看看。4.更新OpenFOAM版本4.1 版本管理OpenFOAM以两种不同的方式分发。一种方式是使用Git仓库下载的仓库版本。仓库版本的版本号由附加的x标记例如 OpenFOAM2.1.x。该版本会经常更新并在某种程度上是开发版本。这个版本的更改和更新发布很快但是此版本中出现错误的可能性也更大。由于此发行版经常更新因此在一个系统上安装的2.1.x版本的内容和另一个系统上安装的2.1.x版本可能会不同。因此每个安装都有附加的信息来标记不同版本的OpenFOAM。版本号随附一个哈希码以唯一地标识仓库版本的各个内部版本请参见列表9。每当更新并重新编译OpenFOAM时此哈希码都会更改。如果内部版本相同则两个OpenFOAM安装处于相同级别。Build : 2.1. x -9 d344f6ac6af列表 9: 仓库版本的完整版本标识除了仓库版之外还有软件包版本。与仓库版本相比这些更新的间隔时间更长。软件包发行版的版本号不包含x例如OpenFOAM 2.1.1。与仓库版相反所有相同版本号的安装都是相同的。由于发行周期较长因此认为发行包不太容易出现软件错误。这些软件版本有几种不同的类型。这些是针对广泛使用的Linux发行版(UbuntuSuSE和Fedora)的预编译软件包也是一个源码包。可以将源代码包安装在可编译源代码的任何系统上(通常是运行Linux的各种计算机例如高性能计算集群甚至运行其他操作系统的计算机)。例如Mac OSX甚至是Windows).4.2 检查更新如果从仓库版本安装了OpenFOAM则更新非常简单。要更新OpenFOAM时只需使用Git来检查是否有更新的源文件。在终端中切换到OpenFOAM安装的根目录然后执行git pull。如果仓库中有较新的文件Git会下载它们并显示已更改文件的摘要。如列表10所示。userhost :∼$ cd $FOAM_INST_DIRuserhost :∼/ OpenFOAM$ cd OpenFOAM -2.1. xuserhost :∼/ OpenFOAM / OpenFOAM -2.1. x$ git pullremote : Counting objects : 67 , done .remote : Compressing objects : 100% (13/13) , done .remote : Total 44 ( delta 32) , reused 43 ( delta 31)Unpacking objects : 100% (44/44) , done .From git :// github . com / OpenFOAM / OpenFOAM -2.1. x72 f00f7 ..21 ed37f master - origin / masterUpdating 72 f00f7 ..21 ed37fFast - forward.../ extrude / extrudeToRegionMesh / createShellMesh .C | 10 -.../ extrude / extrudeToRegionMesh / createShellMesh .H | 7 -.../ extrudeToRegionMesh / extrudeToRegionMesh .C | 157 - - - - -.../ Templates / KinematicCloud / KinematicCloud .H | 6 -.../ Templates / KinematicCloud / KinematicCloudI .H | 7 .../ baseClasses / kinematicCloud / kinematicCloud . H | 47 -6 files changed , 193 insertions () , 41 deletions ( -)列表 10: 有可用的更新如果OpenFOAM是最新的则Git也将输出相应的消息如列表11userhost :∼/ OpenFOAM / OpenFOAM -2.1. x$ git pullAlready up -to - date .列表 11: OpenFOAM是最新的4.3 仅检查更新如果您只想检查更新而没有实际进行更新则可以使用特殊选项来调用Git(请参见列表12和13)。在这种情况下Git仅检查仓库并显示其发现的结果而不会实际进行任何更改。负责此操作的选项是--dry-run。注意这里调用了git fetch而不是git pull。git pull调用git fetch下载远程文件然后调用git merge将检索到的文件与本地文件合并。因此检查更新实际上是通过git fetch完成的。userhost :∼$ cd OpenFOAM / OpenFOAM -2.0. x/userhost :∼/ OpenFOAM / OpenFOAM -2.0. x$ git fetch --dry - run -vremote : Counting objects : 189 , done .remote : Compressing objects : 100% (57/57) , done .remote : Total 120 ( delta 89) , reused 93 ( delta 62)Receiving objects : 100% (120/120) , 17.05 KiB , done .Resolving deltas : 100% (89/89) , completed with 56 local objects .From git :// github . com / OpenFOAM / OpenFOAM -2.0. x5 ae2802 ..97 cf67d master - origin / masteruserhost :∼/ OpenFOAM / OpenFOAM -2.0. x$列表 12: 仅检查更新–可用更新userhost :∼$ cd OpenFOAM / OpenFOAM -2.1. x/userhost :∼/ OpenFOAM / OpenFOAM -2.1. x$ git fetch --dry - run -vFrom git :// github . com / OpenFOAM / OpenFOAM -2.1. x [ up to date ] master - origin / masteruserhost :∼/ OpenFOAM / OpenFOAM -2.1. x$列表 13: 仅检查更新–最新4.4 安装更新在通过git pull下载更新后需要编译更改的源文件才能更新可执行文件。这与安装OpenFOAM时所执行的方法相同。只需调用./Allwmake进行编译。该脚本可以识别更改因此不会再次编译未更改的文件。因此更新后进行编译所需的时间少于安装OpenFOAM时所需的时间。4.4.1 工作流程清单14显示了更新现有OpenFOAM安装所需的命令。但这仅适用于仓库版本(例如OpenFOAM-2.1.x)的更新。点版本(OpenFOAM的版本号中没有x)的更新方式与仓库版本的更新方式不同。为简单起见可以将Point Release(OpenFOAM-2.1.0→OpenFOAM-2.1.1)的更新视为全新安装请参见第3.6节。将清单14中的前两个命令更改为OpenFOAM安装目录。然后通过调用git pull下载最新的源文件。wclean all这一句可以省略。但是如果编译以某些错误结束则此命令通常可以解决问题请参见第4.5.2节。最后一条语句会编译源文件。如果以前未调用wclean all则仅编译发生更改的文件。如果调用了wclean all则将编译所有内容。这可能将花费更长的时间。如果有足够的时间进行更新(例如整夜)则应在编译之前调用wclean all。在大多数情况下这将确保更新源的成功编译。cd $FOAM_INST_DIRcd OpenFOAM -2.1. xgit pullwclean all (可以省略)./ Allwmake列表 14: 更新现有的OpenFOAM安装的完整的工作流程4.4.2 问题排查如果编译报告了一些错误则再次调用./Allwmake会很有帮助。这大大减少了成功操作的输出(译者注成功编译的源文件将不再显示只会在出错的位置显示错误信息)因此更容易找到编译器的实际错误消息。4.5 更新问题4.5.1 缺少安装包如果对操作系统进行了升级则可能会发生确实安装包的情况这意味着在更新过程中已删除了一些相关的软件包(例如如果需要这些软件包来编译OpenFOAM但操作系统“认为”这些软件包不是必需的)。因此如果在操作系统升级后重新编译OpenFOAM失败则可能是缺少软件包的原因。4.5.2 库的更新库更新后必须重新编译它们。否则求解器将调用尚未编译的库函数。为了避免此问题必须重新编译相应的库。wclean all列表 15: 使用wclean准备重新编译一个更暴力的方式是重新编译整个OpenFOAM而不是重新编译更新的库。4.5.3 更新的源无法编译在某些情况下例如当源文件的组织发生变化时源文件将无法立即编译。又或者如果有其他未知原因导致无法编译源代码则可以选择完全重新编译OpenFOAM。尽管编译OpenFOAM需要花费时间但与跟踪所有错误相比这可能花费的时间更少。要重新编译OpenFOAM需要重置源。有一个简单的命令可以解决此问题而不是删除OpenFOAM并重新安装。如列表16所示git clean - dfx列表 16: 使用git重置源列表16中列出的命令使Git擦除没有跟踪的所有文件。这意味着所有不属于git-repository的文件都将被删除。在这种情况下将重置为OpenFOAM的官方git仓库版本。git clean从当前目录开始递归删除所有不受版本控制的文件。选项-d表示还删除了未跟踪的文件夹。执行列表16中的命令后必须按照3.3节中的说明重新编译源。4.5.4 自有代码无法运行更新您的OpenFOAM的仓库版本会产生有趣的效果。当OpenFOAM的库更新时它们的实现可能会更改。即使更新的代码与先前的代码完全兼容更新后的编译库看起来也可能不同。因此即使更新保持了代码的兼容性更新也可能破坏二进制兼容性。因此需要在基础OpenFOAM安装更新之后重新编译您自己的代码。更新OpenFOAM之后加载丢失了二进制兼容性的库时会导致分段错误。发生这种情况是因为我们自己的求解器在启动时会动态加载所需的OpenFOAM库但是库更新之后该库某些对象的内存布局已更改了。有关此主题的更多信息请参见以下资源https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2Bhttps://en.wikipedia.org/wiki/Binary_code_compatibilityhttps://en.wikipedia.org/wiki/Source_code_compatibility失去二进制兼容性不会在每次更新后发生并且并非在每个库中都发生。因此在更新以及成功使用其他自己创建的求解器和库的很长一段时间之后您可能才会遇到此类问题。因此用户可能无法立即清楚这些问题的根源。如果您的代码突然由于没有原因的无法正常运行了请重新编译并查看会发生什么。