219 |
[field(k, d, dd), tensor[d]] --> Ty.T_Tensor dd |
[field(k, d, dd), tensor[d]] --> Ty.T_Tensor dd |
220 |
end)) |
end)) |
221 |
|
|
222 |
|
(* differentiation of scalar fields *) |
223 |
val op_D = polyVar (N.op_D, all([DK, NK], |
val op_D = polyVar (N.op_D, all([DK, NK], |
224 |
fn [Ty.DIFF k, Ty.DIM d] => let |
fn [Ty.DIFF k, Ty.DIM d] => let |
225 |
val k0 = Ty.DiffVar(k, 0) |
val k0 = Ty.DiffVar(k, 0) |
229 |
[field(k0, d, Ty.Shape[])] |
[field(k0, d, Ty.Shape[])] |
230 |
--> field(km1, d, Ty.Shape[d]) |
--> field(km1, d, Ty.Shape[d]) |
231 |
end)) |
end)) |
232 |
|
(* differetiation of higher-order tensor fields *) |
233 |
val op_Dotimes = polyVar (N.op_Dotimes, all([DK, NK, SK, NK], |
val op_Dotimes = polyVar (N.op_Dotimes, all([DK, NK, SK, NK], |
234 |
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd, Ty.DIM d'] => let |
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd, Ty.DIM d'] => let |
235 |
val k0 = Ty.DiffVar(k, 0) |
val k0 = Ty.DiffVar(k, 0) |