我正在用c ++编写代码以构建晶格,然后计算点之间的能量以运行某些MD模拟。
我在一个连续的主函数中执行此操作,但想拆分为子例程,以便我可以更改单元格的数量,仅构建该单元格的晶格,然后仅计算所需晶格数量即可计算所需能量b / w职位。
我构建的晶格使用3个for循环将x,y和z位置写入其各自的向量。我需要将三个向量从“格”函数传递到“能量”函数,并确定我会使用这三个向量的结构来实现。
在尝试使新结构正常工作时,我已经注释掉了大部分代码,这是代码的一部分。
#include <iostream>
#include <fstream>
#include <string>
#include <stdio>
#include <math>
#include <vector>
using namespace std;
//use structure so the x, y, and z vectors can be passed as a return from the lattice function
struct Coordinates{
vector<double> xValues();
vector<double> yValues();
vector<double> zValues(); };
//First Function, of type Coordinates
Coordinates makeLattice(int xCell,int yCell,int zCell)
{
// Initialize a Lattice
Coordinates xyz; //creating an object of type:coordinates 'xyz'
int nCell = xCell*yCell*zCell; //number of cells in system
int nAtoms = 4*nCell;
cout<<"number of cells= "<<nCell<<" and number of atoms = "
<<nAtoms<<"\n";
xyz.xValues.resize(nAtoms);
xyz.yValues.resize(nAtoms);
xyz.zValues.resize(nAtoms);
//a whole bunch of commented out code
return xyz;
}
编译时出现错误,因为“ xyz.coordinates :: xValues没有类类型”,而其他两个向量也有相同的错误。有人可以告诉我使用结构时我缺少什么吗?