Wenn die zwei Dimensionen gleich gross und zur Compilezeit bekannt konstant sind, geht einfach
double initialE(int state[L+1][L+1],double J,double h) //calculation of energy for random state
{
int first=0,second=0;
double E;
for (int k=0;k<L;k++){
state[k][L]=state[k][0];
state[L][k]=state[0][k];
}
for (int j=0;j<L;j++){
for (int i=0;i<(L-1);i++)
{
first=first+state[i][j]*state[i+1][j];//Interaction term in x direction
first=first+state[i][j]*state[i][j+1];//Interaction term in y direction
second=second+state[i][j]; // Magnetization term
}
}
E=J*first+h*second; //total E
return E;
}
...
int state[L+1][L+1]={{1,2,3,4},{4,5,6,7},{8,8,8,8},{9,9,9,9}};
Econf=initialE(state,J,h);