71 lines
2.5 KiB
SAS
71 lines
2.5 KiB
SAS
|
|
Preprocessed Scalar
|
|
value(in Scalar vertex)
|
|
{
|
|
return vertex[vertexIdx];
|
|
}
|
|
|
|
Preprocessed Vector
|
|
gradient(in Scalar vertex)
|
|
{
|
|
return (Vector){derx(vertexIdx, vertex),
|
|
dery(vertexIdx, vertex),
|
|
derz(vertexIdx, vertex)};
|
|
}
|
|
|
|
Preprocessed Scalar
|
|
der6x_upwd(in Scalar vertex),
|
|
{
|
|
return (Scalar){(1.0/60.0)*inv_ds* (
|
|
- 20.0* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z]
|
|
+ 15.0*(vertex[vertexIdx.x, vertexIdx.y+1, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-1, vertexIdx.z])
|
|
- 6.0*(vertex[vertexIdx.x, vertexIdx.y+2, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-2, vertexIdx.z])
|
|
+ vertex[vertexIdx.x, vertexIdx.y+3, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-3, vertexIdx.z];
|
|
)}
|
|
}
|
|
|
|
Preprocessed Scalar
|
|
der6x_upwd(in Scalar vertex),
|
|
{
|
|
return (Scalar){(1.0/60.0)*inv_ds* (
|
|
- 20.0* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z]
|
|
+ 15.0*(vertex[vertexIdx.x, vertexIdx.y+1, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-1, vertexIdx.z])
|
|
- 6.0*(vertex[vertexIdx.x, vertexIdx.y+2, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-2, vertexIdx.z])
|
|
+ vertex[vertexIdx.x, vertexIdx.y+3, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-3, vertexIdx.z];
|
|
)}
|
|
}
|
|
|
|
Preprocessed Scalar
|
|
der6x_upwd(in Scalar vertex),
|
|
{
|
|
return (Scalar){(1.0/60.0)*inv_ds* (
|
|
- 20.0* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z]
|
|
+ 15.0*(vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z+1] + vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z-1])
|
|
- 6.0*(vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z+2] + vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z-2])
|
|
+ vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z+3] + vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z-3];
|
|
)}
|
|
}
|
|
|
|
Preprocessed Scalar
|
|
der6_upwd(in Scalar vertex)
|
|
{
|
|
der6 =
|
|
|
|
|
|
|
|
|
|
return der6;
|
|
}
|
|
|
|
Preprocessed Matrix
|
|
hessian(in Scalar vertex)
|
|
{
|
|
Matrix hessian;
|
|
|
|
hessian.row[0] = (Vector){derxx(vertexIdx, vertex), derxy(vertexIdx, vertex), derxz(vertexIdx, vertex)};
|
|
hessian.row[1] = (Vector){hessian.row[0].y, deryy(vertexIdx, vertex), deryz(vertexIdx, vertex)};
|
|
hessian.row[2] = (Vector){hessian.row[0].z, hessian.row[1].z, derzz(vertexIdx, vertex)};
|
|
|
|
return hessian;
|
|
}
|