这两天由于一直在学习CMake相关的东西,没有把看的代码及时总结。特地现在补上。
Interaction类可以看作是process相应的集合,他在全局角度操作process。
成员数据
std::vector<Process> processes_
通过构造函数的参数传入,是所有能在lattice上面发生的process对象的集合。
std::vector<Process*> process_pointers_
存放指向processes_中process对象的指针,后面的函数都是在操作这个指针vector。
std::vector<std::pair<double,int> > probability_table_
这里叫做概率列表,其实里面并没有放于概率的数据,其中的pair的第一个entry放的是incremental rate,第二个entry放的是对应这个process能在当前lattice上面发生的位点的总数(也就是他的nSite数)。
bool implicit_wildcards_
是否使用通配符
bool use_custom_rates_
是否使用自定义速率
其他的几个成员数据目前还没有看到具体怎么用,先挖个坑,后面填。
Read More
这两天学习一下CMake的一点语法,为了以后能使用CMake跨平台构建项目。但是在为target添加共享库的时候,即使我在CMakeLists.txt中使用了LINK_DIRECTORIES()
和TARGET_LINK_LIBRARIES()
,
1 2 3 4 5 6 7
| ADD_EXECUTABLE(hellomain main.c) SET(EXECUTABLE_OUTPUT_PATH ${HELLOMAIN_BINARY_DIR}/bin)
INCLUDE_DIRECTORIES(BEFORE /mnt/hgfs/CentOS_code/cmake_practice/t4/zjshao/include/hello) LINK_DIRECTORIES(/mnt/hgfs/CentOS_code/cmake_practice/t4/zjshao/lib)
TARGET_LINK_LIBRARIES(hellomain libhello.so)
|
但是在make的时候还是很出现了
1
| /usr/bin/ld: cannot find -lhello
|
Read More
在github上面向别人的项目代码pull request的时候遇到了一个蛋疼的问题,问题都在一个字符上面就是^M
,我的代码虽然只修改了几行代码,但是使用git diff
的时候发现整个文件全部修改了。
原因就是我修改的文件在每一行末尾都新增了一个^M
字符,这样就导致每一行都和以前不同diff的时候自然就全部不同了,这样就非常的蛋疼,向别人项目中pull request的时候一整片红色和一整片绿色,别人包括我自己都不知道我到底是修改的哪一部分,感觉像是在捣乱的。。。像这样的pull request人家才不会给我merge呢。
真是太不好意思了,诶…效果就是这蛋疼的下图:
Read More
这个类由于在之前都有提及到,而且已经针对其中重要的成员函数进行了分析,在这里就不多扯了。
总之这个类是独立于晶格LatticeMap类的类型类,我还剩听佩服作者这样抽象的,这样如果后面我想加入多位点的话,也可以独立于晶格之外描述多位点的类,这样实现起来耦合量可以尽量减小。
其实这里我一直有个疑问,不知道看完全部代码的时候能不能找到答案,就是在performProcess()
函数中:
1 2 3
| void Configuration::performProcess(Process & process, const int site_index, const LatticeMap & lattice_map)
|
根本就没有用到这个变量,为啥要传他进来??
Read More
move来源于process并作用于configuration。
Process中的move相关
Process中与move相关的变量:
std::vector<int> move_origins
说明在process中那些元素是在process发生时有移动的,(0, 1)的话就是指第一个(中心)和第二个元素发生了移动。
std::vector<Coordinate> move_vectors
对应move_origin的元素移动的向量。
std::vector< std::pair<int,int> > id_moves_
用于描述元素移动前后位置的变化,通过元素在process中的minimal_match_list中的索引号来表示,例如
id_moves_[0]中存放着两个值 (1, 4),则就说明在minimal_match_list中的第1号元素(也就是第二个)通过process的作用之后会移动到第4号位置上。
Read More
match_list是由MinimalMatchList类对象组成的vector。
MinimalMatchListEntry类
这其实是一个结构,用于存储每个位点相关的信息,或者说每个minimal_match_list中的元素。
bool has_move_coordinate;
用于标记这个元素是否移动,
通常在创建process对象时候提供了move_origin和move_vector时会将此值设为true;
Coordinate move_coordinate;
这个元素如果有移动,他的移动向量,
通常在创建process对象时候提供了move_origin和move_vector时会将此值设为move_vector中的值。
int match_type;
主要用于process中,存储process之前的元素类型int
int update_type;
主要用于process中,存储process之后的元素类型int
Read More