[ET Trac] [Einstein Toolkit] #1020: Reduce WeylScal4 code size
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Fri Aug 17 13:26:21 CDT 2012
#1020: Reduce WeylScal4 code size
------------------------------------+---------------------------------------
Reporter: eschnett | Owner:
Type: enhancement | Status: review
Priority: major | Milestone:
Component: EinsteinToolkit thorn | Version:
Resolution: | Keywords:
------------------------------------+---------------------------------------
Comment (by eschnett):
No, there is no mechanism to give hints to CSE.
Hmm.
{{{
gamma[ua,lb,lc] -> gu[ua,ud] (PD[g[ld,lb],lc] + PD[lb,ld],lc] -
PD[g[lb,lc],ld])
CSEHint -> {PD[g[ld,lb],lc] + PD[lb,ld],lc] - PD[g[lb,lc],ld]}
}}}
That doesn't look nicer than my solution:
{{{
gammal[ld,lb,lc] -> PD[g[ld,lb],lc] + PD[lb,ld],lc] - PD[g[lb,lc],ld],
gamma[ua,lb,lc] -> gu[ua,ud] gammal[ld,lb,lc]
}}}
Or maybe:
{{{
gamma[ua,lb,lc] -> gu[ua,ud] Save[PD[g[ld,lb],lc] + PD[lb,ld],lc] -
PD[g[lb,lc],ld]]
}}}
where "Save" indicates that the expression should be saved in a temporary
variable.
Or maybe Kranc should do this grouping automatically when it expands
indices for implicit sums.
Maybe it would suffice to factor out those terms in a produce that are
independent of the index that is expanded. That is, a term
{{{
A B[ui] C[li]
}}}
becomes then
{{{
A (B1 C1 + B2 C2 + B3 C3)
}}}
instead of repeating A three times. In long expressions, especially if
multiple indices are expanded in the same product, this could be a big
winner.
Alternatively, and much more difficult, CSE could be looking for
expressions with this pattern:
{{{
A X1 + A X2 + A X3
}}}
and either transform this to
{{{
A (X1 + X2 + X3)
}}}
or at least identify A as a common subexpression. Of course, A would be a
whole expression, and could be "spread out", i.e. wildly intermixed with
the Xs.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1020#comment:5>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list