Upwinding terms now compile.
Not tested yet.
This commit is contained in:
@@ -14,36 +14,39 @@ gradient(in Scalar vertex)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Preprocessed Scalar
|
Preprocessed Scalar
|
||||||
der6x_upwd(in Scalar vertex),
|
der6x_upwd(in Scalar vertex)
|
||||||
{
|
{
|
||||||
return (Scalar){(1.0/60.0)*inv_ds* (
|
Scalar inv_ds = DCONST_REAL(AC_inv_dsx);
|
||||||
- 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])
|
return (Scalar){ Scalar(1.0/60.0)*inv_ds* (
|
||||||
- 6.0*(vertex[vertexIdx.x, vertexIdx.y+2, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-2, vertexIdx.z])
|
- Scalar(20.0)* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z]
|
||||||
+ vertex[vertexIdx.x, vertexIdx.y+3, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-3, vertexIdx.z];
|
+ Scalar(15.0)*(vertex[vertexIdx.x, vertexIdx.y+1, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-1, vertexIdx.z])
|
||||||
)}
|
- Scalar( 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
|
Preprocessed Scalar
|
||||||
der6y_upwd(in Scalar vertex),
|
der6y_upwd(in Scalar vertex)
|
||||||
{
|
{
|
||||||
return (Scalar){(1.0/60.0)*inv_ds* (
|
Scalar inv_ds = DCONST_REAL(AC_inv_dsy);
|
||||||
- 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])
|
return (Scalar){ Scalar(1.0/60.0)*inv_ds* (
|
||||||
- 6.0*(vertex[vertexIdx.x, vertexIdx.y+2, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-2, vertexIdx.z])
|
-Scalar( 20.0)* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z]
|
||||||
+ vertex[vertexIdx.x, vertexIdx.y+3, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-3, vertexIdx.z];
|
+Scalar( 15.0)*(vertex[vertexIdx.x, vertexIdx.y+1, vertexIdx.z] + vertex[vertexIdx.x, vertexIdx.y-1, vertexIdx.z])
|
||||||
)}
|
-Scalar( 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
|
Preprocessed Scalar
|
||||||
der6z_upwd(in Scalar vertex),
|
der6z_upwd(in Scalar vertex)
|
||||||
{
|
{
|
||||||
return (Scalar){(1.0/60.0)*inv_ds* (
|
Scalar inv_ds = DCONST_REAL(AC_inv_dsz);
|
||||||
- 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])
|
return (Scalar){ Scalar(1.0/60.0)*inv_ds* (
|
||||||
- 6.0*(vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z+2] + vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z-2])
|
-Scalar( 20.0)* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z]
|
||||||
+ vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z+3] + vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z-3];
|
+Scalar( 15.0)*(vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z+1] + vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z-1])
|
||||||
)}
|
-Scalar( 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 Matrix
|
Preprocessed Matrix
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
#define LTEMPERATURE (0)
|
#define LTEMPERATURE (0)
|
||||||
#define LGRAVITY (0)
|
#define LGRAVITY (0)
|
||||||
#define LFORCING (1)
|
#define LFORCING (1)
|
||||||
#define LUPWD (0)
|
#define LUPWD (1)
|
||||||
|
|
||||||
|
|
||||||
// Declare uniforms (i.e. device constants)
|
// Declare uniforms (i.e. device constants)
|
||||||
@@ -28,13 +28,6 @@ uniform int ny;
|
|||||||
uniform int nz;
|
uniform int nz;
|
||||||
|
|
||||||
|
|
||||||
Scalar
|
|
||||||
upwd_der6(in Vector uu, in Scalar lnrho)
|
|
||||||
{
|
|
||||||
return (Scalar){uu.x*der6x_upwd(lnrho) + uu.y*der6y_upwd(lnrho) + uu.z*der6z_upwd(lnrho)}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Vector
|
Vector
|
||||||
value(in Vector uu)
|
value(in Vector uu)
|
||||||
@@ -42,6 +35,17 @@ value(in Vector uu)
|
|||||||
return (Vector){value(uu.x), value(uu.y), value(uu.z)};
|
return (Vector){value(uu.x), value(uu.y), value(uu.z)};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LUPWD
|
||||||
|
Scalar
|
||||||
|
upwd_der6(in Vector uu, in Scalar lnrho)
|
||||||
|
{
|
||||||
|
Scalar uux = value(uu).x;
|
||||||
|
Scalar uuy = value(uu).y;
|
||||||
|
Scalar uuz = value(uu).z;
|
||||||
|
return (Scalar){uux*der6x_upwd(lnrho) + uuy*der6y_upwd(lnrho) + uuz*der6z_upwd(lnrho)};
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
Matrix
|
Matrix
|
||||||
gradients(in Vector uu)
|
gradients(in Vector uu)
|
||||||
{
|
{
|
||||||
@@ -54,7 +58,7 @@ continuity(in Vector uu, in Scalar lnrho) {
|
|||||||
#if LUPWD
|
#if LUPWD
|
||||||
//This is a corrective hyperdiffusion term for upwinding.
|
//This is a corrective hyperdiffusion term for upwinding.
|
||||||
+ upwd_der6(uu, lnrho)
|
+ upwd_der6(uu, lnrho)
|
||||||
#ENDIF
|
#endif
|
||||||
- divergence(uu);
|
- divergence(uu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user