////// getepot
function f_getepot()
{
var d_object2;
var d_point1,d_point2,d_point3,d_point4,d_point5,d_point6,d_point7,d_point8;
var d_sx,d_sy,d_sz;
var d_dx,d_dy,d_dz,d_dist;
var d_dist0,d_diag;
var d_area = document.getElementById("d_epotarea");
if(p_objects == null)
{
d_area.value = 0;
return 0;
}
var d_upot = 0;
var d_object1 = p_objects;
for(;;)
{//1
d_point1 = d_object1.p_points;
d_point2 = d_point1.d_nextpoint;
d_point3 = d_point2.d_nextpoint;
d_point4 = d_point3.d_nextpoint;
d_point5 = d_point4.d_nextpoint;
d_point6 = d_point5.d_nextpoint;
d_sx = d_point1.d_sx;
d_sy = d_point1.d_sy;
d_sz = d_point1.d_sz;
if(d_object1.d_type == 6)
{
d_dist0 = d_octsize / Math.sqrt(2);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point2,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point3,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point4,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point5,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point6,d_octsize);
d_sx = d_point6.d_sx;
d_sy = d_point6.d_sy;
d_sz = d_point6.d_sz;
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point2,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point3,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point4,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point5,d_dist0);
d_sx = d_point2.d_sx;
d_sy = d_point2.d_sy;
d_sz = d_point2.d_sz;
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point3,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point5,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point4,d_octsize);
d_sx = d_point4.d_sx;
d_sy = d_point4.d_sy;
d_sz = d_point4.d_sz;
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point3,d_dist0);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point5,d_dist0);
d_upot += f_addownupot(d_point3.d_sx,d_point3.d_sy,d_point3.d_sz,d_point5,d_octsize);
}
else
{
d_point7 = d_point6.d_nextpoint;
d_point8 = d_point7.d_nextpoint;
d_diag = d_cubesize * Math.sqrt(3);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point2,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point5,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point7,d_diag);
d_sx = d_point2.d_sx;
d_sy = d_point2.d_sy;
d_sz = d_point2.d_sz;
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point3,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point6,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point8,d_diag);
d_sx = d_point3.d_sx;
d_sy = d_point3.d_sy;
d_sz = d_point3.d_sz;
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point4,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point7,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point5,d_diag);
d_sx = d_point4.d_sx;
d_sy = d_point4.d_sy;
d_sz = d_point4.d_sz;
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point1,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point8,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point6,d_diag);
d_sx = d_point5.d_sx;
d_sy = d_point5.d_sy;
d_sz = d_point5.d_sz;
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point6,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point8,d_cubesize);
d_sx = d_point7.d_sx;
d_sy = d_point7.d_sy;
d_sz = d_point7.d_sz;
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point6,d_cubesize);
d_upot += f_addownupot(d_sx,d_sy,d_sz,d_point8,d_cubesize);
}
d_object1 = d_object1.d_nextobject;
if(d_object1 == null)
break;
}//1
d_object1 = p_objects;
for(;;)
{//1
for(d_object2 = d_object1.d_nextobject;d_object2 != null;d_object2 = d_object2.d_nextobject)
{//2
d_point1 = d_object1.p_points;
for(;;)
{//3
d_sx = d_point1.d_sx;
d_sy = d_point1.d_sy;
d_sz = d_point1.d_sz;
d_point2 = d_object2.p_points;
for(;;)
{
d_dx = d_point2.d_sx - d_sx;
d_dy = d_point2.d_sy - d_sy;
d_dz = d_point2.d_sz - d_sz;
d_dist = Math.sqrt((d_dx * d_dx) + ((d_dy * d_dy) + (d_dz * d_dz)));
if(d_dist < d_minpos) d_dist = d_minpos;
d_upot += f_outupot(d_dist);
d_point2 = d_point2.d_nextpoint;
if(d_point2 == null)
break;
}
d_point1 = d_point1.d_nextpoint;
if(d_point1 == null)
break;
}//3
}//2
d_object1 = d_object1.d_nextobject;
if(d_object1 == null)
break;
}//1
if(Number.isFinite(d_upot) != 0)
{
d_area.value = d_upot;
return d_upot;
}
d_area.value = "undefined";
return 0;
}
////// getenergy
function f_getenergy()
{
var d_ukin = f_getekin();
var d_upot = f_getepot();
var d_area = document.getElementById("d_energyarea");
d_area.value = d_ukin + d_upot;
return;
}