コード例 #1
0
ファイル: slater.C プロジェクト: junyang4711/Block
double SpinAdapted::det_energy (const Slater& s)
{
  // energy of a single slater determinant, used in truncation                                                                            
  double energy = 0;
  Slater bra;
  Slater ket;

  for (int i = 0; i < s.size (); ++i)
    {
      ket = s;
      bra = s;
      energy += ket.trace (bra.d(i).c(i)) *
        v_1 (i,i);
    }

  // diagonal                                                                                                                             
  for (int i = 0; i < s.size (); ++i)
    for (int j = 0; j < s.size (); ++j)
      {
	ket = s;
	bra = s;
	energy += .5 * ket.trace (bra.d(j).d(i).c(j).c(i))
	  * (v_2 (i,j,j,i) - v_2 (i,j,i,j));
      }

  return energy;
}
コード例 #2
0
ファイル: placement.c プロジェクト: NSSX/etr2
char	*mychar(int *iactuel, int chainei, char **tab, t_var2 *var2)
{
  
	int i;
	int v;

	v = 0;
	i = 0;
	while (var2->tetri < var2->nbt)
	{
		v = backtrack(iactuel, tab, var2);
		if (v == 1)
		{
			var2->tetri++;
			if (var2->tetri < var2->nbt)
			{
				var2->carac++;
				iactuel[var2->tetri] = 0;
				chainei = 0;
			}
		}
		else if (v == 0)
			v_0(var2, iactuel);
		else if (v == 2)
			v_2(var2, iactuel);
	}
	return (var2->chaine);
}
コード例 #3
0
ファイル: Shape.cpp プロジェクト: xiaojhl/Image-2-Shape
float Shape::avgEdgeLength()
{
  float total_length = 0.0;
  for (int i = 0; i < face_list.size() / 3; ++i)
  {
    int v[3] = { face_list[3 * i + 0], face_list[3 * i + 1], face_list[3 * i + 2] };
    Vector3f v_0(vertex_list[3 * v[0] + 0], vertex_list[3 * v[0] + 1], vertex_list[3 * v[0] + 2]);
    Vector3f v_1(vertex_list[3 * v[1] + 0], vertex_list[3 * v[1] + 1], vertex_list[3 * v[1] + 2]);
    Vector3f v_2(vertex_list[3 * v[2] + 0], vertex_list[3 * v[2] + 1], vertex_list[3 * v[2] + 2]);
    total_length += (v_0 - v_1).norm() + (v_1 - v_2).norm() + (v_2 - v_0).norm();
  }
  return total_length / face_list.size();
}