File: pr64019.c

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (70 lines) | stat: -rw-r--r-- 1,735 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } } */
/* { dg-require-effective-target powerpc_vsx_ok } */
/* { dg-options "-O2 -ffast-math -mdejagnu-cpu=power7" } */

#include <math.h>

typedef struct
{
  double x, y, z;
  double q, a, b, mass;
  double vx, vy, vz, vw, dx, dy, dz;
}
ATOM;
int
u_f_nonbon (lambda)
     double lambda;
{
  double r, r0, xt, yt, zt;
  double lcutoff, cutoff, get_f_variable ();
  double rdebye;
  int inbond, inangle, i;
  ATOM *a1, *a2, *bonded[10], *angled[10];
  ATOM *(*use)[];
  int uselist (), nuse, used;
  ATOM *cp, *bp;
  int a_number (), inbuffer;
  double (*buffer)[], xx, yy, zz, k;
  int invector, atomsused, ii, jj, imax;
  double (*vector)[];
  ATOM *(*atms)[];
  double dielectric;
  rdebye = cutoff / 2.;
  dielectric = get_f_variable ("dielec");
  imax = a_number ();
  for (jj = 1; jj < imax; jj++, a1 = bp)
    {
      if ((*use)[used] == a1)
	{
	  used += 1;
	}
      while ((*use)[used] != a1)
	{
	  for (i = 0; i < inbuffer; i++)
	    {
	    }
	  xx = a1->x + lambda * a1->dx;
	  yy = a1->y + lambda * a1->dy;
	  zz = a1->z + lambda * a1->dz;
	  for (i = 0; i < inbuffer; i++)
	    {
	      xt = xx - (*buffer)[3 * i];
	      yt = yy - (*buffer)[3 * i + 1];
	      zt = zz - (*buffer)[3 * i + 2];
	      r = xt * xt + yt * yt + zt * zt;
	      r0 = sqrt (r);
	      xt = xt / r0;
	      zt = zt / r0;
	      k =
		-a1->q * (*atms)[i]->q * dielectric * exp (-r0 / rdebye) *
		(1. / (rdebye * r0) + 1. / r);
	      k += a1->a * (*atms)[i]->a / r / r0 * 6;
	      k -= a1->b * (*atms)[i]->b / r / r / r0 * 12;
	      (*vector)[3 * i] = xt * k;
	      (*vector)[3 * i + 1] = yt * k;
	      (*vector)[3 * i + 2] = zt * k;
	    }
	}
    }
}