The best input is OUTPUT.

2016-03-21
KMCLib中的LatticeMap

KMCLib中的LatticeMap

这里的成员数据全部protected

成员数据

1
2
3
4
5
int n_basis_;                   // 基点个数

std::vector<int> repetitions_; // site各个方向上重复次数

std::vector<bool> periodic_; // 周期性边界条件

这个类的成员数据相对比较少,就三个,就可以描述整个三维网格的所有性质了。
其中后两个好理解,但是第一个我看了许久代码都不知道是个啥东西,还好曹老师给的指点,终于弄明白了所谓基点数目和基点到底是什么东西。

Read More

2016-03-21
KMCLib中的CustomRateProcess

KMCLib中的CustomRateProcess

此类是Process的派生类,所以在Process类中的成员变量为protected,而且很多成员函数都为虚函数。

成员数据

1
2
3
4
5
// 由于不同site上面的速率不同,因此此vector存放对应sites_的速率
std::vector<double> site_rates_;

// 递增的速率列表
std::vector<double> incremental_rate_table_;
Read More

2016-03-20
KMCLib中的Process

成员数据

此类的成员数据均为protected

  • int process_number_;
    该过程ID号;

  • int range_;
    还未完全弄清楚其作用,是和坐标有关的一个范围,后续添加。

  • double rate_;
    这没什么好说的,反应速率;

  • double cutoff
    和坐标距离相关,数值上应该等于process涉及到的点到中心
    也就是process中第一个点)的最大距离,
    尚未弄清求作用;

  • std::vector<int> sites_;
    在整个网格中能和此反应匹配上的位点的向量;

  • std::vector<MinimalMatchListEntry> minimal_match_list_;
    用于存储每个位点信息的数据结构;

  • std::vector<int> affected_indices_;
    查看process前后每个位点类型是否相同
    如果不同则将0追加到其末尾
    (2016-03-31更新)
    这个变量主要用于更新process发生后确定发生process的index周围有哪些位置受影响,
    所谓受影响,也就是指由于该点由于参与了反应,元素的类型会发生变化,他的match_list也就相应的发生变化,也导致原本能够匹配的process不再能够在该点匹配或者原本不能匹配的process可以在该点匹配了。这个信息主要是用于Matcher类中。

Read More

2016-03-20
Python开发者沙龙之后的小感想

Python开发者沙龙之后的小感想

昨天大老远跑到杨浦区去参加Python开发者沙龙,主要是听听牛人对Python的认识和见解,也想和喜欢python的朋友们进行线下的交流,同时也想知道自己大概是处在什么样的水平上。
结果一早我就背着我那有厚有重的T430和一堆线和移动电源出发了,大概坐地铁要一个小时才能到杨浦,我就带着我现在的宝贝《Effective C++》在车上看(最后事实证明其实我只需要带着本书就够了,电脑啥的压根我就没打开。
早到了一个小时,我还是喝了杯咖啡接着看我的宝贝。
。。。好烦,不想再记流水账了,直接进入主题吧

一般人不知道的python秘密

这个是Coding CTO 孙宇聪讲的报告,主要讲解了他在Google使用python的一些原因和经历,对python中的一些优缺点进行了评价,同时对python内置的基本数据类型进行了简单的讲解其中最重要的还是python中避不开的话题GIL(全局解释器锁)。

Read More

2016-03-18
C++类型转换运算符

C++类型转换运算符

C风格(C-Style)强制转型

1
2
3
4
(T) expression  // 将expression类型强制转换成T

// 函数风格
T(expression) // cast expression to be of type T

这两种形式之间没有本质上的不同,纯粹就是形式的区别。

C++的四种强制类型转换

在C++创始人Bjarne Stroustrup看来,C与阿燕的类型转换太过松散,因此采取了措施,就是更严格地限制允许的类型转换,并添加4个类型转换运算符,是转换过程更规范。

  • dynamic_cast
  • const_cast
  • static_cast
  • reinterpret_cast

这样可以根据转换的目的选择类型转换运算符,而不是通用的类型转换,让编译器能够检查程序的行为是否与设计者的想法吻合。

Read More

2016-03-17
开始看KMCLib源码


今天开始看KMCLib的源码,预计一周之内搞定。
同时学习下人家C++的编码风格,我觉得人家代码写的很优美啊。
不多说了,开干吧~
Read More