为了实现参数文件操作,我不打算自己写这样的代码。以前使用过AMROC,觉得它的ControlDevice那个类很好,完全透明的参数文件读取,于是想拿过来用用。这样就要求需要外部参数的类必须由一个controlable类派生,包含一个提供参数来源(在这里是参数文件)的ControlDevice成员对象,并重载一个有关参数注册的方法register_at(ControlDevice &, const string &)。所以我又修改了Case、BoundaryCondtion类,并加入了一个TimeControl类作为计算时间管理,因为这三个都是需要外部参数的。
到这里,我觉得需要测试一下,看看这三个类能否正确操作参数文件,读取正确的参数。于是问题就来了,由于Case里面包含有Mesh、SolverControl类的引用,但是这些类还没实现,在代码编译时就会有问题。没法子,我只好暂且删除这些成员变量,完了再添加上去。这样类图就成为如下所示
然而使用别人的类看来不是一件容易的事情。那些参数文件操作类本身还是不算简单的,因为设计者G. Berti的本意是能够从广义外部的设备(文件、设备、GUI……)提取参数。当我企图把单独编译这个ExternalControl代码时就发现这玩意还连着另外一些名为Utility东西的代码,而且再UNIX下开发时G. Berti考虑了多种编译器不同的情况,使得需要定义不少宏来设置编译选项。我考虑Ralf Deiterding 在AMROC中实现的简化版ExternalControl,不幸的是,也需要定义不少编译选项宏。这东西的Makefile文件我当初花了不少时间才搞个半懂,难道要写类似那样的Makefile文件么?God。
本文地址:http://com.8s8s.com/it/it27269.htm